From b2fb5b6782d5efd8e9b12933918a19fdba2ffbab Mon Sep 17 00:00:00 2001 From: Jordan Date: Thu, 18 Apr 2024 00:43:49 -0400 Subject: [PATCH] feat: rsmod wasm (#1) Co-authored-by: Pazaz --- README.md | 10 +- asconfig.json | 22 + jest.config.js | 13 - package-lock.json | 4933 +- package.json | 31 +- src/index.ts | 559 +- src/rsmod.wat | 58173 ++++++++++++++++ src/rsmod/Line.ts | 30 +- src/rsmod/LinePathFinder.ts | 183 +- src/rsmod/LineValidator.ts | 137 +- src/rsmod/LocAngle.ts | 6 + src/rsmod/LocLayer.ts | 6 + src/rsmod/LocShape.ts | 25 + src/rsmod/NaivePathFinder.ts | 124 +- src/rsmod/PathFinder.ts | 458 +- src/rsmod/RayCast.ts | 16 - src/rsmod/Route.ts | 19 - src/rsmod/RouteCoordinates.ts | 28 - src/rsmod/StepValidator.ts | 352 +- src/rsmod/collision/CollisionFlagMap.ts | 93 +- src/rsmod/collision/CollisionStrategies.ts | 49 +- src/rsmod/collision/CollisionStrategy.ts | 12 +- src/rsmod/flag/BlockAccessFlag.ts | 9 +- src/rsmod/flag/CollisionFlag.ts | 134 +- src/rsmod/flag/DirectionFlag.ts | 17 +- src/rsmod/reach/ReachStrategy.ts | 398 +- src/rsmod/reach/RectangleBoundaryUtils.ts | 72 +- src/rsmod/utils/RotationUtils.ts | 11 +- src/tsconfig.json | 6 + test/rsmod/LinePathFinder.test.ts | 224 - test/rsmod/LineValidator.test.ts | 210 - test/rsmod/NaivePathFinder.test.ts | 46 - test/rsmod/PathFinder.test.ts | 143 - test/rsmod/StepValidator.test.ts | 268 - test/rsmod/collision/CollisionFlagMap.test.ts | 93 - test/rsmod/reach/ReachStrategyTest.test.ts | 200 - .../reach/RectangleBoundaryUtils.test.ts | 213 - .../reach/RectangularReachStrategy.test.ts | 465 - test/rsmod/utils/RotationUtils.test.ts | 54 - tsconfig.json | 26 +- 40 files changed, 60765 insertions(+), 7103 deletions(-) create mode 100644 asconfig.json delete mode 100644 jest.config.js create mode 100644 src/rsmod.wat create mode 100644 src/rsmod/LocAngle.ts create mode 100644 src/rsmod/LocLayer.ts create mode 100644 src/rsmod/LocShape.ts delete mode 100644 src/rsmod/RayCast.ts delete mode 100644 src/rsmod/Route.ts delete mode 100644 src/rsmod/RouteCoordinates.ts create mode 100644 src/tsconfig.json delete mode 100644 test/rsmod/LinePathFinder.test.ts delete mode 100644 test/rsmod/LineValidator.test.ts delete mode 100644 test/rsmod/NaivePathFinder.test.ts delete mode 100644 test/rsmod/PathFinder.test.ts delete mode 100644 test/rsmod/StepValidator.test.ts delete mode 100644 test/rsmod/collision/CollisionFlagMap.test.ts delete mode 100644 test/rsmod/reach/ReachStrategyTest.test.ts delete mode 100644 test/rsmod/reach/RectangleBoundaryUtils.test.ts delete mode 100644 test/rsmod/reach/RectangularReachStrategy.test.ts delete mode 100644 test/rsmod/utils/RotationUtils.test.ts diff --git a/README.md b/README.md index 33311e8..e53936c 100644 --- a/README.md +++ b/README.md @@ -14,12 +14,20 @@ npm i @2004scape/rsmod-pathfinder https://github.com/wclr/yalc ```shell -npm run build # Builds the js bundle and type definitions. +npm run asbuild:debug # Builds the wasm bundle. yalc publish --push # Publishes to the local repo and pushes to all projects it has been added to. yalc add @2004scape/rsmod-pathfinder # Adds the published library to your project. npm publish --access public # Publishes the version of this to npm. ``` +## Publishing (Release) +```shell +npm run asbuild:release # Builds the wasm bundle. +# update package.json version +# commit and push to main +npm publish --access public # Publishes the version of this to npm. +``` + ## First Time Cloning (Local Development) ```shell npm run prepare diff --git a/asconfig.json b/asconfig.json new file mode 100644 index 0000000..efec79c --- /dev/null +++ b/asconfig.json @@ -0,0 +1,22 @@ +{ + "options": { + "bindings": "esm", + "outFile": "dist/rsmod-pathfinder.wasm", + "textFile": "src/rsmod.wat" + }, + "targets": { + "debug": { + "sourceMap": true, + "debug": true + }, + "release": { + "sourceMap": false, + "optimizeLevel": 3, + "shrinkLevel": 0, + "converge": true, + "noAssert": true, + "optimize": true, + "runtime": "minimal" + } + } +} \ No newline at end of file diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 0a27839..0000000 --- a/jest.config.js +++ /dev/null @@ -1,13 +0,0 @@ -/** @type {import('ts-jest').JestConfigWithTsJest} */ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - transform: { - '^.+\\.[tj]sx?$': [ - 'ts-jest', - { - useESM: true - } - ] - } -}; diff --git a/package-lock.json b/package-lock.json index f264bcd..3737f70 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,23 +1,21 @@ { "name": "@2004scape/rsmod-pathfinder", - "version": "4.2.3", + "version": "4.2.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@2004scape/rsmod-pathfinder", - "version": "4.2.3", + "version": "4.2.7", "license": "ISC", "devDependencies": { - "@types/jest": "^29.5.11", - "@typescript-eslint/eslint-plugin": "^6.18.0", - "@typescript-eslint/parser": "^6.18.0", - "eslint": "^8.56.0", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", + "assemblyscript": "^0.27.27", + "eslint": "^8.57.0", "husky": "^8.0.3", - "jest": "^29.7.0", - "prettier": "^3.1.1", - "ts-jest": "^29.1.1", - "typescript": "^5.3.3" + "prettier": "^3.2.5", + "typescript": "^5.4.5" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -29,725 +27,631 @@ "node": ">=0.10.0" } }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, "engines": { - "node": ">=4" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=4" + "node": "*" } }, - "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@babel/core": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", - "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.7", - "@babel/parser": "^7.23.6", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "node": ">=10.10.0" } }, - "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=6.9.0" + "node": "*" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, "engines": { - "node": ">=6.9.0" + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=6.9.0" + "node": ">= 8" } }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, "engines": { - "node": ">=6.9.0" + "node": ">= 8" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=6.9.0" + "node": ">= 8" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=6.9.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" }, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "node_modules/@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, "engines": { - "node": ">=6.9.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", "dev": true, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.8", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz", - "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6" + "node": "^16.0.0 || >=18.0.0" }, - "engines": { - "node": ">=6.9.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">=6.9.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" }, "engines": { - "node": ">=4" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { - "parser": "bin/babel-parser.js" + "acorn": "bin/acorn" }, "engines": { - "node": ">=6.0.0" + "node": ">=0.4.0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=8" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "engines": { + "node": ">=8" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=8" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "node_modules/assemblyscript": { + "version": "0.27.27", + "resolved": "https://registry.npmjs.org/assemblyscript/-/assemblyscript-0.27.27.tgz", + "integrity": "sha512-z4ijXsjjk3uespEeCWpO1K2GQySc6bn+LL5dL0tsC2VXNYKFnKDmAh3wefcKazxXHFVhYlxqNfyv96ajaQyINQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "binaryen": "116.0.0-nightly.20240114", + "long": "^5.2.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "bin": { + "asc": "bin/asc.js", + "asinit": "bin/asinit.js" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "engines": { + "node": ">=16", + "npm": ">=7" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/assemblyscript" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "node_modules/binaryen": { + "version": "116.0.0-nightly.20240114", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-116.0.0-nightly.20240114.tgz", + "integrity": "sha512-0GZrojJnuhoe+hiwji7QFaL3tBlJoA+KFUN7ouYSDGZLSo9CKM8swQX8n/UcbR0d1VuZKU+nhogNzv423JEu5A==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "bin": { + "wasm-opt": "bin/wasm-opt", + "wasm2js": "bin/wasm2js" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "balanced-match": "^1.0.0" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "fill-range": "^7.0.1" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=8" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=6" } }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", - "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", - "debug": "^4.3.1", - "globals": "^11.1.0" + "node": ">=10" }, - "engines": { - "node": ">=6.9.0" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@babel/types": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", - "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6.9.0" + "node": ">=7.0.0" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">= 8" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "ms": "2.1.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" + "path-type": "^4.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "dependencies": { - "argparse": "^2.0.1" + "esutils": "^2.0.2" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "engines": { "node": ">=10" @@ -756,3042 +660,523 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", - "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", - "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.11", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz", - "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==", - "dev": true, - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "20.11.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.5.tgz", - "integrity": "sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/semver": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", - "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", - "dev": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.0.tgz", - "integrity": "sha512-DUCUkQNklCQYnrBSSikjVChdc84/vMPDQSgJTHBZ64G9bA9w0Crc0rd2diujKbTdp6w2J47qkeHQLoi0rpLCdg==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.19.0", - "@typescript-eslint/type-utils": "6.19.0", - "@typescript-eslint/utils": "6.19.0", - "@typescript-eslint/visitor-keys": "6.19.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/@typescript-eslint/parser": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.19.0.tgz", - "integrity": "sha512-1DyBLG5SH7PYCd00QlroiW60YJ4rWMuUGa/JBV0iZuqi4l4IK3twKPq5ZkEebmGqRjXWVgsUzfd3+nZveewgow==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "6.19.0", - "@typescript-eslint/types": "6.19.0", - "@typescript-eslint/typescript-estree": "6.19.0", - "@typescript-eslint/visitor-keys": "6.19.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.0.tgz", - "integrity": "sha512-dO1XMhV2ehBI6QN8Ufi7I10wmUovmLU0Oru3n5LVlM2JuzB4M+dVphCPLkVpKvGij2j/pHBWuJ9piuXx+BhzxQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.19.0", - "@typescript-eslint/visitor-keys": "6.19.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.19.0.tgz", - "integrity": "sha512-mcvS6WSWbjiSxKCwBcXtOM5pRkPQ6kcDds/juxcy/727IQr3xMEcwr/YLHW2A2+Fp5ql6khjbKBzOyjuPqGi/w==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "6.19.0", - "@typescript-eslint/utils": "6.19.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.0.tgz", - "integrity": "sha512-lFviGV/vYhOy3m8BJ/nAKoAyNhInTdXpftonhWle66XHAtT1ouBlkjL496b5H5hb8dWXHwtypTqgtb/DEa+j5A==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.0.tgz", - "integrity": "sha512-o/zefXIbbLBZ8YJ51NlkSAt2BamrK6XOmuxSR3hynMIzzyMY33KuJ9vuMdFSXW+H0tVvdF9qBPTHA91HDb4BIQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.19.0", - "@typescript-eslint/visitor-keys": "6.19.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/@typescript-eslint/utils": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.0.tgz", - "integrity": "sha512-QR41YXySiuN++/dC9UArYOg4X86OAYP83OWTewpVx5ct1IZhjjgTLocj7QNxGhWoTqknsgpl7L+hGygCO+sdYw==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.19.0", - "@typescript-eslint/types": "6.19.0", - "@typescript-eslint/typescript-estree": "6.19.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.0.tgz", - "integrity": "sha512-hZaUCORLgubBvtGpp1JEFEazcuEdfxta9j4iUwdSAr7mEsYYAp3EAUyCZk3VEEqGj6W+AV4uWyrDGtrlawAsgQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.19.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001579", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz", - "integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", - "dev": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.640", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.640.tgz", - "integrity": "sha512-z/6oZ/Muqk4BaE7P69bXhUhpJbUM9ZJeka43ZwxsDshKtePns4mhBlh8bU5+yrnOnz3fhG82XLzGUXazOmsWnA==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", - "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", - "dev": true, - "bin": { - "husky": "lib/bin.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" - } - }, - "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", - "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } + "node": "*" } }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { - "detect-newline": "^3.0.0" + "estraverse": "^5.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10" } }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" + "estraverse": "^5.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4.0" } }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4.0" } }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "node": ">=8.6.0" } }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "is-glob": "^4.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 6" } }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "reusify": "^1.0.4" } }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "flat-cache": "^3.0.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, - "peerDependencies": { - "jest-resolve": "*" + "engines": { + "node": ">=10" }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" + "is-glob": "^4.0.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10.13.0" } }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "*" } }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" + "type-fest": "^0.20.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-snapshot/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { - "semver": "bin/semver.js" + "husky": "lib/bin.js" }, "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" } }, - "node_modules/jest-snapshot/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" + "is-extglob": "^2.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.12.0" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=8" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -3804,18 +1189,6 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -3825,24 +1198,6 @@ "json-buffer": "3.0.1" } }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -3856,61 +1211,34 @@ "node": ">= 0.8.0" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "dev": true }, - "node_modules/make-dir/node_modules/lru-cache": { + "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", @@ -3922,48 +1250,6 @@ "node": ">=10" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -3986,25 +1272,19 @@ "node": ">=8.6" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/ms": { @@ -4019,39 +1299,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -4061,21 +1308,6 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -4109,41 +1341,20 @@ } }, "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -4156,24 +1367,6 @@ "node": ">=6" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -4201,12 +1394,6 @@ "node": ">=8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -4216,12 +1403,6 @@ "node": ">=8" } }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -4234,88 +1415,28 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.4.tgz", - "integrity": "sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 0.8.0" } }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "node_modules/prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "bin": { + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">= 6" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/punycode": { @@ -4327,22 +1448,6 @@ "node": ">=6" } }, - "node_modules/pure-rand": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", - "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -4363,66 +1468,13 @@ } ] }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "engines": { - "node": ">=10" + "node": ">=4" } }, "node_modules/reusify": { @@ -4474,12 +1526,18 @@ } }, "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/shebang-command": { @@ -4503,18 +1561,6 @@ "node": ">=8" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -4524,70 +1570,6 @@ "node": ">=8" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4600,24 +1582,6 @@ "node": ">=8" } }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -4642,53 +1606,12 @@ "node": ">=8" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -4702,93 +1625,17 @@ } }, "node_modules/ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, "engines": { - "node": ">=16.13.0" + "node": ">=16" }, "peerDependencies": { "typescript": ">=4.2.0" } }, - "node_modules/ts-jest": { - "version": "29.1.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", - "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", - "dev": true, - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "^7.5.3", - "yargs-parser": "^21.0.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-jest/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-jest/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -4801,19 +1648,10 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "engines": { "node": ">=10" @@ -4823,9 +1661,9 @@ } }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -4835,42 +1673,6 @@ "node": ">=14.17" } }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -4880,29 +1682,6 @@ "punycode": "^2.1.0" } }, - "node_modules/v8-to-istanbul": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", - "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4918,84 +1697,18 @@ "node": ">= 8" } }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 73eda71..daa6b33 100644 --- a/package.json +++ b/package.json @@ -1,19 +1,20 @@ { "name": "@2004scape/rsmod-pathfinder", - "version": "4.2.6", + "version": "4.2.7", "description": "A breadth-first search path finder.", - "main": "dist/index.js", - "types": "dist/index.d.ts", + "main": "dist/rsmod-pathfinder.js", + "types": "dist/rsmod-pathfinder.d.ts", "files": [ "/dist" ], + "type": "module", "scripts": { - "test": "jest", - "build": "tsc", "prepare": "husky install", "lint": "eslint . --ext .ts", "lint:fix": "eslint . --ext .ts --fix", - "format": "prettier src/**/*.ts --write" + "format": "prettier src/**/*.ts --write", + "asbuild:debug": "asc src/index.ts --target debug", + "asbuild:release": "asc src/index.ts --target release" }, "repository": { "type": "git", @@ -23,7 +24,9 @@ "rsmod", "pathfinder", "bfs", - "2004scape" + "2004scape", + "assemblyscript", + "webassembly" ], "author": "2004scape", "license": "ISC", @@ -44,14 +47,12 @@ ] }, "devDependencies": { - "@types/jest": "^29.5.11", - "@typescript-eslint/eslint-plugin": "^6.18.0", - "@typescript-eslint/parser": "^6.18.0", - "eslint": "^8.56.0", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", + "assemblyscript": "^0.27.27", + "eslint": "^8.57.0", "husky": "^8.0.3", - "jest": "^29.7.0", - "prettier": "^3.1.1", - "ts-jest": "^29.1.1", - "typescript": "^5.3.3" + "prettier": "^3.2.5", + "typescript": "^5.4.5" } } diff --git a/src/index.ts b/src/index.ts index 536a8bc..05172c6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,18 +1,553 @@ -import CollisionFlag from './rsmod/flag/CollisionFlag'; - +// The entry file of your WebAssembly module. +import PathFinder from './rsmod/PathFinder'; import CollisionFlagMap from './rsmod/collision/CollisionFlagMap'; -import CollisionStrategy from './rsmod/collision/CollisionStrategy'; -import CollisionStrategies from './rsmod/collision/CollisionStrategies'; - +import {CollisionFlag} from './rsmod/flag/CollisionFlag'; +import {LocAngle} from './rsmod/LocAngle'; +import {LocShape} from './rsmod/LocShape'; +import {LocLayer} from './rsmod/LocLayer'; +import {CollisionStrategy, CollisionType} from './rsmod/collision/CollisionStrategy'; import StepValidator from './rsmod/StepValidator'; -import PathFinder from './rsmod/PathFinder'; +import CollisionStrategies from './rsmod/collision/CollisionStrategies'; +import LineValidator from './rsmod/LineValidator'; +import LinePathFinder from './rsmod/LinePathFinder'; +import ReachStrategy from './rsmod/reach/ReachStrategy'; import NaivePathFinder from './rsmod/NaivePathFinder'; -import Line from './rsmod/Line'; -import LinePathFinder from './rsmod/LinePathFinder'; -import LineValidator from './rsmod/LineValidator'; -import RouteCoordinates from './rsmod/RouteCoordinates'; +const flags: CollisionFlagMap = new CollisionFlagMap(); +const pathfinder: PathFinder = new PathFinder(flags); +const stepValidator: StepValidator = new StepValidator(flags); +const lineValidator: LineValidator = new LineValidator(flags); +const linePathFinder: LinePathFinder = new LinePathFinder(flags); +const naivePathfinder: NaivePathFinder = new NaivePathFinder(stepValidator); -import ReachStrategy from './rsmod/reach/ReachStrategy'; +export {CollisionFlag, LocShape, LocAngle, CollisionType, LocLayer}; + +// prettier-ignore +export function findPath( + level: i8, + srcX: i32, + srcZ: i32, + destX: i32, + destZ: i32, + srcSize: i8 = 1, + destWidth: i8 = 1, + destHeight: i8 = 1, + angle: i8 = 0, + shape: i8 = -1, + moveNear: bool = true, + blockAccessFlags: i8 = 0, + maxWaypoints: i32 = 25, + collision: CollisionType = CollisionType.NORMAL +): StaticArray { + return pathfinder.findPath( + level, + srcX, + srcZ, + destX, + destZ, + srcSize, + destWidth, + destHeight, + angle, + shape, + moveNear, + blockAccessFlags, + maxWaypoints, + getCollisionStrategy(collision) + ); +} + +// prettier-ignore +export function findNaivePath( + level: i8, + srcX: i32, + srcZ: i32, + destX: i32, + destZ: i32, + srcWidth: i8, + srcHeight: i8, + destWidth: i8, + destHeight: i8, + blockAccessFlags: i8, + collision: CollisionType = CollisionType.NORMAL +): StaticArray { + return naivePathfinder.findPath( + level, + srcX, + srcZ, + destX, + destZ, + srcWidth, + srcHeight, + destWidth, + destHeight, + blockAccessFlags, + getCollisionStrategy(collision) + ); +} + +// prettier-ignore +export function intersects( + srcX: i32, + srcZ: i32, + srcWidth: i32, + srcHeight: i32, + destX: i32, + destZ: i32, + destWidth: i32, + destHeight: i32 +): bool { + return naivePathfinder.intersects( + srcX, + srcZ, + srcWidth, + srcHeight, + destX, + destZ, + destWidth, + destHeight + ); +} + +export function changeFloor(x: i32, z: i32, level: i8, add: bool): void { + if (add) { + flags.add(x, z, level, CollisionFlag.FLOOR); + } else { + flags.remove(x, z, level, CollisionFlag.FLOOR); + } +} + +export function changeLoc(x: i32, z: i32, level: i8, width: i8, length: i8, blockrange: bool, breakroutefinding: bool, add: bool): void { + let mask: i32 = CollisionFlag.LOC; + if (blockrange) { + mask |= CollisionFlag.LOC_PROJ_BLOCKER; + } + if (breakroutefinding) { + mask |= CollisionFlag.LOC_ROUTE_BLOCKER; + } + for (let index: i32 = 0; index < width * length; index++) { + const deltaX: i32 = x + (index % width); + const deltaZ: i32 = z + index / width; + if (add) { + flags.add(deltaX, deltaZ, level, mask); + } else { + flags.remove(deltaX, deltaZ, level, mask); + } + } +} + +export function changeNpc(x: i32, z: i32, level: i8, size: i8, add: bool): void { + const mask: i32 = CollisionFlag.NPC; + for (let index: i32 = 0; index < size * size; index++) { + const deltaX: i32 = x + (index % size); + const deltaZ: i32 = z + index / size; + if (add) { + flags.add(deltaX, deltaZ, level, mask); + } else { + flags.remove(deltaX, deltaZ, level, mask); + } + } +} + +export function changePlayer(x: i32, z: i32, level: i8, size: i8, add: bool): void { + const mask: i32 = CollisionFlag.PLAYER; + for (let index: i32 = 0; index < size * size; index++) { + const deltaX: i32 = x + (index % size); + const deltaZ: i32 = z + index / size; + if (add) { + flags.add(deltaX, deltaZ, level, mask); + } else { + flags.remove(deltaX, deltaZ, level, mask); + } + } +} + +export function changeRoof(x: i32, z: i32, level: i8, add: bool): void { + if (add) { + flags.add(x, z, level, CollisionFlag.ROOF); + } else { + flags.remove(x, z, level, CollisionFlag.ROOF); + } +} + +export function changeWall(x: i32, z: i32, level: i8, angle: i8, shape: i8, blockrange: bool, breakroutefinding: bool, add: bool): void { + if (shape == LocShape.WALL_STRAIGHT) { + changeWallStraight(x, z, level, angle, blockrange, breakroutefinding, add); + } else if (shape == LocShape.WALL_DIAGONAL_CORNER || shape == LocShape.WALL_SQUARE_CORNER) { + changeWallCorner(x, z, level, angle, blockrange, breakroutefinding, add); + } else if (shape == LocShape.WALL_L) { + changeWallL(x, z, level, angle, blockrange, breakroutefinding, add); + } +} + +function changeWallStraight(x: i32, z: i32, level: i8, angle: i8, blockrange: bool, breakroutefinding: bool, add: bool): void { + const west: i32 = breakroutefinding ? CollisionFlag.WALL_WEST_ROUTE_BLOCKER : blockrange ? CollisionFlag.WALL_WEST_PROJ_BLOCKER : CollisionFlag.WALL_WEST; + const east: i32 = breakroutefinding ? CollisionFlag.WALL_EAST_ROUTE_BLOCKER : blockrange ? CollisionFlag.WALL_EAST_PROJ_BLOCKER : CollisionFlag.WALL_EAST; + const north: i32 = breakroutefinding ? CollisionFlag.WALL_NORTH_ROUTE_BLOCKER : blockrange ? CollisionFlag.WALL_NORTH_PROJ_BLOCKER : CollisionFlag.WALL_NORTH; + const south: i32 = breakroutefinding ? CollisionFlag.WALL_SOUTH_ROUTE_BLOCKER : blockrange ? CollisionFlag.WALL_SOUTH_PROJ_BLOCKER : CollisionFlag.WALL_SOUTH; + + if (angle == LocAngle.WEST) { + if (add) { + flags.add(x, z, level, west); + flags.add(x - 1, z, level, east); + } else { + flags.remove(x, z, level, west); + flags.remove(x - 1, z, level, east); + } + } else if (angle == LocAngle.NORTH) { + if (add) { + flags.add(x, z, level, north); + flags.add(x, z + 1, level, south); + } else { + flags.remove(x, z, level, north); + flags.remove(x, z + 1, level, south); + } + } else if (angle == LocAngle.EAST) { + if (add) { + flags.add(x, z, level, east); + flags.add(x + 1, z, level, west); + } else { + flags.remove(x, z, level, east); + flags.remove(x + 1, z, level, west); + } + } else if (angle == LocAngle.SOUTH) { + if (add) { + flags.add(x, z, level, south); + flags.add(x, z - 1, level, north); + } else { + flags.remove(x, z, level, south); + flags.remove(x, z - 1, level, north); + } + } + if (breakroutefinding) { + return changeWallStraight(x, z, level, angle, blockrange, false, add); + } + if (blockrange) { + // If just blocked projectiles, then block normally next. + return changeWallStraight(x, z, level, angle, false, false, add); + } +} + +function changeWallCorner(x: i32, z: i32, level: i8, angle: i8, blockrange: bool, breakroutefinding: bool, add: bool): void { + const northWest: i32 = breakroutefinding ? CollisionFlag.WALL_NORTH_WEST_ROUTE_BLOCKER : blockrange ? CollisionFlag.WALL_NORTH_WEST_PROJ_BLOCKER : CollisionFlag.WALL_NORTH_WEST; + const southEast: i32 = breakroutefinding ? CollisionFlag.WALL_SOUTH_EAST_ROUTE_BLOCKER : blockrange ? CollisionFlag.WALL_SOUTH_EAST_PROJ_BLOCKER : CollisionFlag.WALL_SOUTH_EAST; + const northEast: i32 = breakroutefinding ? CollisionFlag.WALL_NORTH_EAST_ROUTE_BLOCKER : blockrange ? CollisionFlag.WALL_NORTH_EAST_PROJ_BLOCKER : CollisionFlag.WALL_NORTH_EAST; + const southWest: i32 = breakroutefinding ? CollisionFlag.WALL_SOUTH_WEST_ROUTE_BLOCKER : blockrange ? CollisionFlag.WALL_SOUTH_WEST_PROJ_BLOCKER : CollisionFlag.WALL_SOUTH_WEST; + + if (angle == LocAngle.WEST) { + if (add) { + flags.add(x, z, level, northWest); + flags.add(x - 1, z + 1, level, southEast); + } else { + flags.remove(x, z, level, northWest); + flags.remove(x - 1, z + 1, level, southEast); + } + } else if (angle == LocAngle.NORTH) { + if (add) { + flags.add(x, z, level, northEast); + flags.add(x + 1, z + 1, level, southWest); + } else { + flags.remove(x, z, level, northEast); + flags.remove(x + 1, z + 1, level, southWest); + } + } else if (angle == LocAngle.EAST) { + if (add) { + flags.add(x, z, level, southEast); + flags.add(x + 1, z - 1, level, northWest); + } else { + flags.remove(x, z, level, southEast); + flags.remove(x + 1, z - 1, level, northWest); + } + } else if (angle == LocAngle.SOUTH) { + if (add) { + flags.add(x, z, level, southWest); + flags.add(x - 1, z - 1, level, northEast); + } else { + flags.remove(x, z, level, southWest); + flags.remove(x - 1, z - 1, level, northEast); + } + } + if (breakroutefinding) { + return changeWallCorner(x, z, level, angle, blockrange, false, add); + } + if (blockrange) { + // If just blocked projectiles, then block normally next. + return changeWallCorner(x, z, level, angle, false, false, add); + } +} + +function changeWallL(x: i32, z: i32, level: i8, angle: i8, blockrange: bool, breakroutefinding: bool, add: bool): void { + const west: i32 = breakroutefinding ? CollisionFlag.WALL_WEST_ROUTE_BLOCKER : blockrange ? CollisionFlag.WALL_WEST_PROJ_BLOCKER : CollisionFlag.WALL_WEST; + const east: i32 = breakroutefinding ? CollisionFlag.WALL_EAST_ROUTE_BLOCKER : blockrange ? CollisionFlag.WALL_EAST_PROJ_BLOCKER : CollisionFlag.WALL_EAST; + const north: i32 = breakroutefinding ? CollisionFlag.WALL_NORTH_ROUTE_BLOCKER : blockrange ? CollisionFlag.WALL_NORTH_PROJ_BLOCKER : CollisionFlag.WALL_NORTH; + const south: i32 = breakroutefinding ? CollisionFlag.WALL_SOUTH_ROUTE_BLOCKER : blockrange ? CollisionFlag.WALL_SOUTH_PROJ_BLOCKER : CollisionFlag.WALL_SOUTH; + + if (angle == LocAngle.WEST) { + if (add) { + flags.add(x, z, level, north | west); + flags.add(x - 1, z, level, east); + flags.add(x, z + 1, level, south); + } else { + flags.remove(x, z, level, north | west); + flags.remove(x - 1, z, level, east); + flags.remove(x, z + 1, level, south); + } + } else if (angle == LocAngle.NORTH) { + if (add) { + flags.add(x, z, level, north | east); + flags.add(x, z + 1, level, south); + flags.add(x + 1, z, level, west); + } else { + flags.remove(x, z, level, north | east); + flags.remove(x, z + 1, level, south); + flags.remove(x + 1, z, level, west); + } + } else if (angle == LocAngle.EAST) { + if (add) { + flags.add(x, z, level, south | east); + flags.add(x + 1, z, level, west); + flags.add(x, z - 1, level, north); + } else { + flags.remove(x, z, level, south | east); + flags.remove(x + 1, z, level, west); + flags.remove(x, z - 1, level, north); + } + } else if (angle == LocAngle.SOUTH) { + if (add) { + flags.add(x, z, level, south | west); + flags.add(x, z - 1, level, north); + flags.add(x - 1, z, level, east); + } else { + flags.remove(x, z, level, south | west); + flags.remove(x, z - 1, level, north); + flags.remove(x - 1, z, level, east); + } + } + if (breakroutefinding) { + return changeWallL(x, z, level, angle, blockrange, false, add); + } + if (blockrange) { + // If just blocked projectiles, then block normally next. + return changeWallL(x, z, level, angle, false, false, add); + } +} + +export function allocateIfAbsent(absoluteX: i32, absoluteZ: i32, level: i8): StaticArray { + return flags.allocateIfAbsent(absoluteX, absoluteZ, level); +} + +export function deallocateIfPresent(absoluteX: i32, absoluteZ: i32, level: i8): void { + return flags.deallocateIfPresent(absoluteX, absoluteZ, level); +} + +export function isZoneAllocated(absoluteX: i32, absoluteZ: i32, level: i8): bool { + return flags.isZoneAllocated(absoluteX, absoluteZ, level); +} + +export function isFlagged(x: i32, z: i32, level: i8, masks: i32): bool { + return flags.isFlagged(x, z, level, masks); +} + +// prettier-ignore +export function canTravel( + level: i8, + x: i32, + z: i32, + offsetX: i8, + offsetZ: i8, + size: i8, + extraFlag: i32, + collision: CollisionType = CollisionType.NORMAL +): bool { + return stepValidator.canTravel( + level, + x, + z, + offsetX, + offsetZ, + size, + extraFlag, + getCollisionStrategy(collision) + ); +} + +// prettier-ignore +export function hasLineOfSight( + level: i8, + srcX: i32, + srcZ: i32, + destX: i32, + destZ: i32, + srcSize: i8 = 1, + destWidth: i8 = 0, + destHeight: i8 = 0, + extraFlag: i32 = 0 +): bool { + return lineValidator.hasLineOfSight( + level, + srcX, + srcZ, + destX, + destZ, + srcSize, + destWidth, + destHeight, + extraFlag + ); +} + +// prettier-ignore +export function hasLineOfWalk( + level: i8, + srcX: i32, + srcZ: i32, + destX: i32, + destZ: i32, + srcSize: i8 = 1, + destWidth: i8 = 0, + destHeight: i8 = 0, + extraFlag: i32 = 0 +): bool { + return lineValidator.hasLineOfWalk( + level, + srcX, + srcZ, + destX, + destZ, + srcSize, + destWidth, + destHeight, + extraFlag + ); +} + +// prettier-ignore +export function lineOfSight( + level: i8, + srcX: i32, + srcZ: i32, + destX: i32, + destZ: i32, + srcSize: i8 = 1, + destWidth: i8 = 0, + destHeight: i8 = 0, + extraFlag: i32 = 0 +): StaticArray { + return linePathFinder.lineOfSight( + level, + srcX, + srcZ, + destX, + destZ, + srcSize, + destWidth, + destHeight, + extraFlag + ); +} + +// prettier-ignore +export function lineOfWalk( + level: i8, + srcX: i32, + srcZ: i32, + destX: i32, + destZ: i32, + srcSize: i8 = 1, + destWidth: i8 = 0, + destHeight: i8 = 0, + extraFlag: i32 = 0 +): StaticArray { + return linePathFinder.lineOfWalk( + level, + srcX, + srcZ, + destX, + destZ, + srcSize, + destWidth, + destHeight, + extraFlag + ); +} + +// prettier-ignore +export function reached( + level: i8, + srcX: i32, + srcZ: i32, + destX: i32, + destZ: i32, + destWidth: i8, + destHeight: i8, + srcSize: i8, + angle: i8 = 0, + shape: i8 = -1, + blockAccessFlags: i8 = 0 +): bool { + return ReachStrategy.reached( + flags, + level, + srcX, + srcZ, + destX, + destZ, + destWidth, + destHeight, + srcSize, + angle, + shape, + blockAccessFlags + ); +} + +export function locShapeLayer(shape: LocShape): LocLayer { + switch (shape) { + case LocShape.WALL_STRAIGHT: + case LocShape.WALL_DIAGONAL_CORNER: + case LocShape.WALL_L: + case LocShape.WALL_SQUARE_CORNER: + return LocLayer.WALL; + case LocShape.WALLDECOR_STRAIGHT_NOOFFSET: + case LocShape.WALLDECOR_STRAIGHT_OFFSET: + case LocShape.WALLDECOR_DIAGONAL_OFFSET: + case LocShape.WALLDECOR_DIAGONAL_NOOFFSET: + case LocShape.WALLDECOR_DIAGONAL_BOTH: + return LocLayer.WALL_DECOR; + case LocShape.WALL_DIAGONAL: + case LocShape.CENTREPIECE_STRAIGHT: + case LocShape.CENTREPIECE_DIAGONAL: + case LocShape.ROOF_STRAIGHT: + case LocShape.ROOF_DIAGONAL_WITH_ROOFEDGE: + case LocShape.ROOF_DIAGONAL: + case LocShape.ROOF_L_CONCAVE: + case LocShape.ROOF_L_CONVEX: + case LocShape.ROOF_FLAT: + case LocShape.ROOFEDGE_STRAIGHT: + case LocShape.ROOFEDGE_DIAGONAL_CORNER: + case LocShape.ROOFEDGE_L: + case LocShape.ROOFEDGE_SQUARE_CORNER: + return LocLayer.GROUND; + case LocShape.GROUND_DECOR: + return LocLayer.GROUND_DECOR; + default: + throw new Error(`Invalid loc shape. was ${shape}.`); + } +} -export {CollisionFlag, CollisionFlagMap, CollisionStrategy, CollisionStrategies, StepValidator, PathFinder, NaivePathFinder, Line, LinePathFinder, LineValidator, RouteCoordinates, ReachStrategy}; +function getCollisionStrategy(collision: CollisionType): CollisionStrategy { + if (!(collision >= 0 && collision <= 4)) { + throw new Error(`[getCollisionStrategy] Failed requirement. collisionStrategy was: ${collision}. must be 0-4.`); + } + if (collision == CollisionType.NORMAL) { + return CollisionStrategies.NORMAL; + } else if (collision == CollisionType.BLOCKED) { + return CollisionStrategies.BLOCKED; + } else if (collision == CollisionType.INDOORS) { + return CollisionStrategies.INDOORS; + } else if (collision == CollisionType.OUTDOORS) { + return CollisionStrategies.OUTDOORS; + } else { + return CollisionStrategies.LINE_OF_SIGHT; + } +} diff --git a/src/rsmod.wat b/src/rsmod.wat new file mode 100644 index 0000000..f9c0393 --- /dev/null +++ b/src/rsmod.wat @@ -0,0 +1,58173 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32 i32 i32 i32 i32 i32 i32 i32) (result i32))) + (type $2 (func (param i32 i32))) + (type $3 (func (param i32 i32) (result i32))) + (type $4 (func (param i32 i32 i32 i32 i32))) + (type $5 (func (param i32 i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func)) + (type $9 (func (param i32 i32 i32))) + (type $10 (func (param i32 i32 i32 i32 i32 i32 i32 i32) (result i32))) + (type $11 (func (param i32 i32 i32 i32 i32 i32 i32))) + (type $12 (func (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) (result i32))) + (type $13 (func (param i32 i32 i32 i32) (result i32))) + (type $14 (func (param i32 i32 i32 i32 i32 i32 i32 i32))) + (type $15 (func (param i32 i32 i64))) + (type $16 (func (result f64))) + (type $17 (func (param i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "env" "seed" (func $~lib/builtins/seed (result f64))) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.NULL i32 (i32.const -1)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.OPEN i32 (i32.const 0)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_NORTH_WEST i32 (i32.const 1)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_NORTH i32 (i32.const 2)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_NORTH_EAST i32 (i32.const 4)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_EAST i32 (i32.const 8)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_SOUTH_EAST i32 (i32.const 16)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_SOUTH i32 (i32.const 32)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_SOUTH_WEST i32 (i32.const 64)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_WEST i32 (i32.const 128)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.LOC i32 (i32.const 256)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_NORTH_WEST_PROJ_BLOCKER i32 (i32.const 512)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_NORTH_PROJ_BLOCKER i32 (i32.const 1024)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_NORTH_EAST_PROJ_BLOCKER i32 (i32.const 2048)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_EAST_PROJ_BLOCKER i32 (i32.const 4096)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_SOUTH_EAST_PROJ_BLOCKER i32 (i32.const 8192)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_SOUTH_PROJ_BLOCKER i32 (i32.const 16384)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_SOUTH_WEST_PROJ_BLOCKER i32 (i32.const 32768)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_WEST_PROJ_BLOCKER i32 (i32.const 65536)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.LOC_PROJ_BLOCKER i32 (i32.const 131072)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.FLOOR_DECORATION i32 (i32.const 262144)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.NPC i32 (i32.const 524288)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.PLAYER i32 (i32.const 1048576)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.FLOOR i32 (i32.const 2097152)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_NORTH_WEST_ROUTE_BLOCKER i32 (i32.const 4194304)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_NORTH_ROUTE_BLOCKER i32 (i32.const 8388608)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_NORTH_EAST_ROUTE_BLOCKER i32 (i32.const 16777216)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_EAST_ROUTE_BLOCKER i32 (i32.const 33554432)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_SOUTH_EAST_ROUTE_BLOCKER i32 (i32.const 67108864)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_SOUTH_ROUTE_BLOCKER i32 (i32.const 134217728)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_SOUTH_WEST_ROUTE_BLOCKER i32 (i32.const 268435456)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_WEST_ROUTE_BLOCKER i32 (i32.const 536870912)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.LOC_ROUTE_BLOCKER i32 (i32.const 1073741824)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.ROOF i32 (i32.const -2147483648)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.FLOOR_BLOCKED i32 (i32.const 2359296)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALK_BLOCKED i32 (i32.const 2359552)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_WEST i32 (i32.const 2359560)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_EAST i32 (i32.const 2359680)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_SOUTH i32 (i32.const 2359554)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH i32 (i32.const 2359584)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_SOUTH_WEST i32 (i32.const 2359566)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_SOUTH_EAST i32 (i32.const 2359683)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_WEST i32 (i32.const 2359608)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_EAST i32 (i32.const 2359776)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST i32 (i32.const 2359614)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST i32 (i32.const 2359779)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_EAST_AND_WEST i32 (i32.const 2359695)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST i32 (i32.const 2359800)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_WEST_ROUTE_BLOCKER i32 (i32.const 1109655552)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_EAST_ROUTE_BLOCKER i32 (i32.const 1612972032)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_SOUTH_ROUTE_BLOCKER i32 (i32.const 1084489728)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_ROUTE_BLOCKER i32 (i32.const 1210318848)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_SOUTH_WEST_ROUTE_BLOCKER i32 (i32.const 1134821376)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_SOUTH_EAST_ROUTE_BLOCKER i32 (i32.const 1625554944)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_WEST_ROUTE_BLOCKER i32 (i32.const 1310982144)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_EAST_ROUTE_BLOCKER i32 (i32.const 2015625216)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST_ROUTE_BLOCKER i32 (i32.const 1336147968)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST_ROUTE_BLOCKER i32 (i32.const 2028208128)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_EAST_AND_WEST_ROUTE_BLOCKER i32 (i32.const 1675886592)) + (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST_ROUTE_BLOCKER i32 (i32.const 2116288512)) + (global $src/rsmod/collision/CollisionStrategy/CollisionType.NORMAL i32 (i32.const 0)) + (global $src/rsmod/collision/CollisionStrategy/CollisionType.BLOCKED i32 (i32.const 1)) + (global $src/rsmod/collision/CollisionStrategy/CollisionType.INDOORS i32 (i32.const 2)) + (global $src/rsmod/collision/CollisionStrategy/CollisionType.OUTDOORS i32 (i32.const 3)) + (global $src/rsmod/collision/CollisionStrategy/CollisionType.LINE_OF_SIGHT i32 (i32.const 4)) + (global $src/rsmod/LocShape/LocShape.WALL_STRAIGHT i32 (i32.const 0)) + (global $src/rsmod/LocShape/LocShape.WALL_DIAGONAL_CORNER i32 (i32.const 1)) + (global $src/rsmod/LocShape/LocShape.WALL_L i32 (i32.const 2)) + (global $src/rsmod/LocShape/LocShape.WALL_SQUARE_CORNER i32 (i32.const 3)) + (global $src/rsmod/LocShape/LocShape.WALLDECOR_STRAIGHT_NOOFFSET i32 (i32.const 4)) + (global $src/rsmod/LocShape/LocShape.WALLDECOR_STRAIGHT_OFFSET i32 (i32.const 5)) + (global $src/rsmod/LocShape/LocShape.WALLDECOR_DIAGONAL_OFFSET i32 (i32.const 6)) + (global $src/rsmod/LocShape/LocShape.WALLDECOR_DIAGONAL_NOOFFSET i32 (i32.const 7)) + (global $src/rsmod/LocShape/LocShape.WALLDECOR_DIAGONAL_BOTH i32 (i32.const 8)) + (global $src/rsmod/LocShape/LocShape.WALL_DIAGONAL i32 (i32.const 9)) + (global $src/rsmod/LocShape/LocShape.CENTREPIECE_STRAIGHT i32 (i32.const 10)) + (global $src/rsmod/LocShape/LocShape.CENTREPIECE_DIAGONAL i32 (i32.const 11)) + (global $src/rsmod/LocShape/LocShape.ROOF_STRAIGHT i32 (i32.const 12)) + (global $src/rsmod/LocShape/LocShape.ROOF_DIAGONAL_WITH_ROOFEDGE i32 (i32.const 13)) + (global $src/rsmod/LocShape/LocShape.ROOF_DIAGONAL i32 (i32.const 14)) + (global $src/rsmod/LocShape/LocShape.ROOF_L_CONCAVE i32 (i32.const 15)) + (global $src/rsmod/LocShape/LocShape.ROOF_L_CONVEX i32 (i32.const 16)) + (global $src/rsmod/LocShape/LocShape.ROOF_FLAT i32 (i32.const 17)) + (global $src/rsmod/LocShape/LocShape.ROOFEDGE_STRAIGHT i32 (i32.const 18)) + (global $src/rsmod/LocShape/LocShape.ROOFEDGE_DIAGONAL_CORNER i32 (i32.const 19)) + (global $src/rsmod/LocShape/LocShape.ROOFEDGE_L i32 (i32.const 20)) + (global $src/rsmod/LocShape/LocShape.ROOFEDGE_SQUARE_CORNER i32 (i32.const 21)) + (global $src/rsmod/LocShape/LocShape.GROUND_DECOR i32 (i32.const 22)) + (global $src/rsmod/LocAngle/LocAngle.WEST i32 (i32.const 0)) + (global $src/rsmod/LocAngle/LocAngle.NORTH i32 (i32.const 1)) + (global $src/rsmod/LocAngle/LocAngle.EAST i32 (i32.const 2)) + (global $src/rsmod/LocAngle/LocAngle.SOUTH i32 (i32.const 3)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/total (mut i32) (i32.const 0)) + (global $src/rsmod/PathFinder/PathFinder.EMPTY (mut i32) (i32.const 0)) + (global $src/rsmod/LocLayer/LocLayer.WALL i32 (i32.const 0)) + (global $src/rsmod/LocLayer/LocLayer.WALL_DECOR i32 (i32.const 1)) + (global $src/rsmod/LocLayer/LocLayer.GROUND i32 (i32.const 2)) + (global $src/rsmod/LocLayer/LocLayer.GROUND_DECOR i32 (i32.const 3)) + (global $src/rsmod/collision/CollisionStrategies/CollisionStrategies.NORMAL (mut i32) (i32.const 0)) + (global $src/rsmod/collision/CollisionStrategies/CollisionStrategies.BLOCKED (mut i32) (i32.const 0)) + (global $src/rsmod/collision/CollisionStrategies/CollisionStrategies.INDOORS (mut i32) (i32.const 0)) + (global $src/rsmod/collision/CollisionStrategies/CollisionStrategies.OUTDOORS (mut i32) (i32.const 0)) + (global $src/rsmod/collision/CollisionStrategies/CollisionStrategies.LINE_OF_SIGHT (mut i32) (i32.const 0)) + (global $src/rsmod/LinePathFinder/LinePathFinder.EMPTY (mut i32) (i32.const 0)) + (global $src/rsmod/NaivePathFinder/NaivePathFinder.DIRECTIONS (mut i32) (i32.const 0)) + (global $src/index/flags (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $src/index/pathfinder (mut i32) (i32.const 0)) + (global $src/index/stepValidator (mut i32) (i32.const 0)) + (global $src/index/lineValidator (mut i32) (i32.const 0)) + (global $src/index/linePathFinder (mut i32) (i32.const 0)) + (global $src/index/naivePathfinder (mut i32) (i32.const 0)) + (global $~lib/math/random_seeded (mut i32) (i32.const 0)) + (global $~lib/math/random_state0_64 (mut i64) (i64.const 0)) + (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) + (memory $0 1) + (data $0 (i32.const 1036) ",") + (data $0.1 (i32.const 1048) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $1 (i32.const 1084) "<") + (data $1.1 (i32.const 1096) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") + (data $2 (i32.const 1148) "<") + (data $2.1 (i32.const 1160) "\02\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data $3 (i32.const 1212) "<") + (data $3.1 (i32.const 1224) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1276) "<") + (data $4.1 (i32.const 1288) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $6 (i32.const 1372) "\1c") + (data $6.1 (i32.const 1384) "\01\00\00\00\08\00\00\00\ff\ff\ff\ff") + (data $7 (i32.const 1404) "\1c") + (data $7.1 (i32.const 1416) "\01\00\00\00\08\00\00\00\01") + (data $8 (i32.const 1436) "\1c") + (data $8.1 (i32.const 1448) "\01\00\00\00\08\00\00\00\00\00\00\00\01") + (data $9 (i32.const 1468) "\1c") + (data $9.1 (i32.const 1480) "\01\00\00\00\08\00\00\00\00\00\00\00\ff\ff\ff\ff") + (data $10 (i32.const 1500) "<") + (data $10.1 (i32.const 1512) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $11 (i32.const 1564) ",") + (data $11.1 (i32.const 1576) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $12 (i32.const 1612) "\9c") + (data $12.1 (i32.const 1624) "\02\00\00\00\84\00\00\00[\00g\00e\00t\00C\00o\00l\00l\00i\00s\00i\00o\00n\00S\00t\00r\00a\00t\00e\00g\00y\00]\00 \00F\00a\00i\00l\00e\00d\00 \00r\00e\00q\00u\00i\00r\00e\00m\00e\00n\00t\00.\00 \00c\00o\00l\00l\00i\00s\00i\00o\00n\00S\00t\00r\00a\00t\00e\00g\00y\00 \00w\00a\00s\00:\00 ") + (data $13 (i32.const 1772) ",") + (data $13.1 (i32.const 1784) "\02\00\00\00\1c\00\00\00.\00 \00m\00u\00s\00t\00 \00b\00e\00 \000\00-\004\00.") + (data $14 (i32.const 1820) "\1c\00\00\00\03\00\00\00\00\00\00\00\14\00\00\00\0c\00\00\00`\06\00\00\00\00\00\00\00\07") + (data $15 (i32.const 1852) "|") + (data $15.1 (i32.const 1864) "\02\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data $16 (i32.const 1980) "<") + (data $16.1 (i32.const 1992) "\02\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data $17 (i32.const 2044) "\1c") + (data $17.1 (i32.const 2056) "\02\00\00\00\02\00\00\000") + (data $18 (i32.const 2076) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data $19 (i32.const 2476) "\1c\04") + (data $19.1 (i32.const 2488) "\02\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data $20 (i32.const 3532) "\\") + (data $20.1 (i32.const 3544) "\02\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") + (data $21 (i32.const 3628) "\1c") + (data $21.1 (i32.const 3640) "\02") + (data $22 (i32.const 3660) ",") + (data $22.1 (i32.const 3672) "\02\00\00\00\18\00\00\00s\00r\00c\00/\00i\00n\00d\00e\00x\00.\00t\00s") + (data $23 (i32.const 3708) "l") + (data $23.1 (i32.const 3720) "\02\00\00\00R\00\00\00[\00f\00i\00n\00d\00P\00a\00t\00h\00]\00 \00F\00a\00i\00l\00e\00d\00 \00r\00e\00q\00u\00i\00r\00e\00m\00e\00n\00t\00.\00 \00s\00r\00c\00X\00 \00w\00a\00s\00:\00 ") + (data $24 (i32.const 3820) ",") + (data $24.1 (i32.const 3832) "\02\00\00\00\18\00\00\00,\00 \00s\00r\00c\00Z\00 \00w\00a\00s\00:\00 ") + (data $25 (i32.const 3868) "\1c") + (data $25.1 (i32.const 3880) "\02\00\00\00\02\00\00\00.") + (data $26 (i32.const 3900) ",\00\00\00\03\00\00\00\00\00\00\00\14\00\00\00\14\00\00\00\90\0e\00\00\00\00\00\00\00\0f\00\00\00\00\00\000\0f") + (data $27 (i32.const 3948) "L") + (data $27.1 (i32.const 3960) "\02\00\00\00.\00\00\00s\00r\00c\00/\00r\00s\00m\00o\00d\00/\00P\00a\00t\00h\00F\00i\00n\00d\00e\00r\00.\00t\00s") + (data $28 (i32.const 4028) "l") + (data $28.1 (i32.const 4040) "\02\00\00\00T\00\00\00[\00f\00i\00n\00d\00P\00a\00t\00h\00]\00 \00F\00a\00i\00l\00e\00d\00 \00r\00e\00q\00u\00i\00r\00e\00m\00e\00n\00t\00.\00 \00d\00e\00s\00t\00X\00 \00w\00a\00s\00:\00 ") + (data $29 (i32.const 4140) ",") + (data $29.1 (i32.const 4152) "\02\00\00\00\1a\00\00\00,\00 \00d\00e\00s\00t\00Z\00 \00w\00a\00s\00:\00 ") + (data $30 (i32.const 4188) ",\00\00\00\03\00\00\00\00\00\00\00\14\00\00\00\14\00\00\00\d0\0f\00\00\00\00\00\00@\10\00\00\00\00\00\000\0f") + (data $31 (i32.const 4236) "l") + (data $31.1 (i32.const 4248) "\02\00\00\00T\00\00\00[\00f\00i\00n\00d\00P\00a\00t\00h\00]\00 \00F\00a\00i\00l\00e\00d\00 \00r\00e\00q\00u\00i\00r\00e\00m\00e\00n\00t\00.\00 \00l\00e\00v\00e\00l\00 \00w\00a\00s\00:\00 ") + (data $32 (i32.const 4348) ",") + (data $32.1 (i32.const 4360) "\02\00\00\00\1c\00\00\00.\00 \00m\00u\00s\00t\00 \00b\00e\00 \000\00-\003\00.") + (data $33 (i32.const 4396) "\1c\00\00\00\03\00\00\00\00\00\00\00\14\00\00\00\0c\00\00\00\a0\10\00\00\00\00\00\00\10\11") + (data $34 (i32.const 4428) "\1c") + (data $34.1 (i32.const 4440) "\01") + (data $35 (i32.const 4460) ",") + (data $35.1 (i32.const 4472) "\02\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y") + (data $36 (i32.const 4508) "L") + (data $36.1 (i32.const 4520) "\02\00\00\00<\00\00\00F\00a\00i\00l\00e\00d\00 \00r\00e\00q\00u\00i\00r\00e\00m\00e\00n\00t\00.\00 \00s\00r\00c\00X\00 \00w\00a\00s\00:\00 ") + (data $37 (i32.const 4588) ",\00\00\00\03\00\00\00\00\00\00\00\14\00\00\00\14\00\00\00\b0\11\00\00\00\00\00\00\00\0f\00\00\00\00\00\000\0f") + (data $38 (i32.const 4636) "L") + (data $38.1 (i32.const 4648) "\02\00\00\008\00\00\00s\00r\00c\00/\00r\00s\00m\00o\00d\00/\00N\00a\00i\00v\00e\00P\00a\00t\00h\00F\00i\00n\00d\00e\00r\00.\00t\00s") + (data $39 (i32.const 4716) "\\") + (data $39.1 (i32.const 4728) "\02\00\00\00>\00\00\00F\00a\00i\00l\00e\00d\00 \00r\00e\00q\00u\00i\00r\00e\00m\00e\00n\00t\00.\00 \00d\00e\00s\00t\00X\00 \00w\00a\00s\00:\00 ") + (data $40 (i32.const 4812) ",\00\00\00\03\00\00\00\00\00\00\00\14\00\00\00\14\00\00\00\80\12\00\00\00\00\00\00@\10\00\00\00\00\00\000\0f") + (data $41 (i32.const 4860) "\\") + (data $41.1 (i32.const 4872) "\02\00\00\00>\00\00\00F\00a\00i\00l\00e\00d\00 \00r\00e\00q\00u\00i\00r\00e\00m\00e\00n\00t\00.\00 \00l\00e\00v\00e\00l\00 \00w\00a\00s\00:\00 ") + (data $42 (i32.const 4956) "\1c\00\00\00\03\00\00\00\00\00\00\00\14\00\00\00\0c\00\00\00\10\13\00\00\00\00\00\000\0f") + (data $43 (i32.const 4988) "|") + (data $43.1 (i32.const 5000) "\02\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data $44 (i32.const 5116) "l") + (data $44.1 (i32.const 5128) "\02\00\00\00X\00\00\00F\00a\00i\00l\00e\00d\00 \00r\00e\00q\00u\00i\00r\00e\00m\00e\00n\00t\00.\00 \00s\00o\00u\00t\00h\00E\00a\00s\00t\00C\00l\00o\00c\00k\00w\00i\00s\00e\00 \00w\00a\00s\00:\00 ") + (data $45 (i32.const 5228) "L") + (data $45.1 (i32.const 5240) "\02\00\00\004\00\00\00,\00 \00s\00o\00u\00t\00h\00W\00e\00s\00t\00C\00l\00o\00c\00k\00w\00i\00s\00e\00 \00w\00a\00s\00:\00 ") + (data $46 (i32.const 5308) ",\00\00\00\03\00\00\00\00\00\00\00\14\00\00\00\14\00\00\00\10\14\00\00\00\00\00\00\80\14\00\00\00\00\00\000\0f") + (data $47 (i32.const 5356) "\1c") + (data $47.1 (i32.const 5368) "\02\00\00\00\08\00\00\00t\00r\00u\00e") + (data $48 (i32.const 5388) "\1c") + (data $48.1 (i32.const 5400) "\02\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data $49 (i32.const 5420) "L") + (data $49.1 (i32.const 5432) "\02\00\00\00<\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00o\00f\00f\00s\00e\00t\00s\00:\00 \00o\00f\00f\00s\00e\00t\00X\00 \00w\00a\00s\00:\00 ") + (data $50 (i32.const 5500) "<") + (data $50.1 (i32.const 5512) "\02\00\00\00\1e\00\00\00,\00 \00o\00f\00f\00s\00e\00t\00Z\00 \00w\00a\00s\00:\00 ") + (data $51 (i32.const 5564) ",\00\00\00\03\00\00\00\00\00\00\00\14\00\00\00\10\00\00\00@\15\00\00\00\00\00\00\90\15") + (data $52 (i32.const 5612) "L") + (data $52.1 (i32.const 5624) "\02\00\00\004\00\00\00s\00r\00c\00/\00r\00s\00m\00o\00d\00/\00S\00t\00e\00p\00V\00a\00l\00i\00d\00a\00t\00o\00r\00.\00t\00s") + (data $53 (i32.const 5692) ",\00\00\00\03\00\00\00\00\00\00\00\14\00\00\00\10\00\00\00@\15\00\00\00\00\00\00\90\15") + (data $54 (i32.const 5740) ",\00\00\00\03\00\00\00\00\00\00\00\14\00\00\00\10\00\00\00@\15\00\00\00\00\00\00\90\15") + (data $55 (i32.const 5788) ",\00\00\00\03\00\00\00\00\00\00\00\14\00\00\00\10\00\00\00@\15\00\00\00\00\00\00\90\15") + (data $56 (i32.const 5836) "\1c") + (data $56.1 (i32.const 5848) "\01") + (data $57 (i32.const 5868) "\1c") + (data $57.1 (i32.const 5880) "\01") + (data $58 (i32.const 5900) "L") + (data $58.1 (i32.const 5912) "\02\00\00\00.\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00o\00c\00 \00s\00h\00a\00p\00e\00.\00 \00w\00a\00s\00 ") + (data $59 (i32.const 5980) "\1c\00\00\00\03\00\00\00\00\00\00\00\14\00\00\00\0c\00\00\00 \17\00\00\00\00\00\000\0f") + (export "findPath" (func $src/index/findPath@varargs)) + (export "findNaivePath" (func $src/index/findNaivePath@varargs)) + (export "intersects" (func $src/index/intersects)) + (export "changeFloor" (func $src/index/changeFloor)) + (export "changeLoc" (func $src/index/changeLoc)) + (export "changeNpc" (func $src/index/changeNpc)) + (export "changePlayer" (func $src/index/changePlayer)) + (export "changeRoof" (func $src/index/changeRoof)) + (export "changeWall" (func $src/index/changeWall)) + (export "allocateIfAbsent" (func $src/index/allocateIfAbsent)) + (export "deallocateIfPresent" (func $src/index/deallocateIfPresent)) + (export "isZoneAllocated" (func $src/index/isZoneAllocated)) + (export "isFlagged" (func $src/index/isFlagged)) + (export "canTravel" (func $src/index/canTravel@varargs)) + (export "hasLineOfSight" (func $src/index/hasLineOfSight@varargs)) + (export "hasLineOfWalk" (func $src/index/hasLineOfWalk@varargs)) + (export "lineOfSight" (func $src/index/lineOfSight@varargs)) + (export "lineOfWalk" (func $src/index/lineOfWalk@varargs)) + (export "reached" (func $src/index/reached@varargs)) + (export "locShapeLayer" (func $src/index/locShapeLayer)) + (export "CollisionFlag.NULL" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.NULL)) + (export "CollisionFlag.OPEN" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.OPEN)) + (export "CollisionFlag.WALL_NORTH_WEST" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_NORTH_WEST)) + (export "CollisionFlag.WALL_NORTH" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_NORTH)) + (export "CollisionFlag.WALL_NORTH_EAST" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_NORTH_EAST)) + (export "CollisionFlag.WALL_EAST" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_EAST)) + (export "CollisionFlag.WALL_SOUTH_EAST" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_SOUTH_EAST)) + (export "CollisionFlag.WALL_SOUTH" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_SOUTH)) + (export "CollisionFlag.WALL_SOUTH_WEST" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_SOUTH_WEST)) + (export "CollisionFlag.WALL_WEST" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_WEST)) + (export "CollisionFlag.LOC" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.LOC)) + (export "CollisionFlag.WALL_NORTH_WEST_PROJ_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_NORTH_WEST_PROJ_BLOCKER)) + (export "CollisionFlag.WALL_NORTH_PROJ_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_NORTH_PROJ_BLOCKER)) + (export "CollisionFlag.WALL_NORTH_EAST_PROJ_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_NORTH_EAST_PROJ_BLOCKER)) + (export "CollisionFlag.WALL_EAST_PROJ_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_EAST_PROJ_BLOCKER)) + (export "CollisionFlag.WALL_SOUTH_EAST_PROJ_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_SOUTH_EAST_PROJ_BLOCKER)) + (export "CollisionFlag.WALL_SOUTH_PROJ_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_SOUTH_PROJ_BLOCKER)) + (export "CollisionFlag.WALL_SOUTH_WEST_PROJ_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_SOUTH_WEST_PROJ_BLOCKER)) + (export "CollisionFlag.WALL_WEST_PROJ_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_WEST_PROJ_BLOCKER)) + (export "CollisionFlag.LOC_PROJ_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.LOC_PROJ_BLOCKER)) + (export "CollisionFlag.FLOOR_DECORATION" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.FLOOR_DECORATION)) + (export "CollisionFlag.NPC" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.NPC)) + (export "CollisionFlag.PLAYER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.PLAYER)) + (export "CollisionFlag.FLOOR" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.FLOOR)) + (export "CollisionFlag.WALL_NORTH_WEST_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_NORTH_WEST_ROUTE_BLOCKER)) + (export "CollisionFlag.WALL_NORTH_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_NORTH_ROUTE_BLOCKER)) + (export "CollisionFlag.WALL_NORTH_EAST_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_NORTH_EAST_ROUTE_BLOCKER)) + (export "CollisionFlag.WALL_EAST_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_EAST_ROUTE_BLOCKER)) + (export "CollisionFlag.WALL_SOUTH_EAST_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_SOUTH_EAST_ROUTE_BLOCKER)) + (export "CollisionFlag.WALL_SOUTH_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_SOUTH_ROUTE_BLOCKER)) + (export "CollisionFlag.WALL_SOUTH_WEST_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_SOUTH_WEST_ROUTE_BLOCKER)) + (export "CollisionFlag.WALL_WEST_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALL_WEST_ROUTE_BLOCKER)) + (export "CollisionFlag.LOC_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.LOC_ROUTE_BLOCKER)) + (export "CollisionFlag.ROOF" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.ROOF)) + (export "CollisionFlag.FLOOR_BLOCKED" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.FLOOR_BLOCKED)) + (export "CollisionFlag.WALK_BLOCKED" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.WALK_BLOCKED)) + (export "CollisionFlag.BLOCK_WEST" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_WEST)) + (export "CollisionFlag.BLOCK_EAST" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_EAST)) + (export "CollisionFlag.BLOCK_SOUTH" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_SOUTH)) + (export "CollisionFlag.BLOCK_NORTH" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH)) + (export "CollisionFlag.BLOCK_SOUTH_WEST" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_SOUTH_WEST)) + (export "CollisionFlag.BLOCK_SOUTH_EAST" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_SOUTH_EAST)) + (export "CollisionFlag.BLOCK_NORTH_WEST" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_WEST)) + (export "CollisionFlag.BLOCK_NORTH_EAST" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_EAST)) + (export "CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST)) + (export "CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST)) + (export "CollisionFlag.BLOCK_NORTH_EAST_AND_WEST" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_EAST_AND_WEST)) + (export "CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST)) + (export "CollisionFlag.BLOCK_WEST_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_WEST_ROUTE_BLOCKER)) + (export "CollisionFlag.BLOCK_EAST_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_EAST_ROUTE_BLOCKER)) + (export "CollisionFlag.BLOCK_SOUTH_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_SOUTH_ROUTE_BLOCKER)) + (export "CollisionFlag.BLOCK_NORTH_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_ROUTE_BLOCKER)) + (export "CollisionFlag.BLOCK_SOUTH_WEST_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_SOUTH_WEST_ROUTE_BLOCKER)) + (export "CollisionFlag.BLOCK_SOUTH_EAST_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_SOUTH_EAST_ROUTE_BLOCKER)) + (export "CollisionFlag.BLOCK_NORTH_WEST_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_WEST_ROUTE_BLOCKER)) + (export "CollisionFlag.BLOCK_NORTH_EAST_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_EAST_ROUTE_BLOCKER)) + (export "CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST_ROUTE_BLOCKER)) + (export "CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST_ROUTE_BLOCKER)) + (export "CollisionFlag.BLOCK_NORTH_EAST_AND_WEST_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_NORTH_EAST_AND_WEST_ROUTE_BLOCKER)) + (export "CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST_ROUTE_BLOCKER" (global $src/rsmod/flag/CollisionFlag/CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST_ROUTE_BLOCKER)) + (export "LocShape.WALL_STRAIGHT" (global $src/rsmod/LocShape/LocShape.WALL_STRAIGHT)) + (export "LocShape.WALL_DIAGONAL_CORNER" (global $src/rsmod/LocShape/LocShape.WALL_DIAGONAL_CORNER)) + (export "LocShape.WALL_L" (global $src/rsmod/LocShape/LocShape.WALL_L)) + (export "LocShape.WALL_SQUARE_CORNER" (global $src/rsmod/LocShape/LocShape.WALL_SQUARE_CORNER)) + (export "LocShape.WALLDECOR_STRAIGHT_NOOFFSET" (global $src/rsmod/LocShape/LocShape.WALLDECOR_STRAIGHT_NOOFFSET)) + (export "LocShape.WALLDECOR_STRAIGHT_OFFSET" (global $src/rsmod/LocShape/LocShape.WALLDECOR_STRAIGHT_OFFSET)) + (export "LocShape.WALLDECOR_DIAGONAL_OFFSET" (global $src/rsmod/LocShape/LocShape.WALLDECOR_DIAGONAL_OFFSET)) + (export "LocShape.WALLDECOR_DIAGONAL_NOOFFSET" (global $src/rsmod/LocShape/LocShape.WALLDECOR_DIAGONAL_NOOFFSET)) + (export "LocShape.WALLDECOR_DIAGONAL_BOTH" (global $src/rsmod/LocShape/LocShape.WALLDECOR_DIAGONAL_BOTH)) + (export "LocShape.WALL_DIAGONAL" (global $src/rsmod/LocShape/LocShape.WALL_DIAGONAL)) + (export "LocShape.CENTREPIECE_STRAIGHT" (global $src/rsmod/LocShape/LocShape.CENTREPIECE_STRAIGHT)) + (export "LocShape.CENTREPIECE_DIAGONAL" (global $src/rsmod/LocShape/LocShape.CENTREPIECE_DIAGONAL)) + (export "LocShape.ROOF_STRAIGHT" (global $src/rsmod/LocShape/LocShape.ROOF_STRAIGHT)) + (export "LocShape.ROOF_DIAGONAL_WITH_ROOFEDGE" (global $src/rsmod/LocShape/LocShape.ROOF_DIAGONAL_WITH_ROOFEDGE)) + (export "LocShape.ROOF_DIAGONAL" (global $src/rsmod/LocShape/LocShape.ROOF_DIAGONAL)) + (export "LocShape.ROOF_L_CONCAVE" (global $src/rsmod/LocShape/LocShape.ROOF_L_CONCAVE)) + (export "LocShape.ROOF_L_CONVEX" (global $src/rsmod/LocShape/LocShape.ROOF_L_CONVEX)) + (export "LocShape.ROOF_FLAT" (global $src/rsmod/LocShape/LocShape.ROOF_FLAT)) + (export "LocShape.ROOFEDGE_STRAIGHT" (global $src/rsmod/LocShape/LocShape.ROOFEDGE_STRAIGHT)) + (export "LocShape.ROOFEDGE_DIAGONAL_CORNER" (global $src/rsmod/LocShape/LocShape.ROOFEDGE_DIAGONAL_CORNER)) + (export "LocShape.ROOFEDGE_L" (global $src/rsmod/LocShape/LocShape.ROOFEDGE_L)) + (export "LocShape.ROOFEDGE_SQUARE_CORNER" (global $src/rsmod/LocShape/LocShape.ROOFEDGE_SQUARE_CORNER)) + (export "LocShape.GROUND_DECOR" (global $src/rsmod/LocShape/LocShape.GROUND_DECOR)) + (export "LocAngle.WEST" (global $src/rsmod/LocAngle/LocAngle.WEST)) + (export "LocAngle.NORTH" (global $src/rsmod/LocAngle/LocAngle.NORTH)) + (export "LocAngle.EAST" (global $src/rsmod/LocAngle/LocAngle.EAST)) + (export "LocAngle.SOUTH" (global $src/rsmod/LocAngle/LocAngle.SOUTH)) + (export "CollisionType.NORMAL" (global $src/rsmod/collision/CollisionStrategy/CollisionType.NORMAL)) + (export "CollisionType.BLOCKED" (global $src/rsmod/collision/CollisionStrategy/CollisionType.BLOCKED)) + (export "CollisionType.INDOORS" (global $src/rsmod/collision/CollisionStrategy/CollisionType.INDOORS)) + (export "CollisionType.OUTDOORS" (global $src/rsmod/collision/CollisionStrategy/CollisionType.OUTDOORS)) + (export "CollisionType.LINE_OF_SIGHT" (global $src/rsmod/collision/CollisionStrategy/CollisionType.LINE_OF_SIGHT)) + (export "LocLayer.WALL" (global $src/rsmod/LocLayer/LocLayer.WALL)) + (export "LocLayer.WALL_DECOR" (global $src/rsmod/LocLayer/LocLayer.WALL_DECOR)) + (export "LocLayer.GROUND" (global $src/rsmod/LocLayer/LocLayer.GROUND)) + (export "LocLayer.GROUND_DECOR" (global $src/rsmod/LocLayer/LocLayer.GROUND_DECOR)) + (export "memory" (memory $0)) + (export "__setArgumentsLength" (func $~setArgumentsLength)) + (start $~start) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + i32.const -4 + i32.and + local.tee $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.set $4 + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $3 + if + local.get $3 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $3 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $4 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 4 + i32.add + local.tee $6 + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $6 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.set $6 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $0 + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + local.get $5 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + local.get $3 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $0 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 6016 + i32.const 0 + i32.store + i32.const 7584 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + i32.const 6016 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 16 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shl + local.get $0 + i32.add + i32.const 2 + i32.shl + i32.const 6016 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + i32.const 6016 + i32.const 7588 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 6016 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 1168 + i32.const 1296 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $0 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $0 + local.get $1 + i32.ctz + local.tee $0 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.ctz + local.get $0 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + local.tee $1 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $3 + local.get $2 + i32.const 256 + i32.ge_u + if (result i32) + local.get $2 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $2 + end + else + local.get $2 + end + i32.const 4 + local.get $0 + i32.load offset=1568 + local.get $3 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $1 + local.get $3 + i32.lt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $3 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $1 + end + local.get $1 + i32.load + drop + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $1 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + ) + (func $~lib/rt/tcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1168 + i32.const 1232 + i32.const 125 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/tcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $1 + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $2 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/tcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/tcms/total + local.get $2 + i32.const 20 + i32.add + ) + (func $~lib/staticarray/StaticArray#constructor (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 51 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + local.tee $0 + i32.const 4 + call $~lib/rt/tcms/__new + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.const 2 + i32.shl + local.tee $4 + i32.const 1 + call $~lib/rt/tcms/__new + local.set $3 + local.get $2 + if + local.get $3 + local.get $2 + local.get $4 + memory.copy + end + i32.const 16 + local.get $1 + call $~lib/rt/tcms/__new + local.tee $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + memory.copy + local.get $1 + i32.const 6012 + i32.ge_u + if + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + end + local.get $2 + ) + (func $~lib/rt/tcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + i32.const 20 + i32.sub + local.set $2 + local.get $0 + i32.const 6012 + i32.lt_u + if + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/tcms/__new + local.tee $3 + local.get $0 + local.get $1 + local.get $2 + i32.load offset=16 + local.tee $0 + local.get $0 + local.get $1 + i32.gt_u + select + memory.copy + local.get $3 + return + end + local.get $1 + i32.const 1073741804 + i32.gt_u + if + i32.const 1168 + i32.const 1232 + i32.const 143 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/tcms/total + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + local.get $1 + i32.const 16 + i32.add + local.set $6 + local.get $0 + i32.const 16 + i32.sub + local.tee $2 + i32.const 6012 + i32.lt_u + if + local.get $2 + i32.const 4 + i32.sub + local.set $0 + local.get $2 + i32.const 15 + i32.and + i32.const 1 + local.get $2 + select + if (result i32) + i32.const 1 + else + local.get $0 + i32.load + i32.const 1 + i32.and + end + drop + global.get $~lib/rt/tlsf/ROOT + local.get $0 + local.get $6 + call $~lib/rt/tlsf/moveBlock + local.set $0 + else + block $__inlined_func$~lib/rt/tlsf/reallocateBlock$1216 + local.get $2 + i32.const 4 + i32.sub + local.set $0 + local.get $2 + i32.const 15 + i32.and + i32.const 1 + local.get $2 + select + if (result i32) + i32.const 1 + else + local.get $0 + i32.load + i32.const 1 + i32.and + end + drop + global.get $~lib/rt/tlsf/ROOT + local.set $3 + local.get $6 + call $~lib/rt/tlsf/prepareSize + local.tee $4 + local.get $0 + i32.load + local.tee $7 + i32.const -4 + i32.and + local.tee $5 + i32.le_u + if + local.get $3 + local.get $0 + local.get $4 + call $~lib/rt/tlsf/prepareBlock + br $__inlined_func$~lib/rt/tlsf/reallocateBlock$1216 + end + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $2 + i32.load + local.tee $8 + i32.const 1 + i32.and + if + local.get $5 + i32.const 4 + i32.add + local.get $8 + i32.const -4 + i32.and + i32.add + local.tee $5 + local.get $4 + i32.ge_u + if + local.get $3 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $7 + i32.const 3 + i32.and + local.get $5 + i32.or + i32.store + local.get $3 + local.get $0 + local.get $4 + call $~lib/rt/tlsf/prepareBlock + br $__inlined_func$~lib/rt/tlsf/reallocateBlock$1216 + end + end + local.get $3 + local.get $0 + local.get $6 + call $~lib/rt/tlsf/moveBlock + local.set $0 + end + end + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i32.const 20 + i32.sub + local.tee $2 + local.get $1 + i32.store offset=16 + local.get $2 + i32.load offset=4 + i32.const -4 + i32.and + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=8 + local.tee $1 + local.get $2 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + global.get $~lib/rt/tcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/tcms/total + local.get $0 + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1584 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.tee $3 + i32.const 1073741820 + local.get $2 + i32.const 1 + i32.shl + local.tee $4 + local.get $4 + i32.const 1073741820 + i32.ge_u + select + local.tee $4 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $1 + local.get $1 + local.get $4 + i32.lt_u + select + local.tee $1 + call $~lib/rt/tcms/__renew + local.tee $4 + local.get $2 + i32.add + i32.const 0 + local.get $1 + local.get $2 + i32.sub + memory.fill + local.get $3 + local.get $4 + i32.ne + if + local.get $0 + local.get $4 + i32.store + local.get $0 + local.get $4 + i32.store offset=4 + end + local.get $0 + local.get $1 + i32.store offset=8 + end + ) + (func $~lib/array/Array<~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1520 + i32.const 1584 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + ) + (func $start:src/index + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/tcms/fromSpace + i32.const 0 + call $~lib/staticarray/StaticArray#constructor + global.set $src/rsmod/PathFinder/PathFinder.EMPTY + i32.const 0 + i32.const 6 + call $~lib/rt/tcms/__new + local.tee $0 + if (result i32) + local.get $0 + else + i32.const 0 + i32.const 0 + call $~lib/rt/tcms/__new + end + global.set $src/rsmod/collision/CollisionStrategies/CollisionStrategies.NORMAL + i32.const 0 + i32.const 7 + call $~lib/rt/tcms/__new + local.tee $0 + if (result i32) + local.get $0 + else + i32.const 0 + i32.const 0 + call $~lib/rt/tcms/__new + end + global.set $src/rsmod/collision/CollisionStrategies/CollisionStrategies.BLOCKED + i32.const 0 + i32.const 8 + call $~lib/rt/tcms/__new + local.tee $0 + if (result i32) + local.get $0 + else + i32.const 0 + i32.const 0 + call $~lib/rt/tcms/__new + end + global.set $src/rsmod/collision/CollisionStrategies/CollisionStrategies.INDOORS + i32.const 0 + i32.const 9 + call $~lib/rt/tcms/__new + local.tee $0 + if (result i32) + local.get $0 + else + i32.const 0 + i32.const 0 + call $~lib/rt/tcms/__new + end + global.set $src/rsmod/collision/CollisionStrategies/CollisionStrategies.OUTDOORS + i32.const 0 + i32.const 10 + call $~lib/rt/tcms/__new + local.tee $0 + if (result i32) + local.get $0 + else + i32.const 0 + i32.const 0 + call $~lib/rt/tcms/__new + end + global.set $src/rsmod/collision/CollisionStrategies/CollisionStrategies.LINE_OF_SIGHT + i32.const 0 + call $~lib/staticarray/StaticArray#constructor + global.set $src/rsmod/LinePathFinder/LinePathFinder.EMPTY + i32.const 4 + i32.const 12 + i32.const 0 + call $~lib/rt/__newArray + local.tee $0 + i32.load offset=4 + drop + local.get $0 + i32.const 0 + i32.const 2 + i32.const 11 + i32.const 1392 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $0 + i32.const 1 + i32.const 2 + i32.const 11 + i32.const 1424 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $0 + i32.const 2 + i32.const 2 + i32.const 11 + i32.const 1456 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $0 + i32.const 3 + i32.const 2 + i32.const 11 + i32.const 1488 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__set + local.get $0 + global.set $src/rsmod/NaivePathFinder/NaivePathFinder.DIRECTIONS + i32.const 4 + i32.const 13 + call $~lib/rt/tcms/__new + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 0 + call $~lib/rt/tcms/__new + local.set $0 + end + i32.const 67108864 + i32.const 14 + call $~lib/rt/tcms/__new + local.tee $2 + i32.const 0 + i32.const 67108864 + memory.fill + local.get $0 + local.get $2 + i32.store + local.get $0 + global.set $src/index/flags + global.get $src/index/flags + local.set $0 + i32.const 48 + i32.const 15 + call $~lib/rt/tcms/__new + local.tee $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=12 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 0 + i32.store offset=20 + local.get $2 + i32.const 0 + i32.store offset=24 + local.get $2 + i32.const 0 + i32.store offset=28 + local.get $2 + i32.const 0 + i32.store offset=32 + local.get $2 + i32.const 0 + i32.store offset=36 + local.get $2 + i32.const 0 + i32.store offset=40 + local.get $2 + i32.const 0 + i32.store offset=44 + local.get $2 + local.get $0 + i32.store + local.get $2 + i32.const 128 + i32.store offset=4 + local.get $2 + i32.const 64 + i32.store offset=12 + local.get $2 + i32.const 4096 + i32.store offset=8 + local.get $2 + i32.const 16384 + call $~lib/staticarray/StaticArray#constructor + i32.store offset=16 + i32.const 16384 + call $~lib/staticarray/StaticArray#constructor + local.set $0 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $3 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.const 99999999 + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + local.get $2 + local.get $0 + i32.store offset=20 + local.get $2 + i32.const 4096 + call $~lib/staticarray/StaticArray#constructor + i32.store offset=24 + local.get $2 + i32.const 4096 + call $~lib/staticarray/StaticArray#constructor + i32.store offset=28 + local.get $2 + global.set $src/index/pathfinder + global.get $src/index/flags + local.set $0 + i32.const 4 + i32.const 16 + call $~lib/rt/tcms/__new + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.store + local.get $1 + global.set $src/index/stepValidator + global.get $src/index/flags + local.set $0 + i32.const 4 + i32.const 17 + call $~lib/rt/tcms/__new + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.store + local.get $1 + global.set $src/index/lineValidator + global.get $src/index/flags + local.set $0 + i32.const 4 + i32.const 18 + call $~lib/rt/tcms/__new + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.store + local.get $1 + global.set $src/index/linePathFinder + global.get $src/index/stepValidator + local.set $0 + i32.const 4 + i32.const 19 + call $~lib/rt/tcms/__new + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.store + local.get $1 + global.set $src/index/naivePathfinder + ) + (func $~lib/util/number/itoa32 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.eqz + if + i32.const 2064 + return + end + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + i32.const 1 + i32.shl + local.tee $4 + select + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.tee $0 + i32.const 1 + i32.shl + local.get $4 + i32.add + i32.const 2 + call $~lib/rt/tcms/__new + local.tee $3 + local.get $4 + i32.add + local.set $5 + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if + local.get $1 + i32.const 10000 + i32.rem_u + local.set $2 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $5 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 2076 + i32.add + i64.load32_u + local.get $2 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2076 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $5 + local.get $0 + i32.const 2 + i32.sub + local.tee $0 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 2076 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $5 + local.get $0 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 2076 + i32.add + i32.load + i32.store + else + local.get $5 + local.get $0 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + local.get $4 + if + local.get $3 + i32.const 45 + i32.store16 + end + local.get $3 + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 3648 + local.set $3 + block $__inlined_func$~lib/util/string/joinStringArray$115 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $7 + i32.const 1 + i32.sub + local.tee $5 + i32.const 0 + i32.lt_s + br_if $__inlined_func$~lib/util/string/joinStringArray$115 + local.get $5 + i32.eqz + if + local.get $0 + i32.load + local.tee $3 + i32.eqz + if + i32.const 3648 + local.set $3 + end + br $__inlined_func$~lib/util/string/joinStringArray$115 + end + loop $for-loop|0 + local.get $4 + local.get $7 + i32.lt_s + if + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.add + local.set $1 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $1 + i32.const 3644 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + local.get $5 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 2 + call $~lib/rt/tcms/__new + local.set $3 + loop $for-loop|1 + local.get $5 + local.get $6 + i32.gt_s + if + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $4 + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 1 + i32.shl + memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + end + local.get $1 + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 3648 + local.get $1 + i32.const 1 + i32.shl + memory.copy + local.get $1 + local.get $2 + i32.add + local.set $2 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + memory.copy + end + end + local.get $3 + ) + (func $src/index/getCollisionStrategy (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.le_s + local.get $0 + i32.const 0 + i32.ge_s + i32.and + i32.eqz + if + i32.const 1844 + local.get $0 + call $~lib/util/number/itoa32 + i32.store + i32.const 1840 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + i32.const 3680 + i32.const 540 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $0 + if (result i32) + local.get $0 + i32.const 1 + i32.eq + if (result i32) + global.get $src/rsmod/collision/CollisionStrategies/CollisionStrategies.BLOCKED + else + local.get $0 + i32.const 2 + i32.eq + if (result i32) + global.get $src/rsmod/collision/CollisionStrategies/CollisionStrategies.INDOORS + else + global.get $src/rsmod/collision/CollisionStrategies/CollisionStrategies.OUTDOORS + global.get $src/rsmod/collision/CollisionStrategies/CollisionStrategies.LINE_OF_SIGHT + local.get $0 + i32.const 3 + i32.eq + select + end + end + else + global.get $src/rsmod/collision/CollisionStrategies/CollisionStrategies.NORMAL + end + ) + (func $src/index/findPath (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (param $11 i32) (param $12 i32) (param $13 i32) (result i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) + (local $24 i32) + (local $25 i32) + (local $26 i32) + (local $27 i32) + (local $28 i32) + (local $29 i32) + block $src/rsmod/PathFinder/PathFinder#findPath|inlined.0 (result i32) + global.get $src/index/pathfinder + local.set $15 + local.get $13 + call $src/index/getCollisionStrategy + local.set $16 + local.get $1 + i32.const 32767 + i32.le_s + local.get $1 + i32.const 0 + i32.ge_s + i32.and + local.get $2 + i32.const 0 + i32.ge_s + i32.and + local.get $2 + i32.const 32767 + i32.le_s + i32.and + i32.eqz + if + local.get $1 + call $~lib/util/number/itoa32 + local.set $0 + local.get $2 + call $~lib/util/number/itoa32 + local.set $1 + i32.const 3924 + local.get $0 + i32.store + i32.const 3932 + local.get $1 + i32.store + i32.const 3920 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + i32.const 3968 + i32.const 64 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 32767 + i32.le_s + local.get $3 + i32.const 0 + i32.ge_s + i32.and + local.get $4 + i32.const 0 + i32.ge_s + i32.and + local.get $4 + i32.const 32767 + i32.le_s + i32.and + i32.eqz + if + local.get $3 + call $~lib/util/number/itoa32 + local.set $0 + local.get $4 + call $~lib/util/number/itoa32 + local.set $1 + i32.const 4212 + local.get $0 + i32.store + i32.const 4220 + local.get $1 + i32.store + i32.const 4208 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + i32.const 3968 + i32.const 67 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.tee $13 + i32.extend8_s + local.tee $0 + i32.const 3 + i32.le_s + local.get $0 + i32.const 0 + i32.ge_s + i32.and + i32.eqz + if + i32.const 4420 + local.get $0 + call $~lib/util/number/itoa32 + i32.store + i32.const 4416 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + i32.const 3968 + i32.const 70 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $15 + i32.load offset=16 + local.set $0 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $17 + if + local.get $0 + i32.const 0 + local.get $17 + i32.const 2 + i32.shl + memory.fill + end + local.get $15 + i32.load offset=20 + local.set $0 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $17 + loop $for-loop|04 + local.get $14 + local.get $17 + i32.lt_s + if + local.get $0 + local.get $14 + i32.const 2 + i32.shl + i32.add + i32.const 99999999 + i32.store + local.get $14 + i32.const 1 + i32.add + local.set $14 + br $for-loop|04 + end + end + local.get $15 + i32.const 0 + i32.store offset=40 + local.get $15 + i32.const 0 + i32.store offset=44 + local.get $1 + local.get $1 + local.get $15 + i32.load offset=12 + local.tee $0 + i32.sub + local.tee $18 + i32.sub + local.set $14 + local.get $2 + local.get $2 + local.get $0 + i32.sub + local.tee $19 + i32.sub + local.set $17 + local.get $3 + local.get $18 + i32.sub + local.set $20 + local.get $4 + local.get $19 + i32.sub + local.set $4 + local.get $14 + local.get $15 + i32.load offset=4 + i32.mul + local.get $17 + i32.add + i32.const 2 + i32.shl + local.tee $0 + local.get $15 + i32.load offset=16 + i32.add + i32.const 99 + i32.store + local.get $0 + local.get $15 + i32.load offset=20 + i32.add + i32.const 0 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $14 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $17 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + local.get $5 + i32.const 255 + i32.and + i32.const 1 + i32.eq + if (result i32) + block $src/rsmod/PathFinder/PathFinder#findPath1|inlined.0 (result i32) + local.get $15 + i32.load offset=4 + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|0 + local.get $15 + i32.load offset=40 + local.tee $0 + local.get $15 + i32.load offset=44 + i32.ne + if + local.get $15 + local.get $15 + i32.load offset=24 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=32 + local.get $15 + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=40 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=36 + local.get $15 + local.get $15 + i32.load offset=40 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=40 + local.get $15 + i32.load + local.set $3 + i32.const 1 + local.set $0 + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.0 + local.get $19 + local.get $15 + i32.load offset=36 + i32.add + local.tee $2 + local.get $4 + local.get $19 + i32.add + local.tee $21 + i32.eq + local.tee $22 + local.get $18 + local.get $15 + i32.load offset=32 + i32.add + local.tee $23 + local.get $18 + local.get $20 + i32.add + local.tee $24 + i32.eq + block $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.0 (result i32) + i32.const 4 + local.get $9 + i32.const 255 + i32.and + local.tee $25 + i32.const 254 + i32.eq + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.0 + drop + i32.const 3 + local.get $25 + i32.const 255 + i32.eq + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.0 + drop + i32.const 0 + local.get $9 + i32.extend8_s + local.tee $26 + i32.const 3 + i32.le_s + local.get $26 + i32.const 0 + i32.ge_s + i32.and + local.get $25 + i32.const 9 + i32.eq + i32.or + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.0 + drop + i32.const 1 + local.get $26 + i32.const 9 + i32.lt_s + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.0 + drop + i32.const 2 + local.get $26 + i32.const 11 + i32.le_s + local.get $26 + i32.const 10 + i32.ge_s + i32.and + local.get $25 + i32.const 22 + i32.eq + i32.or + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.0 + drop + i32.const 3 + end + local.tee $25 + i32.const 4 + i32.ne + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.0 + local.get $25 + if + local.get $25 + i32.const 1 + i32.eq + if + local.get $23 + local.get $24 + i32.eq + local.get $5 + i32.const 255 + i32.and + local.tee $25 + i32.const 1 + i32.eq + i32.and + local.get $22 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.0 + local.get $25 + i32.const 1 + i32.ne + local.get $23 + local.get $24 + i32.le_s + i32.and + if (result i32) + local.get $5 + i32.extend8_s + local.get $23 + i32.add + i32.const 1 + i32.sub + local.get $24 + i32.ge_s + else + i32.const 0 + end + local.get $2 + local.get $21 + i32.le_s + i32.and + if (result i32) + local.get $5 + i32.extend8_s + local.get $2 + i32.add + i32.const 1 + i32.sub + local.get $21 + i32.ge_s + else + i32.const 0 + end + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.0 + local.get $13 + i32.extend8_s + local.set $0 + local.get $5 + i32.const 255 + i32.and + i32.const 1 + i32.eq + if + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.0 (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$1 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $0 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$1 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $3 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$1 + drop + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $9 + i32.const 255 + i32.and + local.tee $3 + i32.const 7 + i32.eq + local.tee $22 + local.get $3 + i32.const 6 + i32.eq + i32.or + if + local.get $8 + i32.const 2 + i32.add + i32.const 3 + i32.and + local.get $8 + local.get $22 + select + i32.extend8_s + local.tee $3 + if + local.get $3 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $23 + local.get $24 + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.0 + else + local.get $3 + i32.const 2 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.0 + else + local.get $3 + i32.const 3 + i32.eq + if + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + if + i32.const 1 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.0 + else + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.0 + drop + end + end + end + end + else + i32.const 1 + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $23 + local.get $24 + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.0 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.0 + else + local.get $9 + i32.const 255 + i32.and + i32.const 8 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.eq + local.tee $3 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $3 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.tee $2 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $2 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.0 + end + end + i32.const 0 + end + local.set $0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.0 + end + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.0 (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$2 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $0 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$2 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $3 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$2 + drop + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $5 + i32.extend8_s + local.tee $3 + local.get $23 + i32.add + i32.const 1 + i32.sub + local.set $22 + local.get $2 + local.get $3 + i32.add + i32.const 1 + i32.sub + local.set $25 + local.get $9 + i32.const 255 + i32.and + local.tee $26 + i32.const 7 + i32.eq + local.tee $27 + local.get $26 + i32.const 6 + i32.eq + i32.or + if + local.get $8 + i32.const 2 + i32.add + i32.const 3 + i32.and + local.get $8 + local.get $27 + select + i32.extend8_s + local.tee $26 + if + local.get $26 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $23 + local.get $24 + local.get $3 + i32.sub + i32.eq + local.get $2 + local.get $21 + i32.le_s + i32.and + local.get $21 + local.get $25 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $2 + local.get $21 + local.get $3 + i32.sub + i32.eq + local.get $23 + local.get $24 + i32.le_s + i32.and + local.get $22 + local.get $24 + i32.ge_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.0 + else + local.get $26 + i32.const 2 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $23 + local.get $24 + local.get $5 + i32.extend8_s + i32.sub + i32.eq + local.get $2 + local.get $21 + i32.le_s + i32.and + local.get $21 + local.get $25 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.le_s + i32.and + local.get $22 + local.get $24 + i32.ge_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.0 + else + local.get $26 + i32.const 3 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $2 + local.get $21 + i32.le_s + i32.and + local.get $21 + local.get $25 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.le_s + i32.and + local.get $22 + local.get $24 + i32.ge_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.0 + end + end + end + else + i32.const 1 + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $2 + local.get $21 + i32.le_s + i32.and + local.get $21 + local.get $25 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $2 + local.get $21 + local.get $5 + i32.extend8_s + i32.sub + i32.eq + local.get $23 + local.get $24 + i32.le_s + i32.and + local.get $22 + local.get $24 + i32.ge_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.0 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.0 + else + local.get $9 + i32.const 255 + i32.and + i32.const 8 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $22 + local.get $24 + i32.ge_s + local.tee $3 + local.get $23 + local.get $24 + i32.le_s + local.tee $22 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $3 + local.get $2 + local.get $21 + local.get $5 + i32.extend8_s + local.tee $3 + i32.sub + i32.eq + local.get $22 + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $21 + local.get $25 + i32.le_s + local.tee $22 + local.get $2 + local.get $21 + i32.le_s + local.tee $2 + local.get $23 + local.get $24 + local.get $3 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $2 + i32.and + local.get $22 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.0 + end + end + i32.const 0 + end + local.set $0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.0 + else + local.get $25 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + local.get $13 + i32.extend8_s + local.set $22 + local.get $7 + local.get $6 + local.get $8 + i32.const 1 + i32.and + local.tee $25 + select + i32.extend8_s + local.set $26 + local.get $6 + local.get $7 + local.get $25 + select + i32.extend8_s + local.set $25 + local.get $8 + i32.const 255 + i32.and + if (result i32) + local.get $11 + local.get $8 + i32.const 7 + i32.and + i32.shl + i32.const 15 + i32.and + local.get $11 + i32.extend8_s + i32.const 4 + local.get $8 + i32.sub + i32.const 7 + i32.and + i32.shr_s + i32.or + else + local.get $11 + end + i32.extend8_s + local.set $27 + local.get $5 + i32.extend8_s + local.tee $28 + local.get $23 + i32.add + local.get $24 + i32.le_s + local.get $23 + local.get $24 + local.get $26 + i32.add + i32.ge_s + i32.or + if (result i32) + i32.const 0 + else + local.get $21 + local.get $2 + local.get $28 + i32.add + i32.lt_s + local.get $2 + local.get $21 + local.get $25 + i32.add + i32.lt_s + i32.and + end + local.set $28 + local.get $5 + i32.extend8_s + i32.const 1 + i32.gt_s + if + local.get $28 + if (result i32) + i32.const 1 + else + local.get $5 + i32.extend8_s + local.tee $0 + local.get $23 + i32.add + local.set $28 + local.get $0 + local.get $2 + i32.add + local.set $0 + local.get $21 + local.get $25 + i32.add + local.set $25 + block $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.0 + local.get $27 + i32.const 2 + i32.and + i32.eqz + local.get $24 + local.get $26 + i32.add + local.tee $26 + local.get $23 + i32.eq + i32.and + if + local.get $0 + f64.convert_i32_s + local.get $25 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $23 + local.get $2 + f64.convert_i32_s + local.get $21 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $23 + i32.lt_s + if + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$3 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $26 + i32.const 1 + i32.sub + local.tee $21 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $24 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$3 + drop + i32.const -1 + local.get $21 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $21 + local.get $24 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$3 + drop + local.get $24 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 8 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.0 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + else + local.get $27 + i32.const 8 + i32.and + i32.eqz + local.get $24 + local.get $28 + i32.eq + i32.and + if + local.get $0 + f64.convert_i32_s + local.get $25 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $23 + local.get $2 + f64.convert_i32_s + local.get $21 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $0 + loop $for-loop|2 + local.get $0 + local.get $23 + i32.lt_s + if + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$4 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $24 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $21 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$4 + drop + i32.const -1 + local.get $24 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $25 + local.get $21 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$4 + drop + local.get $21 + local.get $25 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 128 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.0 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|2 + end + end + else + local.get $27 + i32.const 1 + i32.and + i32.eqz + local.get $2 + local.get $25 + i32.eq + i32.and + if + local.get $28 + f64.convert_i32_s + local.get $26 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $21 + local.get $23 + f64.convert_i32_s + local.get $24 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $0 + loop $for-loop|3 + local.get $0 + local.get $21 + i32.lt_s + if + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$5 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $25 + i32.const 1 + i32.sub + local.tee $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $24 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$5 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $23 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $23 + local.get $24 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$5 + drop + local.get $24 + local.get $23 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 2 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.0 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 + end + end + else + local.get $27 + i32.const 4 + i32.and + i32.eqz + local.get $0 + local.get $21 + i32.eq + i32.and + if + local.get $28 + f64.convert_i32_s + local.get $26 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $25 + local.get $23 + f64.convert_i32_s + local.get $24 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $0 + loop $for-loop|4 + local.get $0 + local.get $25 + i32.lt_s + if + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$6 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $21 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$6 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $21 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $24 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$6 + drop + local.get $23 + local.get $24 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 32 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.0 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 + end + end + end + end + end + end + i32.const 0 + local.set $2 + end + local.get $2 + end + local.set $0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.0 + end + local.get $28 + i32.eqz + if + block $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.0 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + local.get $2 + local.get $21 + i32.ge_s + i32.and + local.get $21 + local.get $25 + i32.add + i32.const 1 + i32.sub + local.tee $25 + local.get $2 + i32.ge_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$7 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $28 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$7 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $29 + local.get $28 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$7 + drop + local.get $28 + local.get $29 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 8 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 8 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.0 + local.get $23 + local.get $24 + local.get $26 + i32.add + i32.const 1 + i32.sub + local.tee $26 + i32.const 1 + i32.add + i32.eq + local.get $2 + local.get $21 + i32.ge_s + i32.and + local.get $2 + local.get $25 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$8 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $28 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$8 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $29 + local.get $28 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$8 + drop + local.get $28 + local.get $29 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 128 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 2 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.0 + local.get $2 + i32.const 1 + i32.add + local.get $21 + i32.eq + local.get $23 + local.get $24 + i32.ge_s + i32.and + local.get $23 + local.get $26 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$9 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $21 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$9 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $28 + local.get $21 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$9 + drop + local.get $21 + local.get $28 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 2 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 4 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.0 + local.get $2 + local.get $25 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.ge_s + i32.and + local.get $23 + local.get $26 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$10 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$10 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$10 + drop + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 32 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 1 + i32.and + i32.or + i32.eqz + local.set $0 + end + end + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.0 + else + local.get $25 + i32.const 255 + i32.and + i32.const 4 + i32.eq + if + local.get $13 + i32.extend8_s + local.set $22 + local.get $7 + local.get $6 + local.get $8 + i32.const 1 + i32.and + local.tee $25 + select + i32.extend8_s + local.set $26 + local.get $6 + local.get $7 + local.get $25 + select + i32.extend8_s + local.set $25 + local.get $8 + i32.const 255 + i32.and + if (result i32) + local.get $11 + local.get $8 + i32.const 7 + i32.and + i32.shl + i32.const 15 + i32.and + local.get $11 + i32.extend8_s + i32.const 4 + local.get $8 + i32.sub + i32.const 7 + i32.and + i32.shr_s + i32.or + else + local.get $11 + end + i32.extend8_s + local.set $27 + local.get $5 + i32.extend8_s + local.tee $28 + local.get $23 + i32.add + local.get $24 + i32.le_s + local.get $23 + local.get $24 + local.get $26 + i32.add + i32.ge_s + i32.or + if (result i32) + i32.const 0 + else + local.get $21 + local.get $2 + local.get $28 + i32.add + i32.lt_s + local.get $2 + local.get $21 + local.get $25 + i32.add + i32.lt_s + i32.and + end + local.set $28 + local.get $5 + i32.extend8_s + i32.const 1 + i32.gt_s + if + local.get $28 + if (result i32) + i32.const 0 + else + local.get $5 + i32.extend8_s + local.tee $0 + local.get $23 + i32.add + local.set $28 + local.get $0 + local.get $2 + i32.add + local.set $0 + local.get $21 + local.get $25 + i32.add + local.set $25 + block $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.1 + local.get $27 + i32.const 2 + i32.and + i32.eqz + local.get $24 + local.get $26 + i32.add + local.tee $26 + local.get $23 + i32.eq + i32.and + if + local.get $0 + f64.convert_i32_s + local.get $25 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $23 + local.get $2 + f64.convert_i32_s + local.get $21 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $0 + loop $for-loop|5 + local.get $0 + local.get $23 + i32.lt_s + if + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$11 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $26 + i32.const 1 + i32.sub + local.tee $21 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $24 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$11 + drop + i32.const -1 + local.get $21 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $21 + local.get $24 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$11 + drop + local.get $24 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 8 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|5 + end + end + else + local.get $27 + i32.const 8 + i32.and + i32.eqz + local.get $24 + local.get $28 + i32.eq + i32.and + if + local.get $0 + f64.convert_i32_s + local.get $25 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $23 + local.get $2 + f64.convert_i32_s + local.get $21 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $0 + loop $for-loop|6 + local.get $0 + local.get $23 + i32.lt_s + if + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$12 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $24 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $21 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$12 + drop + i32.const -1 + local.get $24 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $25 + local.get $21 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$12 + drop + local.get $21 + local.get $25 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 128 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|6 + end + end + else + local.get $27 + i32.const 1 + i32.and + i32.eqz + local.get $2 + local.get $25 + i32.eq + i32.and + if + local.get $28 + f64.convert_i32_s + local.get $26 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $21 + local.get $23 + f64.convert_i32_s + local.get $24 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $0 + loop $for-loop|7 + local.get $0 + local.get $21 + i32.lt_s + if + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$13 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $25 + i32.const 1 + i32.sub + local.tee $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $24 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$13 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $23 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $23 + local.get $24 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$13 + drop + local.get $24 + local.get $23 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 2 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|7 + end + end + else + local.get $27 + i32.const 4 + i32.and + i32.eqz + local.get $0 + local.get $21 + i32.eq + i32.and + if + local.get $28 + f64.convert_i32_s + local.get $26 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $25 + local.get $23 + f64.convert_i32_s + local.get $24 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $0 + loop $for-loop|8 + local.get $0 + local.get $25 + i32.lt_s + if + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$14 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $21 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$14 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $21 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $24 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$14 + drop + local.get $23 + local.get $24 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 32 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|8 + end + end + end + end + end + end + i32.const 0 + local.set $2 + end + local.get $2 + end + local.set $0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.0 + end + local.get $28 + if + i32.const 0 + local.set $0 + else + block $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.1 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + local.get $2 + local.get $21 + i32.ge_s + i32.and + local.get $21 + local.get $25 + i32.add + i32.const 1 + i32.sub + local.tee $25 + local.get $2 + i32.ge_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$15 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $28 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$15 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $29 + local.get $28 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$15 + drop + local.get $28 + local.get $29 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 8 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 8 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.1 + local.get $23 + local.get $24 + local.get $26 + i32.add + i32.const 1 + i32.sub + local.tee $26 + i32.const 1 + i32.add + i32.eq + local.get $2 + local.get $21 + i32.ge_s + i32.and + local.get $2 + local.get $25 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$16 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $28 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$16 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $29 + local.get $28 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$16 + drop + local.get $28 + local.get $29 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 128 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 2 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.1 + local.get $2 + i32.const 1 + i32.add + local.get $21 + i32.eq + local.get $23 + local.get $24 + i32.ge_s + i32.and + local.get $23 + local.get $26 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$17 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $21 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$17 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $28 + local.get $21 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$17 + drop + local.get $21 + local.get $28 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 2 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 4 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.1 + local.get $2 + local.get $25 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.ge_s + i32.and + local.get $23 + local.get $26 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$18 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$18 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$18 + drop + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 32 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 1 + i32.and + i32.or + i32.eqz + local.set $0 + end + end + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.0 + end + end + end + else + local.get $23 + local.get $24 + i32.eq + local.get $5 + i32.const 255 + i32.and + local.tee $22 + i32.const 1 + i32.eq + i32.and + local.get $2 + local.get $21 + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.0 + local.get $22 + i32.const 1 + i32.ne + local.get $23 + local.get $24 + i32.le_s + i32.and + if (result i32) + local.get $5 + i32.extend8_s + local.get $23 + i32.add + i32.const 1 + i32.sub + local.get $24 + i32.ge_s + else + i32.const 0 + end + local.get $2 + local.get $21 + i32.le_s + i32.and + if (result i32) + local.get $5 + i32.extend8_s + local.get $2 + i32.add + i32.const 1 + i32.sub + local.get $21 + i32.ge_s + else + i32.const 0 + end + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.0 + local.get $13 + i32.extend8_s + local.set $0 + local.get $5 + i32.const 255 + i32.and + i32.const 1 + i32.eq + if + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$19 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $0 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$19 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $3 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$19 + drop + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $9 + i32.const 255 + i32.and + local.tee $3 + if + local.get $3 + i32.const 2 + i32.eq + if + local.get $8 + i32.const 255 + i32.and + local.tee $3 + if + local.get $3 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.tee $3 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $23 + local.get $24 + i32.eq + local.tee $22 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $3 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $22 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + else + local.get $8 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.tee $3 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.eq + local.tee $0 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $3 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $0 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + else + local.get $8 + i32.const 255 + i32.and + i32.const 3 + i32.eq + if + i32.const 1 + local.get $2 + local.get $21 + i32.eq + local.tee $3 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.eq + local.tee $22 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $3 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $22 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + end + end + end + else + i32.const 1 + local.get $2 + local.get $21 + i32.eq + local.tee $3 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $23 + local.get $24 + i32.eq + local.tee $22 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $3 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $22 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + else + local.get $9 + i32.const 255 + i32.and + i32.const 9 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.eq + local.tee $3 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $3 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.tee $2 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $2 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + end + end + else + local.get $8 + i32.const 255 + i32.and + local.tee $3 + if + local.get $3 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.tee $2 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $2 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + else + local.get $8 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + i32.const 1 + local.get $2 + local.get $21 + i32.eq + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.eq + local.tee $3 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $3 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + else + local.get $8 + i32.const 255 + i32.and + i32.const 3 + i32.eq + if + i32.const 1 + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $23 + local.get $24 + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.tee $2 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $2 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + end + end + end + else + i32.const 1 + local.get $2 + local.get $21 + i32.eq + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.eq + local.tee $3 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $3 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.0 + end + i32.const 0 + end + local.set $0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.0 + end + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$20 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $0 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$20 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $3 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$20 + drop + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $5 + i32.extend8_s + local.tee $3 + local.get $23 + i32.add + i32.const 1 + i32.sub + local.set $22 + local.get $2 + local.get $3 + i32.add + i32.const 1 + i32.sub + local.set $25 + local.get $9 + i32.const 255 + i32.and + local.tee $26 + if + local.get $26 + i32.const 2 + i32.eq + if + local.get $8 + i32.const 255 + i32.and + local.tee $26 + if + local.get $26 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $21 + local.get $25 + i32.le_s + local.tee $25 + local.get $2 + local.get $21 + i32.le_s + local.tee $26 + local.get $23 + local.get $24 + local.get $3 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $22 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $26 + i32.and + local.get $25 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $22 + local.get $2 + local.get $21 + local.get $3 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + else + local.get $8 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $21 + local.get $25 + i32.le_s + local.tee $3 + local.get $2 + local.get $21 + i32.le_s + local.tee $25 + local.get $23 + local.get $24 + local.get $5 + i32.extend8_s + local.tee $26 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $0 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $25 + i32.and + local.get $3 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $0 + local.get $2 + local.get $21 + local.get $26 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + else + local.get $8 + i32.const 255 + i32.and + i32.const 3 + i32.eq + if + i32.const 1 + local.get $21 + local.get $25 + i32.le_s + local.tee $3 + local.get $2 + local.get $21 + i32.le_s + local.tee $25 + local.get $23 + local.get $24 + local.get $5 + i32.extend8_s + local.tee $26 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $22 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $25 + i32.and + local.get $3 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $22 + local.get $2 + local.get $21 + local.get $26 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + end + end + end + else + i32.const 1 + local.get $21 + local.get $25 + i32.le_s + local.tee $3 + local.get $2 + local.get $21 + i32.le_s + local.tee $25 + local.get $23 + local.get $24 + local.get $5 + i32.extend8_s + local.tee $26 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $22 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $25 + i32.and + local.get $3 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $22 + local.get $2 + local.get $21 + local.get $26 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + else + local.get $9 + i32.const 255 + i32.and + i32.const 9 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $3 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $3 + local.get $2 + local.get $21 + local.get $5 + i32.extend8_s + local.tee $3 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $21 + local.get $25 + i32.le_s + local.tee $22 + local.get $2 + local.get $21 + i32.le_s + local.tee $2 + local.get $23 + local.get $24 + local.get $3 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $2 + i32.and + local.get $22 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + end + end + else + local.get $8 + i32.const 255 + i32.and + local.tee $3 + if + local.get $3 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $21 + local.get $25 + i32.le_s + local.tee $3 + local.get $2 + local.get $21 + i32.le_s + local.tee $2 + local.get $23 + local.get $24 + local.get $5 + i32.extend8_s + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $2 + i32.and + local.get $3 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + else + local.get $8 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + i32.const 1 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $2 + local.get $21 + i32.le_s + i32.and + local.get $21 + local.get $25 + i32.le_s + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $3 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $3 + local.get $2 + local.get $21 + local.get $5 + i32.extend8_s + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + else + local.get $8 + i32.const 255 + i32.and + i32.const 3 + i32.eq + if + i32.const 1 + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.get $2 + local.get $21 + local.get $5 + i32.extend8_s + local.tee $3 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $21 + local.get $25 + i32.le_s + local.tee $22 + local.get $2 + local.get $21 + i32.le_s + local.tee $2 + local.get $23 + local.get $24 + local.get $3 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $2 + i32.and + local.get $22 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + end + end + end + else + i32.const 1 + local.get $23 + local.get $24 + local.get $5 + i32.extend8_s + local.tee $3 + i32.sub + i32.eq + local.get $2 + local.get $21 + i32.le_s + i32.and + local.get $21 + local.get $25 + i32.le_s + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $22 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $22 + local.get $2 + local.get $21 + local.get $3 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.0 + end + i32.const 0 + end + local.set $0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.0 + end + i32.const 0 + local.set $0 + end + i32.const 1 + local.get $0 + br_if $src/rsmod/PathFinder/PathFinder#findPath1|inlined.0 + drop + local.get $15 + i32.load offset=20 + local.get $15 + i32.load offset=36 + local.tee $2 + local.get $15 + i32.load offset=32 + local.tee $0 + local.get $15 + i32.load offset=4 + local.tee $3 + i32.mul + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.set $21 + local.get $0 + i32.const 1 + i32.sub + local.set $22 + local.get $0 + i32.const 0 + i32.gt_s + if (result i32) + local.get $15 + i32.load offset=16 + local.get $3 + local.get $22 + i32.mul + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $0 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$22 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$21 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $18 + local.get $22 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + local.get $19 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$21 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$21 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default + block $case4 + block $case3 + block $case2 + block $case1 + block $case0 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case0 $case1 $case2 $case3 $case4 $default + end + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$22 + end + local.get $0 + i32.const 262408 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$22 + end + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$22 + end + local.get $0 + i32.const -2145124088 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$22 + end + local.get $0 + i32.const 135168 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$22 + end + unreachable + end + end + local.get $0 + if + local.get $22 + local.get $15 + i32.load offset=4 + i32.mul + local.get $2 + i32.add + i32.const 2 + i32.shl + local.tee $0 + local.get $15 + i32.load offset=16 + i32.add + i32.const 2 + i32.store + local.get $0 + local.get $15 + i32.load offset=20 + i32.add + local.get $21 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $22 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + local.get $15 + i32.load offset=32 + local.tee $0 + i32.const 1 + i32.add + local.set $2 + local.get $15 + i32.load offset=36 + local.set $3 + local.get $0 + local.get $1 + i32.lt_s + if (result i32) + local.get $15 + i32.load offset=16 + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $0 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$24 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$23 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + local.get $19 + i32.add + local.tee $22 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$23 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $22 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$23 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default0 + block $case41 + block $case32 + block $case23 + block $case14 + block $case05 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case05 $case14 $case23 $case32 $case41 $default0 + end + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$24 + end + local.get $0 + i32.const 262528 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$24 + end + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$24 + end + local.get $0 + i32.const -2145123968 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$24 + end + local.get $0 + i32.const 196608 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$24 + end + unreachable + end + end + local.get $0 + if + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $3 + i32.add + i32.const 2 + i32.shl + local.tee $0 + local.get $15 + i32.load offset=16 + i32.add + i32.const 8 + i32.store + local.get $0 + local.get $15 + i32.load offset=20 + i32.add + local.get $21 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + local.get $15 + i32.load offset=32 + local.set $2 + local.get $15 + i32.load offset=36 + local.tee $0 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + i32.const 0 + i32.gt_s + if (result i32) + local.get $15 + i32.load offset=16 + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $0 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$26 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$25 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + local.get $19 + i32.add + local.tee $22 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$25 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $22 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$25 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default1 + block $case42 + block $case33 + block $case24 + block $case15 + block $case06 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case06 $case15 $case24 $case33 $case42 $default1 + end + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$26 + end + local.get $0 + i32.const 262402 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$26 + end + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$26 + end + local.get $0 + i32.const -2145124094 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$26 + end + local.get $0 + i32.const 132096 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$26 + end + unreachable + end + end + local.get $0 + if + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $3 + i32.add + i32.const 2 + i32.shl + local.tee $0 + local.get $15 + i32.load offset=16 + i32.add + i32.const 1 + i32.store + local.get $0 + local.get $15 + i32.load offset=20 + i32.add + local.get $21 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + local.get $15 + i32.load offset=32 + local.set $2 + local.get $15 + i32.load offset=36 + local.tee $0 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $1 + i32.lt_s + if (result i32) + local.get $15 + i32.load offset=16 + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $0 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$28 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$27 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + local.get $19 + i32.add + local.tee $22 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$27 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $22 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$27 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default2 + block $case43 + block $case34 + block $case25 + block $case16 + block $case07 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case07 $case16 $case25 $case34 $case43 $default2 + end + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$28 + end + local.get $0 + i32.const 262432 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$28 + end + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$28 + end + local.get $0 + i32.const -2145124064 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$28 + end + local.get $0 + i32.const 147456 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$28 + end + unreachable + end + end + local.get $0 + if + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $3 + i32.add + i32.const 2 + i32.shl + local.tee $0 + local.get $15 + i32.load offset=16 + i32.add + i32.const 4 + i32.store + local.get $0 + local.get $15 + i32.load offset=20 + i32.add + local.get $21 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + local.get $15 + i32.load offset=32 + local.tee $0 + i32.const 1 + i32.sub + local.set $2 + local.get $15 + i32.load offset=36 + local.tee $3 + i32.const 1 + i32.sub + local.set $22 + local.get $3 + i32.const 0 + i32.gt_s + local.get $0 + i32.const 0 + i32.gt_s + i32.and + if (result i32) + local.get $15 + i32.load offset=16 + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $22 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $0 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$30 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$29 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $22 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$29 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$29 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default3 + block $case44 + block $case35 + block $case26 + block $case17 + block $case08 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case08 $case17 $case26 $case35 $case44 $default3 + end + local.get $0 + i32.const 2359566 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$30 + end + local.get $0 + i32.const 262414 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$30 + end + local.get $0 + i32.const 2359566 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$30 + end + local.get $0 + i32.const -2145124082 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$30 + end + local.get $0 + i32.const 138240 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$30 + end + unreachable + end + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$32 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$31 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + local.get $19 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$31 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$31 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default4 + block $case45 + block $case36 + block $case27 + block $case18 + block $case09 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case09 $case18 $case27 $case36 $case45 $default4 + end + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$32 + end + local.get $0 + i32.const 262408 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$32 + end + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$32 + end + local.get $0 + i32.const -2145124088 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$32 + end + local.get $0 + i32.const 135168 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$32 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$34 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$33 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $22 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$33 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$33 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default5 + block $case46 + block $case37 + block $case28 + block $case19 + block $case010 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case010 $case19 $case28 $case37 $case46 $default5 + end + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$34 + end + local.get $0 + i32.const 262402 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$34 + end + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$34 + end + local.get $0 + i32.const -2145124094 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$34 + end + local.get $0 + i32.const 132096 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$34 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $22 + i32.add + i32.const 2 + i32.shl + local.tee $0 + local.get $15 + i32.load offset=16 + i32.add + i32.const 3 + i32.store + local.get $0 + local.get $15 + i32.load offset=20 + i32.add + local.get $21 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $22 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + local.get $15 + i32.load offset=32 + local.tee $0 + i32.const 1 + i32.add + local.set $2 + local.get $15 + i32.load offset=36 + local.tee $3 + i32.const 1 + i32.sub + local.set $22 + local.get $0 + local.get $1 + i32.lt_s + local.get $3 + i32.const 0 + i32.gt_s + i32.and + if (result i32) + local.get $15 + i32.load offset=16 + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $22 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $0 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$36 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$35 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $22 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$35 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$35 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default6 + block $case47 + block $case38 + block $case29 + block $case110 + block $case011 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case011 $case110 $case29 $case38 $case47 $default6 + end + local.get $0 + i32.const 2359683 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$36 + end + local.get $0 + i32.const 262531 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$36 + end + local.get $0 + i32.const 2359683 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$36 + end + local.get $0 + i32.const -2145123965 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$36 + end + local.get $0 + i32.const 198144 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$36 + end + unreachable + end + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$38 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$37 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + local.get $19 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$37 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$37 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default7 + block $case48 + block $case39 + block $case210 + block $case111 + block $case012 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case012 $case111 $case210 $case39 $case48 $default7 + end + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$38 + end + local.get $0 + i32.const 262528 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$38 + end + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$38 + end + local.get $0 + i32.const -2145123968 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$38 + end + local.get $0 + i32.const 196608 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$38 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$40 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$39 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $22 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$39 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$39 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default8 + block $case49 + block $case310 + block $case211 + block $case112 + block $case013 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case013 $case112 $case211 $case310 $case49 $default8 + end + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$40 + end + local.get $0 + i32.const 262402 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$40 + end + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$40 + end + local.get $0 + i32.const -2145124094 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$40 + end + local.get $0 + i32.const 132096 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$40 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $22 + i32.add + i32.const 2 + i32.shl + local.tee $0 + local.get $15 + i32.load offset=16 + i32.add + i32.const 9 + i32.store + local.get $0 + local.get $15 + i32.load offset=20 + i32.add + local.get $21 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $22 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + local.get $15 + i32.load offset=32 + local.tee $0 + i32.const 1 + i32.sub + local.set $2 + local.get $15 + i32.load offset=36 + local.tee $3 + i32.const 1 + i32.add + local.set $22 + local.get $1 + local.get $3 + i32.gt_s + local.get $0 + i32.const 0 + i32.gt_s + i32.and + if (result i32) + local.get $15 + i32.load offset=16 + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $22 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $0 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$42 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$41 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $22 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$41 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$41 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default9 + block $case410 + block $case311 + block $case212 + block $case113 + block $case014 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case014 $case113 $case212 $case311 $case410 $default9 + end + local.get $0 + i32.const 2359608 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$42 + end + local.get $0 + i32.const 262456 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$42 + end + local.get $0 + i32.const 2359608 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$42 + end + local.get $0 + i32.const -2145124040 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$42 + end + local.get $0 + i32.const 159744 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$42 + end + unreachable + end + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$44 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$43 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + local.get $19 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$43 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$43 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default10 + block $case411 + block $case312 + block $case213 + block $case114 + block $case015 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case015 $case114 $case213 $case312 $case411 $default10 + end + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$44 + end + local.get $0 + i32.const 262408 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$44 + end + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$44 + end + local.get $0 + i32.const -2145124088 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$44 + end + local.get $0 + i32.const 135168 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$44 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$46 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$45 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $22 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$45 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$45 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default11 + block $case412 + block $case313 + block $case214 + block $case115 + block $case016 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case016 $case115 $case214 $case313 $case412 $default11 + end + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$46 + end + local.get $0 + i32.const 262432 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$46 + end + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$46 + end + local.get $0 + i32.const -2145124064 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$46 + end + local.get $0 + i32.const 147456 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$46 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $22 + i32.add + i32.const 2 + i32.shl + local.tee $0 + local.get $15 + i32.load offset=16 + i32.add + i32.const 6 + i32.store + local.get $0 + local.get $15 + i32.load offset=20 + i32.add + local.get $21 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $22 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + local.get $15 + i32.load offset=32 + local.tee $0 + i32.const 1 + i32.add + local.set $2 + local.get $15 + i32.load offset=36 + local.tee $3 + i32.const 1 + i32.add + local.set $22 + local.get $0 + local.get $1 + i32.lt_s + local.get $1 + local.get $3 + i32.gt_s + i32.and + if (result i32) + local.get $15 + i32.load offset=16 + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $22 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $0 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$48 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$47 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $22 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$47 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$47 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default12 + block $case413 + block $case314 + block $case215 + block $case116 + block $case017 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case017 $case116 $case215 $case314 $case413 $default12 + end + local.get $0 + i32.const 2359776 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$48 + end + local.get $0 + i32.const 262624 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$48 + end + local.get $0 + i32.const 2359776 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$48 + end + local.get $0 + i32.const -2145123872 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$48 + end + local.get $0 + i32.const 245760 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$48 + end + unreachable + end + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$50 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$49 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + local.get $19 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$49 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$49 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default13 + block $case414 + block $case315 + block $case216 + block $case117 + block $case018 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case018 $case117 $case216 $case315 $case414 $default13 + end + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$50 + end + local.get $0 + i32.const 262528 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$50 + end + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$50 + end + local.get $0 + i32.const -2145123968 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$50 + end + local.get $0 + i32.const 196608 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$50 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$52 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$51 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $22 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$51 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$51 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default14 + block $case415 + block $case316 + block $case217 + block $case118 + block $case019 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case019 $case118 $case217 $case316 $case415 $default14 + end + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$52 + end + local.get $0 + i32.const 262432 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$52 + end + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$52 + end + local.get $0 + i32.const -2145124064 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$52 + end + local.get $0 + i32.const 147456 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$52 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $22 + i32.add + i32.const 2 + i32.shl + local.tee $0 + local.get $15 + i32.load offset=16 + i32.add + i32.const 12 + i32.store + local.get $0 + local.get $15 + i32.load offset=20 + i32.add + local.get $21 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $22 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + br $while-continue|0 + end + end + i32.const 0 + end + else + local.get $5 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if (result i32) + block $src/rsmod/PathFinder/PathFinder#findPath2|inlined.0 (result i32) + local.get $15 + i32.load offset=4 + i32.const 2 + i32.sub + local.set $1 + loop $while-continue|9 + local.get $15 + i32.load offset=40 + local.tee $0 + local.get $15 + i32.load offset=44 + i32.ne + if + local.get $15 + local.get $15 + i32.load offset=24 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=32 + local.get $15 + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=40 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=36 + local.get $15 + local.get $15 + i32.load offset=40 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=40 + local.get $15 + i32.load + local.set $3 + i32.const 1 + local.set $0 + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.1 + local.get $19 + local.get $15 + i32.load offset=36 + i32.add + local.tee $2 + local.get $4 + local.get $19 + i32.add + local.tee $21 + i32.eq + local.tee $22 + local.get $18 + local.get $15 + i32.load offset=32 + i32.add + local.tee $23 + local.get $18 + local.get $20 + i32.add + local.tee $24 + i32.eq + block $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.1 (result i32) + i32.const 4 + local.get $9 + i32.const 255 + i32.and + local.tee $25 + i32.const 254 + i32.eq + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.1 + drop + i32.const 3 + local.get $25 + i32.const 255 + i32.eq + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.1 + drop + i32.const 0 + local.get $9 + i32.extend8_s + local.tee $26 + i32.const 3 + i32.le_s + local.get $26 + i32.const 0 + i32.ge_s + i32.and + local.get $25 + i32.const 9 + i32.eq + i32.or + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.1 + drop + i32.const 1 + local.get $26 + i32.const 9 + i32.lt_s + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.1 + drop + i32.const 2 + local.get $26 + i32.const 11 + i32.le_s + local.get $26 + i32.const 10 + i32.ge_s + i32.and + local.get $25 + i32.const 22 + i32.eq + i32.or + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.1 + drop + i32.const 3 + end + local.tee $25 + i32.const 4 + i32.ne + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.1 + local.get $25 + if + local.get $25 + i32.const 1 + i32.eq + if + local.get $23 + local.get $24 + i32.eq + local.get $5 + i32.const 255 + i32.and + local.tee $25 + i32.const 1 + i32.eq + i32.and + local.get $22 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.1 + local.get $25 + i32.const 1 + i32.ne + local.get $23 + local.get $24 + i32.le_s + i32.and + if (result i32) + local.get $5 + i32.extend8_s + local.get $23 + i32.add + i32.const 1 + i32.sub + local.get $24 + i32.ge_s + else + i32.const 0 + end + local.get $2 + local.get $21 + i32.le_s + i32.and + if (result i32) + local.get $5 + i32.extend8_s + local.get $2 + i32.add + i32.const 1 + i32.sub + local.get $21 + i32.ge_s + else + i32.const 0 + end + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.1 + local.get $13 + i32.extend8_s + local.set $0 + local.get $5 + i32.const 255 + i32.and + i32.const 1 + i32.eq + if + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.1 (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$53 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $0 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$53 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $3 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$53 + drop + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $9 + i32.const 255 + i32.and + local.tee $3 + i32.const 7 + i32.eq + local.tee $22 + local.get $3 + i32.const 6 + i32.eq + i32.or + if + local.get $8 + i32.const 2 + i32.add + i32.const 3 + i32.and + local.get $8 + local.get $22 + select + i32.extend8_s + local.tee $3 + if + local.get $3 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $23 + local.get $24 + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.1 + else + local.get $3 + i32.const 2 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.1 + else + local.get $3 + i32.const 3 + i32.eq + if + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + if + i32.const 1 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.1 + else + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.1 + drop + end + end + end + end + else + i32.const 1 + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $23 + local.get $24 + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.1 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.1 + else + local.get $9 + i32.const 255 + i32.and + i32.const 8 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.eq + local.tee $3 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $3 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.tee $2 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $2 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.1 + end + end + i32.const 0 + end + local.set $0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.1 + end + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.1 (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$54 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $0 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$54 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $3 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$54 + drop + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $5 + i32.extend8_s + local.tee $3 + local.get $23 + i32.add + i32.const 1 + i32.sub + local.set $22 + local.get $2 + local.get $3 + i32.add + i32.const 1 + i32.sub + local.set $25 + local.get $9 + i32.const 255 + i32.and + local.tee $26 + i32.const 7 + i32.eq + local.tee $27 + local.get $26 + i32.const 6 + i32.eq + i32.or + if + local.get $8 + i32.const 2 + i32.add + i32.const 3 + i32.and + local.get $8 + local.get $27 + select + i32.extend8_s + local.tee $26 + if + local.get $26 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $23 + local.get $24 + local.get $3 + i32.sub + i32.eq + local.get $2 + local.get $21 + i32.le_s + i32.and + local.get $21 + local.get $25 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $2 + local.get $21 + local.get $3 + i32.sub + i32.eq + local.get $23 + local.get $24 + i32.le_s + i32.and + local.get $22 + local.get $24 + i32.ge_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.1 + else + local.get $26 + i32.const 2 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $23 + local.get $24 + local.get $5 + i32.extend8_s + i32.sub + i32.eq + local.get $2 + local.get $21 + i32.le_s + i32.and + local.get $21 + local.get $25 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.le_s + i32.and + local.get $22 + local.get $24 + i32.ge_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.1 + else + local.get $26 + i32.const 3 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $2 + local.get $21 + i32.le_s + i32.and + local.get $21 + local.get $25 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.le_s + i32.and + local.get $22 + local.get $24 + i32.ge_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.1 + end + end + end + else + i32.const 1 + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $2 + local.get $21 + i32.le_s + i32.and + local.get $21 + local.get $25 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $2 + local.get $21 + local.get $5 + i32.extend8_s + i32.sub + i32.eq + local.get $23 + local.get $24 + i32.le_s + i32.and + local.get $22 + local.get $24 + i32.ge_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.1 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.1 + else + local.get $9 + i32.const 255 + i32.and + i32.const 8 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $22 + local.get $24 + i32.ge_s + local.tee $3 + local.get $23 + local.get $24 + i32.le_s + local.tee $22 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $3 + local.get $2 + local.get $21 + local.get $5 + i32.extend8_s + local.tee $3 + i32.sub + i32.eq + local.get $22 + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $21 + local.get $25 + i32.le_s + local.tee $22 + local.get $2 + local.get $21 + i32.le_s + local.tee $2 + local.get $23 + local.get $24 + local.get $3 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $2 + i32.and + local.get $22 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.1 + end + end + i32.const 0 + end + local.set $0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.1 + else + local.get $25 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + local.get $13 + i32.extend8_s + local.set $22 + local.get $7 + local.get $6 + local.get $8 + i32.const 1 + i32.and + local.tee $25 + select + i32.extend8_s + local.set $26 + local.get $6 + local.get $7 + local.get $25 + select + i32.extend8_s + local.set $25 + local.get $8 + i32.const 255 + i32.and + if (result i32) + local.get $11 + local.get $8 + i32.const 7 + i32.and + i32.shl + i32.const 15 + i32.and + local.get $11 + i32.extend8_s + i32.const 4 + local.get $8 + i32.sub + i32.const 7 + i32.and + i32.shr_s + i32.or + else + local.get $11 + end + i32.extend8_s + local.set $27 + local.get $5 + i32.extend8_s + local.tee $28 + local.get $23 + i32.add + local.get $24 + i32.le_s + local.get $23 + local.get $24 + local.get $26 + i32.add + i32.ge_s + i32.or + if (result i32) + i32.const 0 + else + local.get $21 + local.get $2 + local.get $28 + i32.add + i32.lt_s + local.get $2 + local.get $21 + local.get $25 + i32.add + i32.lt_s + i32.and + end + local.set $28 + local.get $5 + i32.extend8_s + i32.const 1 + i32.gt_s + if + local.get $28 + if (result i32) + i32.const 1 + else + local.get $5 + i32.extend8_s + local.tee $0 + local.get $23 + i32.add + local.set $28 + local.get $0 + local.get $2 + i32.add + local.set $0 + local.get $21 + local.get $25 + i32.add + local.set $25 + block $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.2 + local.get $27 + i32.const 2 + i32.and + i32.eqz + local.get $24 + local.get $26 + i32.add + local.tee $26 + local.get $23 + i32.eq + i32.and + if + local.get $0 + f64.convert_i32_s + local.get $25 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $23 + local.get $2 + f64.convert_i32_s + local.get $21 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $0 + loop $for-loop|10 + local.get $0 + local.get $23 + i32.lt_s + if + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$55 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $26 + i32.const 1 + i32.sub + local.tee $21 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $24 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$55 + drop + i32.const -1 + local.get $21 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $21 + local.get $24 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$55 + drop + local.get $24 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 8 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.2 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|10 + end + end + else + local.get $27 + i32.const 8 + i32.and + i32.eqz + local.get $24 + local.get $28 + i32.eq + i32.and + if + local.get $0 + f64.convert_i32_s + local.get $25 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $23 + local.get $2 + f64.convert_i32_s + local.get $21 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $0 + loop $for-loop|11 + local.get $0 + local.get $23 + i32.lt_s + if + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$56 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $24 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $21 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$56 + drop + i32.const -1 + local.get $24 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $25 + local.get $21 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$56 + drop + local.get $21 + local.get $25 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 128 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.2 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|11 + end + end + else + local.get $27 + i32.const 1 + i32.and + i32.eqz + local.get $2 + local.get $25 + i32.eq + i32.and + if + local.get $28 + f64.convert_i32_s + local.get $26 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $21 + local.get $23 + f64.convert_i32_s + local.get $24 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $0 + loop $for-loop|12 + local.get $0 + local.get $21 + i32.lt_s + if + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$57 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $25 + i32.const 1 + i32.sub + local.tee $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $24 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$57 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $23 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $23 + local.get $24 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$57 + drop + local.get $24 + local.get $23 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 2 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.2 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|12 + end + end + else + local.get $27 + i32.const 4 + i32.and + i32.eqz + local.get $0 + local.get $21 + i32.eq + i32.and + if + local.get $28 + f64.convert_i32_s + local.get $26 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $25 + local.get $23 + f64.convert_i32_s + local.get $24 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $0 + loop $for-loop|13 + local.get $0 + local.get $25 + i32.lt_s + if + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$58 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $21 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$58 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $21 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $24 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$58 + drop + local.get $23 + local.get $24 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 32 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.2 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|13 + end + end + end + end + end + end + i32.const 0 + local.set $2 + end + local.get $2 + end + local.set $0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.1 + end + local.get $28 + i32.eqz + if + block $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.2 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + local.get $2 + local.get $21 + i32.ge_s + i32.and + local.get $21 + local.get $25 + i32.add + i32.const 1 + i32.sub + local.tee $25 + local.get $2 + i32.ge_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$59 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $28 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$59 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $29 + local.get $28 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$59 + drop + local.get $28 + local.get $29 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 8 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 8 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.2 + local.get $23 + local.get $24 + local.get $26 + i32.add + i32.const 1 + i32.sub + local.tee $26 + i32.const 1 + i32.add + i32.eq + local.get $2 + local.get $21 + i32.ge_s + i32.and + local.get $2 + local.get $25 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$60 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $28 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$60 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $29 + local.get $28 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$60 + drop + local.get $28 + local.get $29 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 128 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 2 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.2 + local.get $2 + i32.const 1 + i32.add + local.get $21 + i32.eq + local.get $23 + local.get $24 + i32.ge_s + i32.and + local.get $23 + local.get $26 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$61 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $21 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$61 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $28 + local.get $21 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$61 + drop + local.get $21 + local.get $28 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 2 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 4 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.2 + local.get $2 + local.get $25 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.ge_s + i32.and + local.get $23 + local.get $26 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$62 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$62 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$62 + drop + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 32 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 1 + i32.and + i32.or + i32.eqz + local.set $0 + end + end + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.1 + else + local.get $25 + i32.const 255 + i32.and + i32.const 4 + i32.eq + if + local.get $13 + i32.extend8_s + local.set $22 + local.get $7 + local.get $6 + local.get $8 + i32.const 1 + i32.and + local.tee $25 + select + i32.extend8_s + local.set $26 + local.get $6 + local.get $7 + local.get $25 + select + i32.extend8_s + local.set $25 + local.get $8 + i32.const 255 + i32.and + if (result i32) + local.get $11 + local.get $8 + i32.const 7 + i32.and + i32.shl + i32.const 15 + i32.and + local.get $11 + i32.extend8_s + i32.const 4 + local.get $8 + i32.sub + i32.const 7 + i32.and + i32.shr_s + i32.or + else + local.get $11 + end + i32.extend8_s + local.set $27 + local.get $5 + i32.extend8_s + local.tee $28 + local.get $23 + i32.add + local.get $24 + i32.le_s + local.get $23 + local.get $24 + local.get $26 + i32.add + i32.ge_s + i32.or + if (result i32) + i32.const 0 + else + local.get $21 + local.get $2 + local.get $28 + i32.add + i32.lt_s + local.get $2 + local.get $21 + local.get $25 + i32.add + i32.lt_s + i32.and + end + local.set $28 + local.get $5 + i32.extend8_s + i32.const 1 + i32.gt_s + if + local.get $28 + if (result i32) + i32.const 0 + else + local.get $5 + i32.extend8_s + local.tee $0 + local.get $23 + i32.add + local.set $28 + local.get $0 + local.get $2 + i32.add + local.set $0 + local.get $21 + local.get $25 + i32.add + local.set $25 + block $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.3 + local.get $27 + i32.const 2 + i32.and + i32.eqz + local.get $24 + local.get $26 + i32.add + local.tee $26 + local.get $23 + i32.eq + i32.and + if + local.get $0 + f64.convert_i32_s + local.get $25 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $23 + local.get $2 + f64.convert_i32_s + local.get $21 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $0 + loop $for-loop|14 + local.get $0 + local.get $23 + i32.lt_s + if + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$63 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $26 + i32.const 1 + i32.sub + local.tee $21 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $24 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$63 + drop + i32.const -1 + local.get $21 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $21 + local.get $24 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$63 + drop + local.get $24 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 8 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.3 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|14 + end + end + else + local.get $27 + i32.const 8 + i32.and + i32.eqz + local.get $24 + local.get $28 + i32.eq + i32.and + if + local.get $0 + f64.convert_i32_s + local.get $25 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $23 + local.get $2 + f64.convert_i32_s + local.get $21 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $0 + loop $for-loop|15 + local.get $0 + local.get $23 + i32.lt_s + if + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$64 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $24 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $21 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$64 + drop + i32.const -1 + local.get $24 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $25 + local.get $21 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$64 + drop + local.get $21 + local.get $25 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 128 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.3 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|15 + end + end + else + local.get $27 + i32.const 1 + i32.and + i32.eqz + local.get $2 + local.get $25 + i32.eq + i32.and + if + local.get $28 + f64.convert_i32_s + local.get $26 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $21 + local.get $23 + f64.convert_i32_s + local.get $24 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $0 + loop $for-loop|16 + local.get $0 + local.get $21 + i32.lt_s + if + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$65 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $25 + i32.const 1 + i32.sub + local.tee $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $24 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$65 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $23 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $23 + local.get $24 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$65 + drop + local.get $24 + local.get $23 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 2 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.3 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|16 + end + end + else + local.get $27 + i32.const 4 + i32.and + i32.eqz + local.get $0 + local.get $21 + i32.eq + i32.and + if + local.get $28 + f64.convert_i32_s + local.get $26 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $25 + local.get $23 + f64.convert_i32_s + local.get $24 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $0 + loop $for-loop|17 + local.get $0 + local.get $25 + i32.lt_s + if + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$66 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $21 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$66 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $21 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $24 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$66 + drop + local.get $23 + local.get $24 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 32 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.3 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|17 + end + end + end + end + end + end + i32.const 0 + local.set $2 + end + local.get $2 + end + local.set $0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.1 + end + local.get $28 + if + i32.const 0 + local.set $0 + else + block $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.3 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + local.get $2 + local.get $21 + i32.ge_s + i32.and + local.get $21 + local.get $25 + i32.add + i32.const 1 + i32.sub + local.tee $25 + local.get $2 + i32.ge_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$67 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $28 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$67 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $29 + local.get $28 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$67 + drop + local.get $28 + local.get $29 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 8 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 8 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.3 + local.get $23 + local.get $24 + local.get $26 + i32.add + i32.const 1 + i32.sub + local.tee $26 + i32.const 1 + i32.add + i32.eq + local.get $2 + local.get $21 + i32.ge_s + i32.and + local.get $2 + local.get $25 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$68 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $28 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$68 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $29 + local.get $28 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$68 + drop + local.get $28 + local.get $29 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 128 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 2 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.3 + local.get $2 + i32.const 1 + i32.add + local.get $21 + i32.eq + local.get $23 + local.get $24 + i32.ge_s + i32.and + local.get $23 + local.get $26 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$69 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $21 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$69 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $28 + local.get $21 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$69 + drop + local.get $21 + local.get $28 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 2 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 4 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.3 + local.get $2 + local.get $25 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.ge_s + i32.and + local.get $23 + local.get $26 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$70 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$70 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$70 + drop + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 32 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 1 + i32.and + i32.or + i32.eqz + local.set $0 + end + end + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.1 + end + end + end + else + local.get $23 + local.get $24 + i32.eq + local.get $5 + i32.const 255 + i32.and + local.tee $22 + i32.const 1 + i32.eq + i32.and + local.get $2 + local.get $21 + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.1 + local.get $22 + i32.const 1 + i32.ne + local.get $23 + local.get $24 + i32.le_s + i32.and + if (result i32) + local.get $5 + i32.extend8_s + local.get $23 + i32.add + i32.const 1 + i32.sub + local.get $24 + i32.ge_s + else + i32.const 0 + end + local.get $2 + local.get $21 + i32.le_s + i32.and + if (result i32) + local.get $5 + i32.extend8_s + local.get $2 + i32.add + i32.const 1 + i32.sub + local.get $21 + i32.ge_s + else + i32.const 0 + end + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.1 + local.get $13 + i32.extend8_s + local.set $0 + local.get $5 + i32.const 255 + i32.and + i32.const 1 + i32.eq + if + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$71 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $0 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$71 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $3 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$71 + drop + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $9 + i32.const 255 + i32.and + local.tee $3 + if + local.get $3 + i32.const 2 + i32.eq + if + local.get $8 + i32.const 255 + i32.and + local.tee $3 + if + local.get $3 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.tee $3 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $23 + local.get $24 + i32.eq + local.tee $22 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $3 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $22 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + else + local.get $8 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.tee $3 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.eq + local.tee $0 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $3 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $0 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + else + local.get $8 + i32.const 255 + i32.and + i32.const 3 + i32.eq + if + i32.const 1 + local.get $2 + local.get $21 + i32.eq + local.tee $3 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.eq + local.tee $22 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $3 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $22 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + end + end + end + else + i32.const 1 + local.get $2 + local.get $21 + i32.eq + local.tee $3 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $23 + local.get $24 + i32.eq + local.tee $22 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $3 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $22 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + else + local.get $9 + i32.const 255 + i32.and + i32.const 9 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.eq + local.tee $3 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $3 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.tee $2 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $2 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + end + end + else + local.get $8 + i32.const 255 + i32.and + local.tee $3 + if + local.get $3 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.tee $2 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $2 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + else + local.get $8 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + i32.const 1 + local.get $2 + local.get $21 + i32.eq + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.eq + local.tee $3 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $3 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + else + local.get $8 + i32.const 255 + i32.and + i32.const 3 + i32.eq + if + i32.const 1 + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $23 + local.get $24 + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.eq + local.tee $2 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $2 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + end + end + end + else + i32.const 1 + local.get $2 + local.get $21 + i32.eq + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.eq + local.tee $3 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $2 + local.get $21 + i32.const 1 + i32.sub + i32.eq + local.get $3 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.1 + end + i32.const 0 + end + local.set $0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.1 + end + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$72 (result i32) + i32.const -1 + local.get $3 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $0 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$72 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $3 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$72 + drop + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $5 + i32.extend8_s + local.tee $3 + local.get $23 + i32.add + i32.const 1 + i32.sub + local.set $22 + local.get $2 + local.get $3 + i32.add + i32.const 1 + i32.sub + local.set $25 + local.get $9 + i32.const 255 + i32.and + local.tee $26 + if + local.get $26 + i32.const 2 + i32.eq + if + local.get $8 + i32.const 255 + i32.and + local.tee $26 + if + local.get $26 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $21 + local.get $25 + i32.le_s + local.tee $25 + local.get $2 + local.get $21 + i32.le_s + local.tee $26 + local.get $23 + local.get $24 + local.get $3 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $22 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $26 + i32.and + local.get $25 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $22 + local.get $2 + local.get $21 + local.get $3 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + else + local.get $8 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $21 + local.get $25 + i32.le_s + local.tee $3 + local.get $2 + local.get $21 + i32.le_s + local.tee $25 + local.get $23 + local.get $24 + local.get $5 + i32.extend8_s + local.tee $26 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $0 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $25 + i32.and + local.get $3 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $0 + local.get $2 + local.get $21 + local.get $26 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + else + local.get $8 + i32.const 255 + i32.and + i32.const 3 + i32.eq + if + i32.const 1 + local.get $21 + local.get $25 + i32.le_s + local.tee $3 + local.get $2 + local.get $21 + i32.le_s + local.tee $25 + local.get $23 + local.get $24 + local.get $5 + i32.extend8_s + local.tee $26 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $22 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $25 + i32.and + local.get $3 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $22 + local.get $2 + local.get $21 + local.get $26 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + end + end + end + else + i32.const 1 + local.get $21 + local.get $25 + i32.le_s + local.tee $3 + local.get $2 + local.get $21 + i32.le_s + local.tee $25 + local.get $23 + local.get $24 + local.get $5 + i32.extend8_s + local.tee $26 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $22 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $25 + i32.and + local.get $3 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $22 + local.get $2 + local.get $21 + local.get $26 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + else + local.get $9 + i32.const 255 + i32.and + i32.const 9 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $3 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $3 + local.get $2 + local.get $21 + local.get $5 + i32.extend8_s + local.tee $3 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $21 + local.get $25 + i32.le_s + local.tee $22 + local.get $2 + local.get $21 + i32.le_s + local.tee $2 + local.get $23 + local.get $24 + local.get $3 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $2 + i32.and + local.get $22 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + end + end + else + local.get $8 + i32.const 255 + i32.and + local.tee $3 + if + local.get $3 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $21 + local.get $25 + i32.le_s + local.tee $3 + local.get $2 + local.get $21 + i32.le_s + local.tee $2 + local.get $23 + local.get $24 + local.get $5 + i32.extend8_s + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $2 + i32.and + local.get $3 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + else + local.get $8 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + i32.const 1 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $2 + local.get $21 + i32.le_s + i32.and + local.get $21 + local.get $25 + i32.le_s + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $3 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $3 + local.get $2 + local.get $21 + local.get $5 + i32.extend8_s + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + else + local.get $8 + i32.const 255 + i32.and + i32.const 3 + i32.eq + if + i32.const 1 + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.get $2 + local.get $21 + local.get $5 + i32.extend8_s + local.tee $3 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $21 + local.get $25 + i32.le_s + local.tee $22 + local.get $2 + local.get $21 + i32.le_s + local.tee $2 + local.get $23 + local.get $24 + local.get $3 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $2 + i32.and + local.get $22 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + end + end + end + else + i32.const 1 + local.get $23 + local.get $24 + local.get $5 + i32.extend8_s + local.tee $3 + i32.sub + i32.eq + local.get $2 + local.get $21 + i32.le_s + i32.and + local.get $21 + local.get $25 + i32.le_s + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $22 + local.get $2 + local.get $21 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $22 + local.get $2 + local.get $21 + local.get $3 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.1 + end + i32.const 0 + end + local.set $0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.1 + end + i32.const 0 + local.set $0 + end + i32.const 1 + local.get $0 + br_if $src/rsmod/PathFinder/PathFinder#findPath2|inlined.0 + drop + local.get $15 + i32.load offset=20 + local.get $15 + i32.load offset=36 + local.tee $2 + local.get $15 + i32.load offset=32 + local.tee $0 + local.get $15 + i32.load offset=4 + local.tee $3 + i32.mul + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.set $21 + local.get $0 + i32.const 1 + i32.sub + local.set $22 + local.get $0 + i32.const 0 + i32.gt_s + if (result i32) + local.get $15 + i32.load offset=16 + local.get $3 + local.get $22 + i32.mul + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $0 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$74 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$73 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $18 + local.get $22 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + local.get $19 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$73 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$73 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default15 + block $case416 + block $case317 + block $case218 + block $case119 + block $case020 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case020 $case119 $case218 $case317 $case416 $default15 + end + local.get $0 + i32.const 2359566 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$74 + end + local.get $0 + i32.const 262414 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$74 + end + local.get $0 + i32.const 2359566 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$74 + end + local.get $0 + i32.const -2145124082 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$74 + end + local.get $0 + i32.const 138240 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$74 + end + unreachable + end + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$76 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$75 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $18 + local.get $22 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + i32.const 1 + i32.add + local.get $19 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$75 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$75 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default16 + block $case417 + block $case318 + block $case219 + block $case120 + block $case021 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case021 $case120 $case219 $case318 $case417 $default16 + end + local.get $0 + i32.const 2359608 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$76 + end + local.get $0 + i32.const 262456 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$76 + end + local.get $0 + i32.const 2359608 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$76 + end + local.get $0 + i32.const -2145124040 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$76 + end + local.get $0 + i32.const 159744 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$76 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $22 + local.get $15 + i32.load offset=4 + i32.mul + local.get $2 + i32.add + i32.const 2 + i32.shl + local.tee $0 + local.get $15 + i32.load offset=16 + i32.add + i32.const 2 + i32.store + local.get $0 + local.get $15 + i32.load offset=20 + i32.add + local.get $21 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $22 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + local.get $15 + i32.load offset=32 + local.tee $0 + i32.const 1 + i32.add + local.set $2 + local.get $15 + i32.load offset=36 + local.set $3 + local.get $0 + local.get $1 + i32.lt_s + if (result i32) + local.get $15 + i32.load offset=16 + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $0 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$78 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$77 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + i32.const 2 + i32.add + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + local.get $19 + i32.add + local.tee $22 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$77 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $22 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$77 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default17 + block $case418 + block $case319 + block $case220 + block $case121 + block $case022 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case022 $case121 $case220 $case319 $case418 $default17 + end + local.get $0 + i32.const 2359683 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$78 + end + local.get $0 + i32.const 262531 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$78 + end + local.get $0 + i32.const 2359683 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$78 + end + local.get $0 + i32.const -2145123965 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$78 + end + local.get $0 + i32.const 198144 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$78 + end + unreachable + end + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$80 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$79 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + i32.const 2 + i32.add + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + i32.const 1 + i32.add + local.get $19 + i32.add + local.tee $22 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$79 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $22 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$79 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default18 + block $case419 + block $case320 + block $case221 + block $case122 + block $case023 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case023 $case122 $case221 $case320 $case419 $default18 + end + local.get $0 + i32.const 2359776 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$80 + end + local.get $0 + i32.const 262624 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$80 + end + local.get $0 + i32.const 2359776 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$80 + end + local.get $0 + i32.const -2145123872 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$80 + end + local.get $0 + i32.const 245760 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$80 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $3 + i32.add + i32.const 2 + i32.shl + local.tee $0 + local.get $15 + i32.load offset=16 + i32.add + i32.const 8 + i32.store + local.get $0 + local.get $15 + i32.load offset=20 + i32.add + local.get $21 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + local.get $15 + i32.load offset=32 + local.set $2 + local.get $15 + i32.load offset=36 + local.tee $0 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + i32.const 0 + i32.gt_s + if (result i32) + local.get $15 + i32.load offset=16 + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $0 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$82 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$81 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + local.get $19 + i32.add + local.tee $22 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$81 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $22 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$81 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default19 + block $case420 + block $case321 + block $case222 + block $case123 + block $case024 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case024 $case123 $case222 $case321 $case420 $default19 + end + local.get $0 + i32.const 2359566 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$82 + end + local.get $0 + i32.const 262414 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$82 + end + local.get $0 + i32.const 2359566 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$82 + end + local.get $0 + i32.const -2145124082 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$82 + end + local.get $0 + i32.const 138240 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$82 + end + unreachable + end + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$84 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$83 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + i32.const 1 + i32.add + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + local.get $19 + i32.add + local.tee $22 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$83 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $22 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$83 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default20 + block $case421 + block $case322 + block $case223 + block $case124 + block $case025 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case025 $case124 $case223 $case322 $case421 $default20 + end + local.get $0 + i32.const 2359683 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$84 + end + local.get $0 + i32.const 262531 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$84 + end + local.get $0 + i32.const 2359683 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$84 + end + local.get $0 + i32.const -2145123965 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$84 + end + local.get $0 + i32.const 198144 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$84 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $3 + i32.add + i32.const 2 + i32.shl + local.tee $0 + local.get $15 + i32.load offset=16 + i32.add + i32.const 1 + i32.store + local.get $0 + local.get $15 + i32.load offset=20 + i32.add + local.get $21 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + local.get $15 + i32.load offset=32 + local.set $2 + local.get $15 + i32.load offset=36 + local.tee $0 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $1 + i32.lt_s + if (result i32) + local.get $15 + i32.load offset=16 + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $0 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$86 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$85 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + i32.const 2 + i32.add + local.get $19 + i32.add + local.tee $22 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$85 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $22 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$85 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default21 + block $case422 + block $case323 + block $case224 + block $case125 + block $case026 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case026 $case125 $case224 $case323 $case422 $default21 + end + local.get $0 + i32.const 2359608 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$86 + end + local.get $0 + i32.const 262456 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$86 + end + local.get $0 + i32.const 2359608 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$86 + end + local.get $0 + i32.const -2145124040 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$86 + end + local.get $0 + i32.const 159744 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$86 + end + unreachable + end + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$88 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$87 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + i32.const 1 + i32.add + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + i32.const 2 + i32.add + local.get $19 + i32.add + local.tee $22 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$87 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $22 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$87 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default22 + block $case423 + block $case324 + block $case225 + block $case126 + block $case027 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case027 $case126 $case225 $case324 $case423 $default22 + end + local.get $0 + i32.const 2359776 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$88 + end + local.get $0 + i32.const 262624 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$88 + end + local.get $0 + i32.const 2359776 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$88 + end + local.get $0 + i32.const -2145123872 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$88 + end + local.get $0 + i32.const 245760 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$88 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $3 + i32.add + i32.const 2 + i32.shl + local.tee $0 + local.get $15 + i32.load offset=16 + i32.add + i32.const 4 + i32.store + local.get $0 + local.get $15 + i32.load offset=20 + i32.add + local.get $21 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + local.get $15 + i32.load offset=32 + local.tee $0 + i32.const 1 + i32.sub + local.set $2 + local.get $15 + i32.load offset=36 + local.tee $3 + i32.const 1 + i32.sub + local.set $22 + local.get $3 + i32.const 0 + i32.gt_s + local.get $0 + i32.const 0 + i32.gt_s + i32.and + if (result i32) + local.get $15 + i32.load offset=16 + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $22 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $0 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$90 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$89 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + local.get $19 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$89 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$89 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default23 + block $case424 + block $case325 + block $case226 + block $case127 + block $case028 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case028 $case127 $case226 $case325 $case424 $default23 + end + local.get $0 + i32.const 2359614 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$90 + end + local.get $0 + i32.const 262462 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$90 + end + local.get $0 + i32.const 2359614 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$90 + end + local.get $0 + i32.const -2145124034 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$90 + end + local.get $0 + i32.const 162816 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$90 + end + unreachable + end + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$92 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$91 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $22 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$91 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$91 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default24 + block $case425 + block $case326 + block $case227 + block $case128 + block $case029 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case029 $case128 $case227 $case326 $case425 $default24 + end + local.get $0 + i32.const 2359566 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$92 + end + local.get $0 + i32.const 262414 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$92 + end + local.get $0 + i32.const 2359566 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$92 + end + local.get $0 + i32.const -2145124082 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$92 + end + local.get $0 + i32.const 138240 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$92 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$94 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$93 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $22 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$93 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$93 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default25 + block $case426 + block $case327 + block $case228 + block $case129 + block $case030 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case030 $case129 $case228 $case327 $case426 $default25 + end + local.get $0 + i32.const 2359695 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$94 + end + local.get $0 + i32.const 262543 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$94 + end + local.get $0 + i32.const 2359695 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$94 + end + local.get $0 + i32.const -2145123953 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$94 + end + local.get $0 + i32.const 204288 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$94 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $22 + i32.add + i32.const 2 + i32.shl + local.tee $0 + local.get $15 + i32.load offset=16 + i32.add + i32.const 3 + i32.store + local.get $0 + local.get $15 + i32.load offset=20 + i32.add + local.get $21 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $22 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + local.get $15 + i32.load offset=32 + local.tee $0 + i32.const 1 + i32.add + local.set $2 + local.get $15 + i32.load offset=36 + local.tee $3 + i32.const 1 + i32.sub + local.set $22 + local.get $0 + local.get $1 + i32.lt_s + local.get $3 + i32.const 0 + i32.gt_s + i32.and + if (result i32) + local.get $15 + i32.load offset=16 + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $22 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $0 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$96 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$95 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $22 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$95 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$95 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default26 + block $case427 + block $case328 + block $case229 + block $case130 + block $case031 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case031 $case130 $case229 $case328 $case427 $default26 + end + local.get $0 + i32.const 2359695 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$96 + end + local.get $0 + i32.const 262543 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$96 + end + local.get $0 + i32.const 2359695 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$96 + end + local.get $0 + i32.const -2145123953 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$96 + end + local.get $0 + i32.const 204288 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$96 + end + unreachable + end + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$98 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$97 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + i32.const 2 + i32.add + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $22 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$97 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$97 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default27 + block $case428 + block $case329 + block $case230 + block $case131 + block $case032 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case032 $case131 $case230 $case329 $case428 $default27 + end + local.get $0 + i32.const 2359683 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$98 + end + local.get $0 + i32.const 262531 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$98 + end + local.get $0 + i32.const 2359683 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$98 + end + local.get $0 + i32.const -2145123965 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$98 + end + local.get $0 + i32.const 198144 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$98 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$100 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$99 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + i32.const 2 + i32.add + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + local.get $19 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$99 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$99 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default28 + block $case429 + block $case330 + block $case231 + block $case132 + block $case033 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case033 $case132 $case231 $case330 $case429 $default28 + end + local.get $0 + i32.const 2359779 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$100 + end + local.get $0 + i32.const 262627 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$100 + end + local.get $0 + i32.const 2359779 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$100 + end + local.get $0 + i32.const -2145123869 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$100 + end + local.get $0 + i32.const 247296 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$100 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $22 + i32.add + i32.const 2 + i32.shl + local.tee $0 + local.get $15 + i32.load offset=16 + i32.add + i32.const 9 + i32.store + local.get $0 + local.get $15 + i32.load offset=20 + i32.add + local.get $21 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $22 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + local.get $15 + i32.load offset=32 + local.tee $0 + i32.const 1 + i32.sub + local.set $2 + local.get $15 + i32.load offset=36 + local.tee $3 + i32.const 1 + i32.add + local.set $22 + local.get $1 + local.get $3 + i32.gt_s + local.get $0 + i32.const 0 + i32.gt_s + i32.and + if (result i32) + local.get $15 + i32.load offset=16 + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $22 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $0 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$102 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$101 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $22 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$101 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$101 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default29 + block $case430 + block $case331 + block $case232 + block $case133 + block $case034 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case034 $case133 $case232 $case331 $case430 $default29 + end + local.get $0 + i32.const 2359614 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$102 + end + local.get $0 + i32.const 262462 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$102 + end + local.get $0 + i32.const 2359614 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$102 + end + local.get $0 + i32.const -2145124034 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$102 + end + local.get $0 + i32.const 162816 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$102 + end + unreachable + end + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$104 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$103 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + i32.const 2 + i32.add + local.get $19 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$103 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$103 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default30 + block $case431 + block $case332 + block $case233 + block $case134 + block $case035 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case035 $case134 $case233 $case332 $case431 $default30 + end + local.get $0 + i32.const 2359608 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$104 + end + local.get $0 + i32.const 262456 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$104 + end + local.get $0 + i32.const 2359608 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$104 + end + local.get $0 + i32.const -2145124040 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$104 + end + local.get $0 + i32.const 159744 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$104 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$106 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$105 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + i32.const 2 + i32.add + local.get $19 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$105 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$105 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default31 + block $case432 + block $case333 + block $case234 + block $case135 + block $case036 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case036 $case135 $case234 $case333 $case432 $default31 + end + local.get $0 + i32.const 2359800 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$106 + end + local.get $0 + i32.const 262648 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$106 + end + local.get $0 + i32.const 2359800 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$106 + end + local.get $0 + i32.const -2145123848 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$106 + end + local.get $0 + i32.const 258048 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$106 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $22 + i32.add + i32.const 2 + i32.shl + local.tee $0 + local.get $15 + i32.load offset=16 + i32.add + i32.const 6 + i32.store + local.get $0 + local.get $15 + i32.load offset=20 + i32.add + local.get $21 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $22 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + local.get $15 + i32.load offset=32 + local.tee $0 + i32.const 1 + i32.add + local.set $2 + local.get $15 + i32.load offset=36 + local.tee $3 + i32.const 1 + i32.add + local.set $22 + local.get $0 + local.get $1 + i32.lt_s + local.get $1 + local.get $3 + i32.gt_s + i32.and + if (result i32) + local.get $15 + i32.load offset=16 + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $22 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $0 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$108 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$107 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + i32.const 2 + i32.add + local.get $19 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$107 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$107 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default32 + block $case433 + block $case334 + block $case235 + block $case136 + block $case037 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case037 $case136 $case235 $case334 $case433 $default32 + end + local.get $0 + i32.const 2359800 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$108 + end + local.get $0 + i32.const 262648 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$108 + end + local.get $0 + i32.const 2359800 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$108 + end + local.get $0 + i32.const -2145123848 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$108 + end + local.get $0 + i32.const 258048 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$108 + end + unreachable + end + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$110 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$109 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + i32.const 2 + i32.add + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + i32.const 2 + i32.add + local.get $19 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$109 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$109 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default33 + block $case434 + block $case335 + block $case236 + block $case137 + block $case038 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case038 $case137 $case236 $case335 $case434 $default33 + end + local.get $0 + i32.const 2359776 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$110 + end + local.get $0 + i32.const 262624 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$110 + end + local.get $0 + i32.const 2359776 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$110 + end + local.get $0 + i32.const -2145123872 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$110 + end + local.get $0 + i32.const 245760 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$110 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$112 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$111 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + i32.const 2 + i32.add + local.get $18 + i32.add + local.tee $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $22 + i32.add + local.tee $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$111 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$111 + drop + local.get $23 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + block $default34 + block $case435 + block $case336 + block $case237 + block $case138 + block $case039 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case039 $case138 $case237 $case336 $case435 $default34 + end + local.get $0 + i32.const 2359779 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$112 + end + local.get $0 + i32.const 262627 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$112 + end + local.get $0 + i32.const 2359779 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$112 + end + local.get $0 + i32.const -2145123869 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$112 + end + local.get $0 + i32.const 247296 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$112 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $22 + i32.add + i32.const 2 + i32.shl + local.tee $0 + local.get $15 + i32.load offset=16 + i32.add + i32.const 12 + i32.store + local.get $0 + local.get $15 + i32.load offset=20 + i32.add + local.get $21 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $22 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + br $while-continue|9 + end + end + i32.const 0 + end + else + block $src/rsmod/PathFinder/PathFinder#findPathN|inlined.0 (result i32) + local.get $11 + local.set $0 + local.get $15 + i32.load offset=4 + local.get $5 + local.tee $2 + i32.extend8_s + i32.sub + local.set $21 + loop $while-continue|18 + local.get $15 + i32.load offset=40 + local.tee $1 + local.get $15 + i32.load offset=44 + i32.ne + if + local.get $15 + local.get $15 + i32.load offset=24 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=32 + local.get $15 + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=40 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store offset=36 + local.get $15 + local.get $15 + i32.load offset=40 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=40 + local.get $15 + i32.load + local.set $5 + i32.const 1 + local.set $1 + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.2 + local.get $19 + local.get $15 + i32.load offset=36 + i32.add + local.tee $3 + local.get $4 + local.get $19 + i32.add + local.tee $11 + i32.eq + local.tee $22 + local.get $18 + local.get $15 + i32.load offset=32 + i32.add + local.tee $23 + local.get $18 + local.get $20 + i32.add + local.tee $24 + i32.eq + block $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.2 (result i32) + i32.const 4 + local.get $9 + i32.const 255 + i32.and + local.tee $25 + i32.const 254 + i32.eq + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.2 + drop + i32.const 3 + local.get $25 + i32.const 255 + i32.eq + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.2 + drop + i32.const 0 + local.get $9 + i32.extend8_s + local.tee $26 + i32.const 3 + i32.le_s + local.get $26 + i32.const 0 + i32.ge_s + i32.and + local.get $25 + i32.const 9 + i32.eq + i32.or + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.2 + drop + i32.const 1 + local.get $26 + i32.const 9 + i32.lt_s + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.2 + drop + i32.const 2 + local.get $26 + i32.const 11 + i32.le_s + local.get $26 + i32.const 10 + i32.ge_s + i32.and + local.get $25 + i32.const 22 + i32.eq + i32.or + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.2 + drop + i32.const 3 + end + local.tee $25 + i32.const 4 + i32.ne + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.2 + local.get $25 + if + local.get $25 + i32.const 1 + i32.eq + if + local.get $23 + local.get $24 + i32.eq + local.get $2 + i32.const 255 + i32.and + local.tee $25 + i32.const 1 + i32.eq + i32.and + local.get $22 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.2 + local.get $25 + i32.const 1 + i32.ne + local.get $23 + local.get $24 + i32.le_s + i32.and + if (result i32) + local.get $2 + i32.extend8_s + local.get $23 + i32.add + i32.const 1 + i32.sub + local.get $24 + i32.ge_s + else + i32.const 0 + end + local.get $3 + local.get $11 + i32.le_s + i32.and + if (result i32) + local.get $2 + i32.extend8_s + local.get $3 + i32.add + i32.const 1 + i32.sub + local.get $11 + i32.ge_s + else + i32.const 0 + end + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.2 + local.get $13 + i32.extend8_s + local.set $1 + local.get $2 + i32.const 255 + i32.and + i32.const 1 + i32.eq + if + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.2 (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$113 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $1 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$113 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $5 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$113 + drop + local.get $1 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + local.get $9 + i32.const 255 + i32.and + local.tee $5 + i32.const 7 + i32.eq + local.tee $22 + local.get $5 + i32.const 6 + i32.eq + i32.or + if + local.get $8 + i32.const 2 + i32.add + i32.const 3 + i32.and + local.get $8 + local.get $22 + select + i32.extend8_s + local.tee $5 + if + local.get $5 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $1 + i32.const 8 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.eq + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.const 1 + i32.sub + i32.eq + local.get $23 + local.get $24 + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.2 + else + local.get $5 + i32.const 2 + i32.eq + if + i32.const 1 + local.get $1 + i32.const 8 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.eq + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 32 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.2 + else + local.get $5 + i32.const 3 + i32.eq + if + local.get $1 + i32.const 128 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.eq + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + if + i32.const 1 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.2 + else + i32.const 1 + local.get $1 + i32.const 32 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.2 + drop + end + end + end + end + else + i32.const 1 + local.get $1 + i32.const 128 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.eq + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.const 1 + i32.sub + i32.eq + local.get $23 + local.get $24 + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.2 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.2 + else + local.get $9 + i32.const 255 + i32.and + i32.const 8 + i32.eq + if + i32.const 1 + local.get $1 + i32.const 32 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.eq + local.tee $5 + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.const 1 + i32.sub + i32.eq + local.get $5 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 8 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.eq + local.tee $3 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 128 + i32.and + i32.eqz + local.get $3 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.2 + end + end + i32.const 0 + end + local.set $1 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.2 + end + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.2 (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$114 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $1 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$114 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $5 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$114 + drop + local.get $1 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + local.get $2 + i32.extend8_s + local.tee $5 + local.get $23 + i32.add + i32.const 1 + i32.sub + local.set $22 + local.get $3 + local.get $5 + i32.add + i32.const 1 + i32.sub + local.set $25 + local.get $9 + i32.const 255 + i32.and + local.tee $26 + i32.const 7 + i32.eq + local.tee $27 + local.get $26 + i32.const 6 + i32.eq + i32.or + if + local.get $8 + i32.const 2 + i32.add + i32.const 3 + i32.and + local.get $8 + local.get $27 + select + i32.extend8_s + local.tee $26 + if + local.get $26 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $1 + i32.const 8 + i32.and + i32.eqz + local.get $23 + local.get $24 + local.get $5 + i32.sub + i32.eq + local.get $3 + local.get $11 + i32.le_s + i32.and + local.get $11 + local.get $25 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2 + i32.and + i32.eqz + local.get $3 + local.get $11 + local.get $5 + i32.sub + i32.eq + local.get $23 + local.get $24 + i32.le_s + i32.and + local.get $22 + local.get $24 + i32.ge_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.2 + else + local.get $26 + i32.const 2 + i32.eq + if + i32.const 1 + local.get $1 + i32.const 8 + i32.and + i32.eqz + local.get $23 + local.get $24 + local.get $2 + i32.extend8_s + i32.sub + i32.eq + local.get $3 + local.get $11 + i32.le_s + i32.and + local.get $11 + local.get $25 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 32 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.le_s + i32.and + local.get $22 + local.get $24 + i32.ge_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.2 + else + local.get $26 + i32.const 3 + i32.eq + if + i32.const 1 + local.get $1 + i32.const 128 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $3 + local.get $11 + i32.le_s + i32.and + local.get $11 + local.get $25 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 32 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.le_s + i32.and + local.get $22 + local.get $24 + i32.ge_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.2 + end + end + end + else + i32.const 1 + local.get $1 + i32.const 128 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $3 + local.get $11 + i32.le_s + i32.and + local.get $11 + local.get $25 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2 + i32.and + i32.eqz + local.get $3 + local.get $11 + local.get $2 + i32.extend8_s + i32.sub + i32.eq + local.get $23 + local.get $24 + i32.le_s + i32.and + local.get $22 + local.get $24 + i32.ge_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.2 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.2 + else + local.get $9 + i32.const 255 + i32.and + i32.const 8 + i32.eq + if + i32.const 1 + local.get $1 + i32.const 32 + i32.and + i32.eqz + local.get $22 + local.get $24 + i32.ge_s + local.tee $5 + local.get $23 + local.get $24 + i32.le_s + local.tee $22 + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2 + i32.and + i32.eqz + local.get $5 + local.get $3 + local.get $11 + local.get $2 + i32.extend8_s + local.tee $5 + i32.sub + i32.eq + local.get $22 + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 8 + i32.and + i32.eqz + local.get $11 + local.get $25 + i32.le_s + local.tee $22 + local.get $3 + local.get $11 + i32.le_s + local.tee $3 + local.get $23 + local.get $24 + local.get $5 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 128 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $3 + i32.and + local.get $22 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.2 + end + end + i32.const 0 + end + local.set $1 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.2 + else + local.get $25 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + local.get $13 + i32.extend8_s + local.set $22 + local.get $7 + local.get $6 + local.get $8 + i32.const 1 + i32.and + local.tee $25 + select + i32.extend8_s + local.set $26 + local.get $6 + local.get $7 + local.get $25 + select + i32.extend8_s + local.set $25 + local.get $8 + i32.const 255 + i32.and + if (result i32) + local.get $0 + local.get $8 + i32.const 7 + i32.and + i32.shl + i32.const 15 + i32.and + local.get $0 + i32.extend8_s + i32.const 4 + local.get $8 + i32.sub + i32.const 7 + i32.and + i32.shr_s + i32.or + else + local.get $0 + end + i32.extend8_s + local.set $27 + local.get $2 + i32.extend8_s + local.tee $28 + local.get $23 + i32.add + local.get $24 + i32.le_s + local.get $23 + local.get $24 + local.get $26 + i32.add + i32.ge_s + i32.or + if (result i32) + i32.const 0 + else + local.get $11 + local.get $3 + local.get $28 + i32.add + i32.lt_s + local.get $3 + local.get $11 + local.get $25 + i32.add + i32.lt_s + i32.and + end + local.set $28 + local.get $2 + i32.extend8_s + i32.const 1 + i32.gt_s + if + local.get $28 + if (result i32) + i32.const 1 + else + local.get $2 + i32.extend8_s + local.tee $1 + local.get $23 + i32.add + local.set $28 + local.get $1 + local.get $3 + i32.add + local.set $1 + local.get $11 + local.get $25 + i32.add + local.set $25 + block $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.4 + local.get $27 + i32.const 2 + i32.and + i32.eqz + local.get $24 + local.get $26 + i32.add + local.tee $26 + local.get $23 + i32.eq + i32.and + if + local.get $1 + f64.convert_i32_s + local.get $25 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $23 + local.get $3 + f64.convert_i32_s + local.get $11 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $1 + loop $for-loop|19 + local.get $1 + local.get $23 + i32.lt_s + if + i32.const 1 + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$115 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $26 + i32.const 1 + i32.sub + local.tee $11 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $24 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$115 + drop + i32.const -1 + local.get $11 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $11 + local.get $24 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$115 + drop + local.get $24 + local.get $11 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 8 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.4 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|19 + end + end + else + local.get $27 + i32.const 8 + i32.and + i32.eqz + local.get $24 + local.get $28 + i32.eq + i32.and + if + local.get $1 + f64.convert_i32_s + local.get $25 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $23 + local.get $3 + f64.convert_i32_s + local.get $11 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $1 + loop $for-loop|20 + local.get $1 + local.get $23 + i32.lt_s + if + i32.const 1 + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$116 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $24 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$116 + drop + i32.const -1 + local.get $24 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $25 + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$116 + drop + local.get $11 + local.get $25 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 128 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.4 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|20 + end + end + else + local.get $27 + i32.const 1 + i32.and + i32.eqz + local.get $3 + local.get $25 + i32.eq + i32.and + if + local.get $28 + f64.convert_i32_s + local.get $26 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $11 + local.get $23 + f64.convert_i32_s + local.get $24 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $1 + loop $for-loop|21 + local.get $1 + local.get $11 + i32.lt_s + if + i32.const 1 + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$117 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $25 + i32.const 1 + i32.sub + local.tee $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $24 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$117 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $23 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $23 + local.get $24 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$117 + drop + local.get $24 + local.get $23 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 2 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.4 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|21 + end + end + else + local.get $27 + i32.const 4 + i32.and + i32.eqz + local.get $1 + local.get $11 + i32.eq + i32.and + if + local.get $28 + f64.convert_i32_s + local.get $26 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $25 + local.get $23 + f64.convert_i32_s + local.get $24 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $1 + loop $for-loop|22 + local.get $1 + local.get $25 + i32.lt_s + if + i32.const 1 + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$118 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $11 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$118 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $11 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $24 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$118 + drop + local.get $23 + local.get $24 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 32 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.4 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|22 + end + end + end + end + end + end + i32.const 0 + local.set $3 + end + local.get $3 + end + local.set $1 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.2 + end + local.get $28 + i32.eqz + if + block $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.4 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + local.get $3 + local.get $11 + i32.ge_s + i32.and + local.get $11 + local.get $25 + i32.add + i32.const 1 + i32.sub + local.tee $25 + local.get $3 + i32.ge_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$119 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $28 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$119 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $29 + local.get $28 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$119 + drop + local.get $28 + local.get $29 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 8 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 8 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.4 + local.get $23 + local.get $24 + local.get $26 + i32.add + i32.const 1 + i32.sub + local.tee $26 + i32.const 1 + i32.add + i32.eq + local.get $3 + local.get $11 + i32.ge_s + i32.and + local.get $3 + local.get $25 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$120 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $28 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$120 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $29 + local.get $28 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$120 + drop + local.get $28 + local.get $29 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 128 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 2 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.4 + local.get $3 + i32.const 1 + i32.add + local.get $11 + i32.eq + local.get $23 + local.get $24 + i32.ge_s + i32.and + local.get $23 + local.get $26 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$121 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$121 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $28 + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$121 + drop + local.get $11 + local.get $28 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 2 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 4 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.4 + local.get $3 + local.get $25 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.ge_s + i32.and + local.get $23 + local.get $26 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$122 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$122 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$122 + drop + local.get $1 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 32 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 1 + i32.and + i32.or + i32.eqz + local.set $1 + end + end + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.2 + else + local.get $25 + i32.const 255 + i32.and + i32.const 4 + i32.eq + if + local.get $13 + i32.extend8_s + local.set $22 + local.get $7 + local.get $6 + local.get $8 + i32.const 1 + i32.and + local.tee $25 + select + i32.extend8_s + local.set $26 + local.get $6 + local.get $7 + local.get $25 + select + i32.extend8_s + local.set $25 + local.get $8 + i32.const 255 + i32.and + if (result i32) + local.get $0 + local.get $8 + i32.const 7 + i32.and + i32.shl + i32.const 15 + i32.and + local.get $0 + i32.extend8_s + i32.const 4 + local.get $8 + i32.sub + i32.const 7 + i32.and + i32.shr_s + i32.or + else + local.get $0 + end + i32.extend8_s + local.set $27 + local.get $2 + i32.extend8_s + local.tee $28 + local.get $23 + i32.add + local.get $24 + i32.le_s + local.get $23 + local.get $24 + local.get $26 + i32.add + i32.ge_s + i32.or + if (result i32) + i32.const 0 + else + local.get $11 + local.get $3 + local.get $28 + i32.add + i32.lt_s + local.get $3 + local.get $11 + local.get $25 + i32.add + i32.lt_s + i32.and + end + local.set $28 + local.get $2 + i32.extend8_s + i32.const 1 + i32.gt_s + if + local.get $28 + if (result i32) + i32.const 0 + else + local.get $2 + i32.extend8_s + local.tee $1 + local.get $23 + i32.add + local.set $28 + local.get $1 + local.get $3 + i32.add + local.set $1 + local.get $11 + local.get $25 + i32.add + local.set $25 + block $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.5 + local.get $27 + i32.const 2 + i32.and + i32.eqz + local.get $24 + local.get $26 + i32.add + local.tee $26 + local.get $23 + i32.eq + i32.and + if + local.get $1 + f64.convert_i32_s + local.get $25 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $23 + local.get $3 + f64.convert_i32_s + local.get $11 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $1 + loop $for-loop|23 + local.get $1 + local.get $23 + i32.lt_s + if + i32.const 1 + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$123 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $26 + i32.const 1 + i32.sub + local.tee $11 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $24 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$123 + drop + i32.const -1 + local.get $11 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $11 + local.get $24 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$123 + drop + local.get $24 + local.get $11 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 8 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.5 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|23 + end + end + else + local.get $27 + i32.const 8 + i32.and + i32.eqz + local.get $24 + local.get $28 + i32.eq + i32.and + if + local.get $1 + f64.convert_i32_s + local.get $25 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $23 + local.get $3 + f64.convert_i32_s + local.get $11 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $1 + loop $for-loop|24 + local.get $1 + local.get $23 + i32.lt_s + if + i32.const 1 + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$124 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $24 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$124 + drop + i32.const -1 + local.get $24 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $25 + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$124 + drop + local.get $11 + local.get $25 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 128 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.5 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|24 + end + end + else + local.get $27 + i32.const 1 + i32.and + i32.eqz + local.get $3 + local.get $25 + i32.eq + i32.and + if + local.get $28 + f64.convert_i32_s + local.get $26 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $11 + local.get $23 + f64.convert_i32_s + local.get $24 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $1 + loop $for-loop|25 + local.get $1 + local.get $11 + i32.lt_s + if + i32.const 1 + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$125 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $25 + i32.const 1 + i32.sub + local.tee $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $24 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$125 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $23 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $23 + local.get $24 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$125 + drop + local.get $24 + local.get $23 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 2 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.5 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|25 + end + end + else + local.get $27 + i32.const 4 + i32.and + i32.eqz + local.get $1 + local.get $11 + i32.eq + i32.and + if + local.get $28 + f64.convert_i32_s + local.get $26 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $25 + local.get $23 + f64.convert_i32_s + local.get $24 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $1 + loop $for-loop|26 + local.get $1 + local.get $25 + i32.lt_s + if + i32.const 1 + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$126 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $11 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $23 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$126 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $11 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $24 + local.get $23 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$126 + drop + local.get $23 + local.get $24 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 32 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.5 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|26 + end + end + end + end + end + end + i32.const 0 + local.set $3 + end + local.get $3 + end + local.set $1 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.2 + end + local.get $28 + if + i32.const 0 + local.set $1 + else + block $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.5 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + local.get $3 + local.get $11 + i32.ge_s + i32.and + local.get $11 + local.get $25 + i32.add + i32.const 1 + i32.sub + local.tee $25 + local.get $3 + i32.ge_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$127 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $28 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$127 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $29 + local.get $28 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$127 + drop + local.get $28 + local.get $29 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 8 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 8 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.5 + local.get $23 + local.get $24 + local.get $26 + i32.add + i32.const 1 + i32.sub + local.tee $26 + i32.const 1 + i32.add + i32.eq + local.get $3 + local.get $11 + i32.ge_s + i32.and + local.get $3 + local.get $25 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$128 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $28 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$128 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $29 + local.get $28 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$128 + drop + local.get $28 + local.get $29 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 128 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 2 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.5 + local.get $3 + i32.const 1 + i32.add + local.get $11 + i32.eq + local.get $23 + local.get $24 + i32.ge_s + i32.and + local.get $23 + local.get $26 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$129 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$129 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $28 + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$129 + drop + local.get $11 + local.get $28 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 2 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 4 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.5 + local.get $3 + local.get $25 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.ge_s + i32.and + local.get $23 + local.get $26 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$130 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $22 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$130 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$130 + drop + local.get $1 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 32 + i32.and + else + i32.const 1 + end + local.get $27 + i32.const 1 + i32.and + i32.or + i32.eqz + local.set $1 + end + end + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.2 + end + end + end + else + local.get $23 + local.get $24 + i32.eq + local.get $2 + i32.const 255 + i32.and + local.tee $22 + i32.const 1 + i32.eq + i32.and + local.get $3 + local.get $11 + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.2 + local.get $22 + i32.const 1 + i32.ne + local.get $23 + local.get $24 + i32.le_s + i32.and + if (result i32) + local.get $2 + i32.extend8_s + local.get $23 + i32.add + i32.const 1 + i32.sub + local.get $24 + i32.ge_s + else + i32.const 0 + end + local.get $3 + local.get $11 + i32.le_s + i32.and + if (result i32) + local.get $2 + i32.extend8_s + local.get $3 + i32.add + i32.const 1 + i32.sub + local.get $11 + i32.ge_s + else + i32.const 0 + end + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.2 + local.get $13 + i32.extend8_s + local.set $1 + local.get $2 + i32.const 255 + i32.and + i32.const 1 + i32.eq + if + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$131 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $1 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$131 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $5 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$131 + drop + local.get $1 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + local.get $9 + i32.const 255 + i32.and + local.tee $5 + if + local.get $5 + i32.const 2 + i32.eq + if + local.get $8 + i32.const 255 + i32.and + local.tee $5 + if + local.get $5 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $1 + i32.const 2359560 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.eq + local.tee $5 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $23 + local.get $24 + i32.eq + local.tee $22 + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $5 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359554 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.const 1 + i32.sub + i32.eq + local.get $22 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + else + local.get $8 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + i32.const 1 + local.get $1 + i32.const 2359560 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.eq + local.tee $5 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.eq + local.tee $1 + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $5 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $3 + local.get $11 + i32.const 1 + i32.sub + i32.eq + local.get $1 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + else + local.get $8 + i32.const 255 + i32.and + i32.const 3 + i32.eq + if + i32.const 1 + local.get $3 + local.get $11 + i32.eq + local.tee $5 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.eq + local.tee $22 + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359680 + i32.and + i32.eqz + local.get $5 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $3 + local.get $11 + i32.const 1 + i32.sub + i32.eq + local.get $22 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + end + end + end + else + i32.const 1 + local.get $3 + local.get $11 + i32.eq + local.tee $5 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $23 + local.get $24 + i32.eq + local.tee $22 + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359680 + i32.and + i32.eqz + local.get $5 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359554 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.const 1 + i32.sub + i32.eq + local.get $22 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + else + local.get $9 + i32.const 255 + i32.and + i32.const 9 + i32.eq + if + i32.const 1 + local.get $1 + i32.const 32 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.eq + local.tee $5 + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.const 1 + i32.sub + i32.eq + local.get $5 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 8 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.eq + local.tee $3 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 128 + i32.and + i32.eqz + local.get $3 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + end + end + else + local.get $8 + i32.const 255 + i32.and + local.tee $5 + if + local.get $5 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + local.get $23 + local.get $24 + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359560 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.eq + local.tee $3 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359680 + i32.and + i32.eqz + local.get $3 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + else + local.get $8 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + i32.const 1 + local.get $3 + local.get $11 + i32.eq + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.eq + local.tee $5 + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359554 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.const 1 + i32.sub + i32.eq + local.get $5 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + else + local.get $8 + i32.const 255 + i32.and + i32.const 3 + i32.eq + if + i32.const 1 + local.get $3 + local.get $11 + i32.const 1 + i32.sub + i32.eq + local.get $23 + local.get $24 + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359560 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.eq + local.tee $3 + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359680 + i32.and + i32.eqz + local.get $3 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + end + end + end + else + i32.const 1 + local.get $3 + local.get $11 + i32.eq + local.get $23 + local.get $24 + i32.const 1 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.eq + local.tee $5 + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359554 + i32.and + i32.eqz + local.get $3 + local.get $11 + i32.const 1 + i32.sub + i32.eq + local.get $5 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.2 + end + i32.const 0 + end + local.set $1 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.2 + end + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$132 (result i32) + i32.const -1 + local.get $5 + i32.load + local.get $23 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $1 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$132 + drop + i32.const -1 + local.get $23 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $5 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$132 + drop + local.get $1 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + local.get $2 + i32.extend8_s + local.tee $5 + local.get $23 + i32.add + i32.const 1 + i32.sub + local.set $22 + local.get $3 + local.get $5 + i32.add + i32.const 1 + i32.sub + local.set $25 + local.get $9 + i32.const 255 + i32.and + local.tee $26 + if + local.get $26 + i32.const 2 + i32.eq + if + local.get $8 + i32.const 255 + i32.and + local.tee $26 + if + local.get $26 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $1 + i32.const 2359560 + i32.and + i32.eqz + local.get $11 + local.get $25 + i32.le_s + local.tee $25 + local.get $3 + local.get $11 + i32.le_s + local.tee $26 + local.get $23 + local.get $24 + local.get $5 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $22 + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $26 + i32.and + local.get $25 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359554 + i32.and + i32.eqz + local.get $22 + local.get $3 + local.get $11 + local.get $5 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + else + local.get $8 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + i32.const 1 + local.get $1 + i32.const 2359560 + i32.and + i32.eqz + local.get $11 + local.get $25 + i32.le_s + local.tee $5 + local.get $3 + local.get $11 + i32.le_s + local.tee $25 + local.get $23 + local.get $24 + local.get $2 + i32.extend8_s + local.tee $26 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $1 + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $25 + i32.and + local.get $5 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $1 + local.get $3 + local.get $11 + local.get $26 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + else + local.get $8 + i32.const 255 + i32.and + i32.const 3 + i32.eq + if + i32.const 1 + local.get $11 + local.get $25 + i32.le_s + local.tee $5 + local.get $3 + local.get $11 + i32.le_s + local.tee $25 + local.get $23 + local.get $24 + local.get $2 + i32.extend8_s + local.tee $26 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $22 + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359680 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $25 + i32.and + local.get $5 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $22 + local.get $3 + local.get $11 + local.get $26 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + end + end + end + else + i32.const 1 + local.get $11 + local.get $25 + i32.le_s + local.tee $5 + local.get $3 + local.get $11 + i32.le_s + local.tee $25 + local.get $23 + local.get $24 + local.get $2 + i32.extend8_s + local.tee $26 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $22 + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359680 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $25 + i32.and + local.get $5 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359554 + i32.and + i32.eqz + local.get $22 + local.get $3 + local.get $11 + local.get $26 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + else + local.get $9 + i32.const 255 + i32.and + i32.const 9 + i32.eq + if + i32.const 1 + local.get $1 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $5 + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359554 + i32.and + i32.eqz + local.get $5 + local.get $3 + local.get $11 + local.get $2 + i32.extend8_s + local.tee $5 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359560 + i32.and + i32.eqz + local.get $11 + local.get $25 + i32.le_s + local.tee $22 + local.get $3 + local.get $11 + i32.le_s + local.tee $3 + local.get $23 + local.get $24 + local.get $5 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359680 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $3 + i32.and + local.get $22 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + end + end + else + local.get $8 + i32.const 255 + i32.and + local.tee $5 + if + local.get $5 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359560 + i32.and + i32.eqz + local.get $11 + local.get $25 + i32.le_s + local.tee $5 + local.get $3 + local.get $11 + i32.le_s + local.tee $3 + local.get $23 + local.get $24 + local.get $2 + i32.extend8_s + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359680 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $3 + i32.and + local.get $5 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + else + local.get $8 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + i32.const 1 + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $3 + local.get $11 + i32.le_s + i32.and + local.get $11 + local.get $25 + i32.le_s + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $5 + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359554 + i32.and + i32.eqz + local.get $5 + local.get $3 + local.get $11 + local.get $2 + i32.extend8_s + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + else + local.get $8 + i32.const 255 + i32.and + i32.const 3 + i32.eq + if + i32.const 1 + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.get $3 + local.get $11 + local.get $2 + i32.extend8_s + local.tee $5 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359560 + i32.and + i32.eqz + local.get $11 + local.get $25 + i32.le_s + local.tee $22 + local.get $3 + local.get $11 + i32.le_s + local.tee $3 + local.get $23 + local.get $24 + local.get $5 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359680 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.const 1 + i32.add + i32.eq + local.get $3 + i32.and + local.get $22 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + end + end + end + else + i32.const 1 + local.get $23 + local.get $24 + local.get $2 + i32.extend8_s + local.tee $5 + i32.sub + i32.eq + local.get $3 + local.get $11 + i32.le_s + i32.and + local.get $11 + local.get $25 + i32.le_s + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359584 + i32.and + i32.eqz + local.get $23 + local.get $24 + i32.le_s + local.get $22 + local.get $24 + i32.ge_s + i32.and + local.tee $22 + local.get $3 + local.get $11 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 1 + local.get $1 + i32.const 2359554 + i32.and + i32.eqz + local.get $22 + local.get $3 + local.get $11 + local.get $5 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.2 + end + i32.const 0 + end + local.set $1 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.2 + end + i32.const 0 + local.set $1 + end + i32.const 1 + local.get $1 + br_if $src/rsmod/PathFinder/PathFinder#findPathN|inlined.0 + drop + local.get $15 + i32.load offset=20 + local.get $15 + i32.load offset=36 + local.tee $3 + local.get $15 + i32.load offset=32 + local.tee $1 + local.get $15 + i32.load offset=4 + local.tee $5 + i32.mul + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.set $22 + local.get $1 + i32.const 1 + i32.sub + local.set $23 + local.get $1 + i32.const 0 + i32.gt_s + if (result i32) + local.get $15 + i32.load offset=16 + local.get $5 + local.get $23 + i32.mul + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $1 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$134 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$133 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $18 + local.get $23 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + local.get $19 + i32.add + local.tee $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$133 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$133 + drop + local.get $11 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $default35 + block $case436 + block $case337 + block $case238 + block $case139 + block $case040 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case040 $case139 $case238 $case337 $case436 $default35 + end + local.get $1 + i32.const 2359566 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$134 + end + local.get $1 + i32.const 262414 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$134 + end + local.get $1 + i32.const 2359566 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$134 + end + local.get $1 + i32.const -2145124082 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$134 + end + local.get $1 + i32.const 138240 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$134 + end + unreachable + end + end + local.get $1 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$136 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$135 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $18 + local.get $23 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + local.get $2 + i32.extend8_s + i32.add + i32.const 1 + i32.sub + local.get $19 + i32.add + local.tee $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$135 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$135 + drop + local.get $11 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $default36 + block $case437 + block $case338 + block $case239 + block $case140 + block $case041 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case041 $case140 $case239 $case338 $case437 $default36 + end + local.get $1 + i32.const 2359608 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$136 + end + local.get $1 + i32.const 262456 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$136 + end + local.get $1 + i32.const 2359608 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$136 + end + local.get $1 + i32.const -2145124040 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$136 + end + local.get $1 + i32.const 159744 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$136 + end + unreachable + end + else + i32.const 0 + local.set $1 + end + local.get $1 + if + i32.const 0 + local.set $11 + i32.const 1 + local.set $5 + loop $for-loop|27 + local.get $5 + local.get $2 + i32.const 1 + i32.sub + i32.extend8_s + i32.lt_s + if + block $for-break27 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$137 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $18 + local.get $23 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $5 + local.get $15 + i32.load offset=36 + i32.add + local.get $19 + i32.add + local.tee $24 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $25 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$137 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $24 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $25 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$137 + drop + local.get $25 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$138 + block $default37 + block $case438 + block $case339 + block $case240 + block $case141 + block $case042 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case042 $case141 $case240 $case339 $case438 $default37 + end + local.get $1 + i32.const 2359614 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$138 + end + local.get $1 + i32.const 262462 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$138 + end + local.get $1 + i32.const 2359614 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$138 + end + local.get $1 + i32.const -2145124034 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$138 + end + local.get $1 + i32.const 162816 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$138 + end + unreachable + end + local.get $1 + i32.eqz + if + i32.const 1 + local.set $11 + br $for-break27 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|27 + end + end + end + local.get $11 + i32.eqz + if + local.get $23 + local.get $15 + i32.load offset=4 + i32.mul + local.get $3 + i32.add + i32.const 2 + i32.shl + local.tee $1 + local.get $15 + i32.load offset=16 + i32.add + i32.const 2 + i32.store + local.get $1 + local.get $15 + i32.load offset=20 + i32.add + local.get $22 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $23 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + end + local.get $15 + i32.load offset=32 + local.tee $1 + i32.const 1 + i32.add + local.set $3 + local.get $15 + i32.load offset=36 + local.set $23 + local.get $1 + local.get $21 + i32.lt_s + if (result i32) + local.get $15 + i32.load offset=16 + local.get $3 + local.get $15 + i32.load offset=4 + i32.mul + local.get $23 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $1 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$140 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$139 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + local.get $2 + i32.extend8_s + i32.add + local.get $18 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $23 + i32.add + local.tee $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$139 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$139 + drop + local.get $11 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $default38 + block $case439 + block $case340 + block $case241 + block $case142 + block $case043 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case043 $case142 $case241 $case340 $case439 $default38 + end + local.get $1 + i32.const 2359683 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$140 + end + local.get $1 + i32.const 262531 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$140 + end + local.get $1 + i32.const 2359683 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$140 + end + local.get $1 + i32.const -2145123965 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$140 + end + local.get $1 + i32.const 198144 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$140 + end + unreachable + end + end + local.get $1 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$142 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$141 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + i32.extend8_s + local.tee $1 + local.get $15 + i32.load offset=32 + i32.add + local.get $18 + i32.add + local.tee $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + local.get $1 + i32.add + i32.const 1 + i32.sub + local.get $19 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$141 + drop + i32.const -1 + local.get $5 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$141 + drop + local.get $11 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $default39 + block $case440 + block $case341 + block $case242 + block $case143 + block $case044 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case044 $case143 $case242 $case341 $case440 $default39 + end + local.get $1 + i32.const 2359776 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$142 + end + local.get $1 + i32.const 262624 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$142 + end + local.get $1 + i32.const 2359776 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$142 + end + local.get $1 + i32.const -2145123872 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$142 + end + local.get $1 + i32.const 245760 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$142 + end + unreachable + end + else + i32.const 0 + local.set $1 + end + local.get $1 + if + i32.const 0 + local.set $11 + i32.const 1 + local.set $5 + loop $for-loop|28 + local.get $5 + local.get $2 + i32.const 1 + i32.sub + i32.extend8_s + i32.lt_s + if + block $for-break28 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$143 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + local.get $2 + i32.extend8_s + i32.add + local.get $18 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $5 + local.get $15 + i32.load offset=36 + i32.add + local.get $19 + i32.add + local.tee $24 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $25 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$143 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $24 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $25 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$143 + drop + local.get $25 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$144 + block $default40 + block $case441 + block $case342 + block $case243 + block $case144 + block $case045 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case045 $case144 $case243 $case342 $case441 $default40 + end + local.get $1 + i32.const 2359779 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$144 + end + local.get $1 + i32.const 262627 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$144 + end + local.get $1 + i32.const 2359779 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$144 + end + local.get $1 + i32.const -2145123869 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$144 + end + local.get $1 + i32.const 247296 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$144 + end + unreachable + end + local.get $1 + i32.eqz + if + i32.const 1 + local.set $11 + br $for-break28 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|28 + end + end + end + local.get $11 + i32.eqz + if + local.get $3 + local.get $15 + i32.load offset=4 + i32.mul + local.get $23 + i32.add + i32.const 2 + i32.shl + local.tee $1 + local.get $15 + i32.load offset=16 + i32.add + i32.const 8 + i32.store + local.get $1 + local.get $15 + i32.load offset=20 + i32.add + local.get $22 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $23 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + end + local.get $15 + i32.load offset=32 + local.set $3 + local.get $15 + i32.load offset=36 + local.tee $1 + i32.const 1 + i32.sub + local.set $23 + local.get $1 + i32.const 0 + i32.gt_s + if (result i32) + local.get $15 + i32.load offset=16 + local.get $3 + local.get $15 + i32.load offset=4 + i32.mul + local.get $23 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $1 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$146 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$145 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $3 + local.get $18 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $23 + i32.add + local.tee $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$145 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$145 + drop + local.get $11 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $default41 + block $case442 + block $case343 + block $case244 + block $case145 + block $case046 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case046 $case145 $case244 $case343 $case442 $default41 + end + local.get $1 + i32.const 2359566 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$146 + end + local.get $1 + i32.const 262414 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$146 + end + local.get $1 + i32.const 2359566 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$146 + end + local.get $1 + i32.const -2145124082 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$146 + end + local.get $1 + i32.const 138240 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$146 + end + unreachable + end + end + local.get $1 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$148 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$147 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + local.get $2 + i32.extend8_s + i32.add + i32.const 1 + i32.sub + local.get $18 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $23 + i32.add + local.tee $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$147 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$147 + drop + local.get $11 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $default42 + block $case443 + block $case344 + block $case245 + block $case146 + block $case047 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case047 $case146 $case245 $case344 $case443 $default42 + end + local.get $1 + i32.const 2359683 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$148 + end + local.get $1 + i32.const 262531 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$148 + end + local.get $1 + i32.const 2359683 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$148 + end + local.get $1 + i32.const -2145123965 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$148 + end + local.get $1 + i32.const 198144 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$148 + end + unreachable + end + else + i32.const 0 + local.set $1 + end + local.get $1 + if + i32.const 0 + local.set $11 + i32.const 1 + local.set $5 + loop $for-loop|29 + local.get $5 + local.get $2 + i32.const 1 + i32.sub + i32.extend8_s + i32.lt_s + if + block $for-break29 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$149 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $5 + local.get $15 + i32.load offset=32 + i32.add + local.get $18 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $23 + i32.add + local.tee $24 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $25 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$149 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $24 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $25 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$149 + drop + local.get $25 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$150 + block $default43 + block $case444 + block $case345 + block $case246 + block $case147 + block $case048 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case048 $case147 $case246 $case345 $case444 $default43 + end + local.get $1 + i32.const 2359695 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$150 + end + local.get $1 + i32.const 262543 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$150 + end + local.get $1 + i32.const 2359695 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$150 + end + local.get $1 + i32.const -2145123953 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$150 + end + local.get $1 + i32.const 204288 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$150 + end + unreachable + end + local.get $1 + i32.eqz + if + i32.const 1 + local.set $11 + br $for-break29 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|29 + end + end + end + local.get $11 + i32.eqz + if + local.get $3 + local.get $15 + i32.load offset=4 + i32.mul + local.get $23 + i32.add + i32.const 2 + i32.shl + local.tee $1 + local.get $15 + i32.load offset=16 + i32.add + i32.const 1 + i32.store + local.get $1 + local.get $15 + i32.load offset=20 + i32.add + local.get $22 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $23 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + end + local.get $15 + i32.load offset=32 + local.set $3 + local.get $15 + i32.load offset=36 + local.tee $1 + i32.const 1 + i32.add + local.set $23 + local.get $1 + local.get $21 + i32.lt_s + if (result i32) + local.get $15 + i32.load offset=16 + local.get $3 + local.get $15 + i32.load offset=4 + i32.mul + local.get $23 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $1 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$152 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$151 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $3 + local.get $18 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + local.get $2 + i32.extend8_s + i32.add + local.get $19 + i32.add + local.tee $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$151 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$151 + drop + local.get $11 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $default44 + block $case445 + block $case346 + block $case247 + block $case148 + block $case049 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case049 $case148 $case247 $case346 $case445 $default44 + end + local.get $1 + i32.const 2359608 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$152 + end + local.get $1 + i32.const 262456 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$152 + end + local.get $1 + i32.const 2359608 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$152 + end + local.get $1 + i32.const -2145124040 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$152 + end + local.get $1 + i32.const 159744 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$152 + end + unreachable + end + end + local.get $1 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$154 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$153 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + i32.extend8_s + local.tee $1 + local.get $15 + i32.load offset=32 + i32.add + i32.const 1 + i32.sub + local.get $18 + i32.add + local.tee $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + local.get $1 + i32.add + local.get $19 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$153 + drop + i32.const -1 + local.get $5 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$153 + drop + local.get $11 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $default45 + block $case446 + block $case347 + block $case248 + block $case149 + block $case050 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case050 $case149 $case248 $case347 $case446 $default45 + end + local.get $1 + i32.const 2359776 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$154 + end + local.get $1 + i32.const 262624 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$154 + end + local.get $1 + i32.const 2359776 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$154 + end + local.get $1 + i32.const -2145123872 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$154 + end + local.get $1 + i32.const 245760 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$154 + end + unreachable + end + else + i32.const 0 + local.set $1 + end + local.get $1 + if + i32.const 0 + local.set $11 + i32.const 1 + local.set $5 + loop $for-loop|30 + local.get $5 + local.get $2 + i32.const 1 + i32.sub + i32.extend8_s + i32.lt_s + if + block $for-break30 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$155 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $3 + local.get $5 + i32.add + local.get $18 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + local.get $2 + i32.extend8_s + i32.add + local.get $19 + i32.add + local.tee $24 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $25 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$155 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $24 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $25 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$155 + drop + local.get $25 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$156 + block $default46 + block $case447 + block $case348 + block $case249 + block $case150 + block $case051 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case051 $case150 $case249 $case348 $case447 $default46 + end + local.get $1 + i32.const 2359800 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$156 + end + local.get $1 + i32.const 262648 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$156 + end + local.get $1 + i32.const 2359800 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$156 + end + local.get $1 + i32.const -2145123848 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$156 + end + local.get $1 + i32.const 258048 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$156 + end + unreachable + end + local.get $1 + i32.eqz + if + i32.const 1 + local.set $11 + br $for-break30 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|30 + end + end + end + local.get $11 + i32.eqz + if + local.get $3 + local.get $15 + i32.load offset=4 + i32.mul + local.get $23 + i32.add + i32.const 2 + i32.shl + local.tee $1 + local.get $15 + i32.load offset=16 + i32.add + i32.const 4 + i32.store + local.get $1 + local.get $15 + i32.load offset=20 + i32.add + local.get $22 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $23 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + end + local.get $15 + i32.load offset=32 + local.tee $1 + i32.const 1 + i32.sub + local.set $3 + local.get $15 + i32.load offset=36 + local.tee $5 + i32.const 1 + i32.sub + local.set $23 + local.get $5 + i32.const 0 + i32.gt_s + local.get $1 + i32.const 0 + i32.gt_s + i32.and + if (result i32) + local.get $15 + i32.load offset=16 + local.get $3 + local.get $15 + i32.load offset=4 + i32.mul + local.get $23 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $1 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$158 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$157 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $3 + local.get $18 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $23 + i32.add + local.tee $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$157 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$157 + drop + local.get $11 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $default47 + block $case448 + block $case349 + block $case250 + block $case151 + block $case052 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case052 $case151 $case250 $case349 $case448 $default47 + end + local.get $1 + i32.const 2359566 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$158 + end + local.get $1 + i32.const 262414 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$158 + end + local.get $1 + i32.const 2359566 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$158 + end + local.get $1 + i32.const -2145124082 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$158 + end + local.get $1 + i32.const 138240 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$158 + end + unreachable + end + end + local.get $1 + if + i32.const 0 + local.set $11 + i32.const 1 + local.set $5 + loop $for-loop|31 + local.get $5 + local.get $2 + i32.extend8_s + i32.lt_s + if + block $for-break31 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$159 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $3 + local.get $18 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $5 + local.get $15 + i32.load offset=36 + i32.add + i32.const 1 + i32.sub + local.get $19 + i32.add + local.tee $24 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + local.tee $25 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $26 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$159 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $24 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $26 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$159 + drop + local.get $26 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$160 + block $default48 + block $case449 + block $case350 + block $case251 + block $case152 + block $case053 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case053 $case152 $case251 $case350 $case449 $default48 + end + local.get $1 + i32.const 2359614 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$160 + end + local.get $1 + i32.const 262462 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$160 + end + local.get $1 + i32.const 2359614 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$160 + end + local.get $1 + i32.const -2145124034 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$160 + end + local.get $1 + i32.const 162816 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$160 + end + unreachable + end + local.get $1 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$162 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$161 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $5 + local.get $15 + i32.load offset=32 + i32.add + i32.const 1 + i32.sub + local.get $18 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $23 + i32.add + local.tee $24 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $25 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $25 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$161 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $24 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $25 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$161 + drop + local.get $25 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $default49 + block $case450 + block $case351 + block $case252 + block $case153 + block $case054 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case054 $case153 $case252 $case351 $case450 $default49 + end + local.get $1 + i32.const 2359695 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$162 + end + local.get $1 + i32.const 262543 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$162 + end + local.get $1 + i32.const 2359695 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$162 + end + local.get $1 + i32.const -2145123953 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$162 + end + local.get $1 + i32.const 204288 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$162 + end + unreachable + end + else + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 1 + local.set $11 + br $for-break31 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|31 + end + end + end + local.get $11 + i32.eqz + if + local.get $3 + local.get $15 + i32.load offset=4 + i32.mul + local.get $23 + i32.add + i32.const 2 + i32.shl + local.tee $1 + local.get $15 + i32.load offset=16 + i32.add + i32.const 3 + i32.store + local.get $1 + local.get $15 + i32.load offset=20 + i32.add + local.get $22 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $23 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + end + local.get $15 + i32.load offset=32 + local.tee $1 + i32.const 1 + i32.add + local.set $3 + local.get $15 + i32.load offset=36 + local.tee $5 + i32.const 1 + i32.sub + local.set $23 + local.get $1 + local.get $21 + i32.lt_s + local.get $5 + i32.const 0 + i32.gt_s + i32.and + if (result i32) + local.get $15 + i32.load offset=16 + local.get $3 + local.get $15 + i32.load offset=4 + i32.mul + local.get $23 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $1 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$164 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$163 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + local.get $2 + i32.extend8_s + i32.add + local.get $18 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $23 + i32.add + local.tee $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$163 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$163 + drop + local.get $11 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $default50 + block $case451 + block $case352 + block $case253 + block $case154 + block $case055 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case055 $case154 $case253 $case352 $case451 $default50 + end + local.get $1 + i32.const 2359683 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$164 + end + local.get $1 + i32.const 262531 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$164 + end + local.get $1 + i32.const 2359683 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$164 + end + local.get $1 + i32.const -2145123965 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$164 + end + local.get $1 + i32.const 198144 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$164 + end + unreachable + end + end + local.get $1 + if + i32.const 0 + local.set $11 + i32.const 1 + local.set $5 + local.get $2 + i32.extend8_s + local.set $24 + loop $for-loop|32 + local.get $5 + local.get $24 + i32.lt_s + if + block $for-break32 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$165 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + local.get $24 + i32.add + local.get $18 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $5 + local.get $15 + i32.load offset=36 + i32.add + i32.const 1 + i32.sub + local.get $19 + i32.add + local.tee $25 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + local.tee $26 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $27 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$165 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $25 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $27 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$165 + drop + local.get $27 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$166 + block $default51 + block $case452 + block $case353 + block $case254 + block $case155 + block $case056 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case056 $case155 $case254 $case353 $case452 $default51 + end + local.get $1 + i32.const 2359779 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$166 + end + local.get $1 + i32.const 262627 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$166 + end + local.get $1 + i32.const 2359779 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$166 + end + local.get $1 + i32.const -2145123869 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$166 + end + local.get $1 + i32.const 247296 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$166 + end + unreachable + end + local.get $1 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$168 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$167 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $5 + local.get $15 + i32.load offset=32 + i32.add + local.get $18 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $19 + local.get $23 + i32.add + local.tee $25 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $26 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $26 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$167 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $25 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $26 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$167 + drop + local.get $26 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $default52 + block $case453 + block $case354 + block $case255 + block $case156 + block $case057 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case057 $case156 $case255 $case354 $case453 $default52 + end + local.get $1 + i32.const 2359695 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$168 + end + local.get $1 + i32.const 262543 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$168 + end + local.get $1 + i32.const 2359695 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$168 + end + local.get $1 + i32.const -2145123953 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$168 + end + local.get $1 + i32.const 204288 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$168 + end + unreachable + end + else + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 1 + local.set $11 + br $for-break32 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|32 + end + end + end + local.get $11 + i32.eqz + if + local.get $3 + local.get $15 + i32.load offset=4 + i32.mul + local.get $23 + i32.add + i32.const 2 + i32.shl + local.tee $1 + local.get $15 + i32.load offset=16 + i32.add + i32.const 9 + i32.store + local.get $1 + local.get $15 + i32.load offset=20 + i32.add + local.get $22 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $23 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + end + local.get $15 + i32.load offset=32 + local.tee $1 + i32.const 1 + i32.sub + local.set $3 + local.get $15 + i32.load offset=36 + local.tee $5 + i32.const 1 + i32.add + local.set $23 + local.get $5 + local.get $21 + i32.lt_s + local.get $1 + i32.const 0 + i32.gt_s + i32.and + if (result i32) + local.get $15 + i32.load offset=16 + local.get $3 + local.get $15 + i32.load offset=4 + i32.mul + local.get $23 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $1 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$170 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$169 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $3 + local.get $18 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + local.get $2 + i32.extend8_s + i32.add + local.get $19 + i32.add + local.tee $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$169 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$169 + drop + local.get $11 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $default53 + block $case454 + block $case355 + block $case256 + block $case157 + block $case058 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case058 $case157 $case256 $case355 $case454 $default53 + end + local.get $1 + i32.const 2359608 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$170 + end + local.get $1 + i32.const 262456 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$170 + end + local.get $1 + i32.const 2359608 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$170 + end + local.get $1 + i32.const -2145124040 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$170 + end + local.get $1 + i32.const 159744 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$170 + end + unreachable + end + end + local.get $1 + if + i32.const 0 + local.set $11 + i32.const 1 + local.set $5 + local.get $2 + i32.extend8_s + local.set $24 + loop $for-loop|33 + local.get $5 + local.get $24 + i32.lt_s + if + block $for-break33 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$171 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $3 + local.get $18 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $5 + local.get $15 + i32.load offset=36 + i32.add + local.get $19 + i32.add + local.tee $25 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + local.tee $26 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $27 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$171 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $25 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $27 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$171 + drop + local.get $27 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$172 + block $default54 + block $case455 + block $case356 + block $case257 + block $case158 + block $case059 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case059 $case158 $case257 $case356 $case455 $default54 + end + local.get $1 + i32.const 2359614 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$172 + end + local.get $1 + i32.const 262462 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$172 + end + local.get $1 + i32.const 2359614 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$172 + end + local.get $1 + i32.const -2145124034 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$172 + end + local.get $1 + i32.const 162816 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$172 + end + unreachable + end + local.get $1 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$174 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$173 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $5 + local.get $15 + i32.load offset=32 + i32.add + i32.const 1 + i32.sub + local.get $18 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + local.get $24 + i32.add + local.get $19 + i32.add + local.tee $25 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $26 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $26 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$173 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $25 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $26 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$173 + drop + local.get $26 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $default55 + block $case456 + block $case357 + block $case258 + block $case159 + block $case060 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case060 $case159 $case258 $case357 $case456 $default55 + end + local.get $1 + i32.const 2359800 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$174 + end + local.get $1 + i32.const 262648 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$174 + end + local.get $1 + i32.const 2359800 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$174 + end + local.get $1 + i32.const -2145123848 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$174 + end + local.get $1 + i32.const 258048 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$174 + end + unreachable + end + else + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 1 + local.set $11 + br $for-break33 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|33 + end + end + end + local.get $11 + i32.eqz + if + local.get $3 + local.get $15 + i32.load offset=4 + i32.mul + local.get $23 + i32.add + i32.const 2 + i32.shl + local.tee $1 + local.get $15 + i32.load offset=16 + i32.add + i32.const 6 + i32.store + local.get $1 + local.get $15 + i32.load offset=20 + i32.add + local.get $22 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $23 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + end + local.get $15 + i32.load offset=32 + local.tee $1 + i32.const 1 + i32.add + local.set $3 + local.get $15 + i32.load offset=36 + local.tee $5 + i32.const 1 + i32.add + local.set $23 + local.get $5 + local.get $21 + i32.lt_s + local.get $1 + local.get $21 + i32.lt_s + i32.and + if (result i32) + local.get $15 + i32.load offset=16 + local.get $3 + local.get $15 + i32.load offset=4 + i32.mul + local.get $23 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 1 + end + if + i32.const 0 + local.set $1 + else + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$176 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$175 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $2 + i32.extend8_s + local.tee $1 + local.get $15 + i32.load offset=32 + i32.add + local.get $18 + i32.add + local.tee $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + local.get $1 + i32.add + local.get $19 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$175 + drop + i32.const -1 + local.get $5 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$175 + drop + local.get $11 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $default56 + block $case457 + block $case358 + block $case259 + block $case160 + block $case061 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case061 $case160 $case259 $case358 $case457 $default56 + end + local.get $1 + i32.const 2359776 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$176 + end + local.get $1 + i32.const 262624 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$176 + end + local.get $1 + i32.const 2359776 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$176 + end + local.get $1 + i32.const -2145123872 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$176 + end + local.get $1 + i32.const 245760 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$176 + end + unreachable + end + end + local.get $1 + if + i32.const 0 + local.set $11 + i32.const 1 + local.set $5 + local.get $2 + i32.extend8_s + local.set $24 + loop $for-loop|34 + local.get $5 + local.get $24 + i32.lt_s + if + block $for-break34 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$177 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $5 + local.get $15 + i32.load offset=32 + i32.add + local.get $18 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $15 + i32.load offset=36 + local.get $24 + i32.add + local.get $19 + i32.add + local.tee $25 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.extend8_s + local.tee $26 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $27 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$177 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $25 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $27 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$177 + drop + local.get $27 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$178 + block $default57 + block $case458 + block $case359 + block $case260 + block $case161 + block $case062 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case062 $case161 $case260 $case359 $case458 $default57 + end + local.get $1 + i32.const 2359800 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$178 + end + local.get $1 + i32.const 262648 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$178 + end + local.get $1 + i32.const 2359800 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$178 + end + local.get $1 + i32.const -2145123848 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$178 + end + local.get $1 + i32.const 258048 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$178 + end + unreachable + end + local.get $1 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$180 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$179 (result i32) + i32.const -1 + local.get $15 + i32.load + i32.load + local.get $15 + i32.load offset=32 + local.get $24 + i32.add + local.get $18 + i32.add + local.tee $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $5 + local.get $15 + i32.load offset=36 + i32.add + local.get $19 + i32.add + local.tee $25 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $26 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $26 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$179 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $25 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $26 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$179 + drop + local.get $26 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $1 + block $default58 + block $case459 + block $case360 + block $case261 + block $case162 + block $case063 + local.get $16 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case063 $case162 $case261 $case360 $case459 $default58 + end + local.get $1 + i32.const 2359779 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$180 + end + local.get $1 + i32.const 262627 + i32.and + i32.eqz + local.get $1 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$180 + end + local.get $1 + i32.const 2359779 + i32.and + i32.eqz + local.get $1 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$180 + end + local.get $1 + i32.const -2145123869 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$180 + end + local.get $1 + i32.const 247296 + i32.and + i32.eqz + local.set $1 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$180 + end + unreachable + end + else + i32.const 0 + local.set $1 + end + local.get $1 + i32.eqz + if + i32.const 1 + local.set $11 + br $for-break34 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|34 + end + end + end + local.get $11 + i32.eqz + if + local.get $3 + local.get $15 + i32.load offset=4 + i32.mul + local.get $23 + i32.add + i32.const 2 + i32.shl + local.tee $1 + local.get $15 + i32.load offset=16 + i32.add + i32.const 12 + i32.store + local.get $1 + local.get $15 + i32.load offset=20 + i32.add + local.get $22 + i32.store + local.get $15 + i32.load offset=24 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $15 + i32.load offset=28 + local.get $15 + i32.load offset=44 + i32.const 2 + i32.shl + i32.add + local.get $23 + i32.store + local.get $15 + local.get $15 + i32.load offset=44 + i32.const 1 + i32.add + local.get $15 + i32.load offset=8 + i32.const 1 + i32.sub + i32.and + i32.store offset=44 + end + end + br $while-continue|18 + end + end + i32.const 0 + end + end + end + i32.eqz + if + global.get $src/rsmod/PathFinder/PathFinder.EMPTY + local.get $10 + i32.eqz + br_if $src/rsmod/PathFinder/PathFinder#findPath|inlined.0 + drop + local.get $7 + local.get $6 + local.get $8 + i32.const 1 + i32.and + local.tee $0 + select + i32.extend8_s + local.set $1 + local.get $6 + local.get $7 + local.get $0 + select + i32.extend8_s + local.set $5 + i32.const 1000 + local.set $0 + i32.const 100 + local.set $7 + local.get $20 + i32.const 10 + i32.sub + local.set $2 + loop $for-loop|35 + local.get $2 + local.get $20 + i32.const 10 + i32.add + i32.le_s + if + local.get $4 + i32.const 10 + i32.sub + local.set $3 + loop $for-loop|36 + local.get $3 + local.get $4 + i32.const 10 + i32.add + i32.le_s + if + local.get $2 + i32.const 0 + i32.ge_s + if (result i32) + local.get $2 + local.get $15 + i32.load offset=4 + i32.lt_s + else + i32.const 0 + end + if (result i32) + local.get $3 + i32.const 0 + i32.ge_s + if (result i32) + local.get $3 + local.get $15 + i32.load offset=4 + i32.lt_s + else + i32.const 0 + end + else + i32.const 0 + end + if (result i32) + local.get $15 + i32.load offset=20 + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 100 + i32.ge_s + else + i32.const 1 + end + i32.eqz + if + local.get $2 + local.get $20 + i32.lt_s + if (result i32) + local.get $20 + local.get $2 + i32.sub + else + local.get $2 + local.get $1 + local.get $20 + i32.add + i32.const 1 + i32.sub + local.tee $6 + i32.sub + i32.const 0 + local.get $2 + local.get $6 + i32.gt_s + select + end + local.tee $6 + local.get $6 + i32.mul + local.get $3 + local.get $4 + i32.lt_s + if (result i32) + local.get $4 + local.get $3 + i32.sub + else + local.get $3 + local.get $4 + local.get $5 + i32.add + i32.const 1 + i32.sub + local.tee $6 + i32.sub + i32.const 0 + local.get $3 + local.get $6 + i32.gt_s + select + end + local.tee $6 + local.get $6 + i32.mul + i32.add + local.tee $6 + local.get $0 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $0 + local.get $6 + i32.eq + if (result i32) + local.get $7 + local.get $15 + i32.load offset=20 + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + i32.gt_s + else + i32.const 0 + end + end + if + local.get $15 + local.get $2 + i32.store offset=32 + local.get $15 + local.get $3 + i32.store offset=36 + local.get $15 + i32.load offset=20 + local.get $2 + local.get $15 + i32.load offset=4 + i32.mul + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + local.get $6 + local.set $0 + end + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|36 + end + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|35 + end + end + global.get $src/rsmod/PathFinder/PathFinder.EMPTY + local.get $0 + i32.const 1000 + i32.eq + br_if $src/rsmod/PathFinder/PathFinder#findPath|inlined.0 + drop + end + i32.const 0 + i32.const 11 + i32.const 4448 + call $~lib/rt/__newArray + local.set $0 + local.get $15 + i32.load offset=16 + local.get $15 + i32.load offset=36 + local.get $15 + i32.load offset=4 + local.get $15 + i32.load offset=32 + i32.mul + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + i32.const -1 + local.set $1 + i32.const 0 + local.set $3 + loop $for-loop|37 + local.get $3 + local.get $15 + i32.load offset=16 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.lt_s + if + local.get $14 + local.get $15 + i32.load offset=32 + i32.eq + if (result i32) + local.get $17 + local.get $15 + i32.load offset=36 + i32.eq + else + i32.const 0 + end + i32.eqz + if + local.get $1 + local.get $2 + i32.ne + if + local.get $2 + local.set $1 + local.get $0 + i32.load offset=12 + local.tee $2 + local.get $12 + i32.ge_s + if + local.get $2 + i32.const 0 + i32.le_s + if + i32.const 4480 + i32.const 1584 + i32.const 271 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + i32.add + i32.load + drop + local.get $0 + local.get $2 + i32.store offset=12 + end + local.get $13 + i32.const 3 + i32.and + i32.const 4 + i32.shl + i32.extend8_s + local.get $19 + local.get $15 + i32.load offset=36 + i32.add + i32.const 16383 + i32.and + local.get $18 + local.get $15 + i32.load offset=32 + i32.add + i32.const 16383 + i32.and + i32.const 14 + i32.shl + i32.or + i32.or + local.set $2 + local.get $0 + local.get $0 + i32.load offset=12 + i32.const 1 + i32.add + local.tee $4 + call $~lib/array/ensureCapacity + local.get $0 + i32.load offset=4 + local.tee $5 + i32.const 4 + i32.add + local.get $5 + local.get $4 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + memory.copy + local.get $5 + local.get $2 + i32.store + local.get $0 + local.get $4 + i32.store offset=12 + end + local.get $1 + i32.const 2 + i32.and + if + local.get $15 + local.get $15 + i32.load offset=32 + i32.const 1 + i32.add + i32.store offset=32 + else + local.get $1 + i32.const 8 + i32.and + if + local.get $15 + local.get $15 + i32.load offset=32 + i32.const 1 + i32.sub + i32.store offset=32 + end + end + local.get $1 + i32.const 1 + i32.and + if + local.get $15 + local.get $15 + i32.load offset=36 + i32.const 1 + i32.add + i32.store offset=36 + else + local.get $1 + i32.const 4 + i32.and + if + local.get $15 + local.get $15 + i32.load offset=36 + i32.const 1 + i32.sub + i32.store offset=36 + end + end + local.get $15 + i32.load offset=16 + local.get $15 + i32.load offset=36 + local.get $15 + i32.load offset=4 + local.get $15 + i32.load offset=32 + i32.mul + i32.add + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|37 + end + end + end + local.get $0 + i32.load offset=12 + call $~lib/staticarray/StaticArray#constructor + local.set $2 + i32.const 0 + local.set $1 + loop $for-loop|38 + local.get $1 + local.get $0 + i32.load offset=12 + i32.lt_s + if + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + local.get $2 + i32.add + local.get $0 + i32.load offset=4 + local.get $3 + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|38 + end + end + local.get $2 + end + ) + (func $src/index/findPath@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (param $11 i32) (param $12 i32) (param $13 i32) (result i32) + block $9of9 + block $8of9 + block $7of9 + block $6of9 + block $5of9 + block $4of9 + block $3of9 + block $2of9 + block $1of9 + block $0of9 + block $outOfRange + global.get $~argumentsLength + i32.const 5 + i32.sub + br_table $0of9 $1of9 $2of9 $3of9 $4of9 $5of9 $6of9 $7of9 $8of9 $9of9 $outOfRange + end + unreachable + end + i32.const 1 + local.set $5 + end + i32.const 1 + local.set $6 + end + i32.const 1 + local.set $7 + end + i32.const 0 + local.set $8 + end + i32.const -1 + local.set $9 + end + i32.const 1 + local.set $10 + end + i32.const 0 + local.set $11 + end + i32.const 25 + local.set $12 + end + i32.const 0 + local.set $13 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + local.get $4 + local.get $5 + local.get $6 + local.get $7 + local.get $8 + local.get $9 + local.get $10 + local.get $11 + local.get $12 + local.get $13 + call $src/index/findPath + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1520 + i32.const 1584 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=12 + i32.eqz + if + local.get $0 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + i32.const 1 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.store + ) + (func $~lib/staticarray/StaticArray.fromArray (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + local.tee $1 + i32.const 4 + call $~lib/rt/tcms/__new + local.tee $2 + local.get $0 + i32.load offset=4 + local.get $1 + memory.copy + local.get $2 + ) + (func $~lib/staticarray/StaticArray#__get (param $0 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.eqz + if + i32.const 1520 + i32.const 1104 + i32.const 78 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + ) + (func $src/index/findNaivePath (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (result i32) + (local $11 i64) + (local $12 i32) + (local $13 f64) + (local $14 i32) + (local $15 i64) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + block $src/rsmod/NaivePathFinder/NaivePathFinder#findPath|inlined.0 (result i32) + global.get $src/index/naivePathfinder + local.set $14 + local.get $10 + call $src/index/getCollisionStrategy + local.set $12 + local.get $1 + i32.const 32767 + i32.le_s + local.get $1 + i32.const 0 + i32.ge_s + i32.and + local.get $2 + i32.const 0 + i32.ge_s + i32.and + local.get $2 + i32.const 32767 + i32.le_s + i32.and + i32.eqz + if + local.get $1 + call $~lib/util/number/itoa32 + local.set $0 + local.get $2 + call $~lib/util/number/itoa32 + local.set $1 + i32.const 4612 + local.get $0 + i32.store + i32.const 4620 + local.get $1 + i32.store + i32.const 4608 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + i32.const 4656 + i32.const 38 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 32767 + i32.le_s + local.get $3 + i32.const 0 + i32.ge_s + i32.and + local.get $4 + i32.const 0 + i32.ge_s + i32.and + local.get $4 + i32.const 32767 + i32.le_s + i32.and + i32.eqz + if + local.get $3 + call $~lib/util/number/itoa32 + local.set $0 + local.get $4 + call $~lib/util/number/itoa32 + local.set $1 + i32.const 4836 + local.get $0 + i32.store + i32.const 4844 + local.get $1 + i32.store + i32.const 4832 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + i32.const 4656 + i32.const 41 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.tee $10 + i32.extend8_s + local.tee $0 + i32.const 3 + i32.le_s + local.get $0 + i32.const 0 + i32.ge_s + i32.and + i32.eqz + if + i32.const 4980 + local.get $0 + call $~lib/util/number/itoa32 + i32.store + i32.const 4976 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + i32.const 4656 + i32.const 44 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.extend8_s + local.get $3 + i32.add + local.get $1 + i32.le_s + local.get $5 + i32.extend8_s + local.get $1 + i32.add + local.get $3 + i32.le_s + i32.or + local.get $6 + i32.extend8_s + local.get $2 + i32.add + local.get $4 + i32.le_s + i32.or + local.get $8 + i32.extend8_s + local.get $4 + i32.add + local.get $2 + i32.le_s + i32.or + i32.eqz + if + global.get $src/rsmod/NaivePathFinder/NaivePathFinder.DIRECTIONS + local.set $0 + global.get $~lib/math/random_seeded + i32.eqz + if + call $~lib/builtins/seed + i64.reinterpret_f64 + local.tee $11 + i64.eqz + if + i64.const -7046029254386353131 + local.set $11 + end + local.get $11 + i64.const 33 + i64.shr_u + local.get $11 + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $11 + local.get $11 + i64.const 33 + i64.shr_u + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $11 + local.get $11 + i64.const 33 + i64.shr_u + i64.xor + global.set $~lib/math/random_state0_64 + global.get $~lib/math/random_state0_64 + i64.const -1 + i64.xor + local.tee $11 + local.get $11 + i64.const 33 + i64.shr_u + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $11 + local.get $11 + i64.const 33 + i64.shr_u + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $11 + local.get $11 + i64.const 33 + i64.shr_u + i64.xor + global.set $~lib/math/random_state1_64 + i32.const 1 + global.set $~lib/math/random_seeded + end + global.get $~lib/math/random_state0_64 + local.set $15 + global.get $~lib/math/random_state1_64 + local.tee $11 + global.set $~lib/math/random_state0_64 + local.get $11 + local.get $15 + local.get $15 + i64.const 23 + i64.shl + i64.xor + local.tee $15 + local.get $15 + i64.const 17 + i64.shr_u + i64.xor + i64.xor + local.get $11 + i64.const 26 + i64.shr_u + i64.xor + global.set $~lib/math/random_state1_64 + local.get $11 + i64.const 12 + i64.shr_u + i64.const 4607182418800017408 + i64.or + f64.reinterpret_i64 + f64.const -1 + f64.add + global.get $src/rsmod/NaivePathFinder/NaivePathFinder.DIRECTIONS + i32.load offset=12 + f64.convert_i32_s + f64.mul + f64.floor + i32.trunc_sat_f64_s + local.tee $3 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1520 + i32.const 1584 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + if + i32.const 5008 + i32.const 1584 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 11 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.load offset=4 + drop + local.get $3 + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + local.get $2 + i32.add + i32.const 16383 + i32.and + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + local.get $1 + i32.add + i32.const 16383 + i32.and + i32.const 14 + i32.shl + i32.or + local.get $10 + i32.extend8_s + i32.const 3 + i32.and + i32.const 28 + i32.shl + i32.or + call $~lib/array/Array#__set + local.get $3 + call $~lib/staticarray/StaticArray.fromArray + br $src/rsmod/NaivePathFinder/NaivePathFinder#findPath|inlined.0 + end + local.get $10 + i32.extend8_s + local.set $0 + local.get $1 + local.get $3 + i32.sub + local.tee $1 + local.get $2 + local.get $4 + i32.sub + local.tee $2 + i32.sub + local.tee $16 + i32.const 0 + i32.lt_s + local.set $17 + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.const 1 + local.get $5 + i32.extend8_s + local.tee $2 + i32.sub + i32.ge_s + local.set $18 + local.get $16 + local.get $2 + local.get $6 + i32.extend8_s + local.tee $19 + i32.sub + i32.gt_s + local.set $20 + local.get $1 + i32.const 1 + local.get $19 + i32.sub + i32.le_s + local.set $21 + local.get $18 + i32.eqz + local.get $17 + i32.and + if (result i32) + i32.const 1 + i32.const 11 + i32.const 0 + call $~lib/rt/__newArray + local.tee $17 + i32.load offset=4 + drop + local.get $17 + local.get $1 + i32.const 0 + local.get $2 + i32.sub + i32.ge_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.le_s + select + else + i32.const 0 + local.get $2 + local.get $16 + i32.add + i32.sub + i32.const 0 + local.get $16 + i32.const 0 + local.get $2 + i32.sub + i32.gt_s + select + end + local.get $4 + i32.add + i32.const 16383 + i32.and + local.get $3 + local.get $2 + i32.sub + i32.const 16383 + i32.and + i32.const 14 + i32.shl + i32.or + local.get $0 + i32.const 3 + i32.and + i32.const 28 + i32.shl + i32.or + call $~lib/array/Array#__set + local.get $17 + call $~lib/staticarray/StaticArray.fromArray + else + local.get $20 + i32.eqz + local.get $18 + i32.and + if (result i32) + i32.const 1 + i32.const 11 + i32.const 0 + call $~lib/rt/__newArray + local.tee $17 + i32.load offset=4 + drop + local.get $17 + local.get $4 + i32.const 1 + i32.add + i32.const 16383 + i32.and + local.get $16 + i32.const -1 + i32.ge_s + if (result i32) + local.get $16 + i32.const 1 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.le_s + select + else + local.get $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $2 + i32.sub + local.tee $2 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + local.get $1 + local.get $2 + i32.lt_s + select + else + i32.const 0 + end + end + local.get $3 + i32.add + i32.const 16383 + i32.and + i32.const 14 + i32.shl + i32.or + local.get $0 + i32.const 3 + i32.and + i32.const 28 + i32.shl + i32.or + call $~lib/array/Array#__set + local.get $17 + call $~lib/staticarray/StaticArray.fromArray + else + local.get $21 + i32.eqz + local.get $20 + i32.and + if (result i32) + i32.const 1 + i32.const 11 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.load offset=4 + drop + local.get $2 + local.get $16 + i32.const 1 + i32.le_s + if (result i32) + i32.const 1 + local.get $16 + i32.sub + else + local.get $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $19 + i32.sub + local.tee $16 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + local.get $1 + local.get $16 + i32.lt_s + select + else + i32.const 0 + end + end + local.get $4 + i32.add + i32.const 16383 + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 16383 + i32.and + i32.const 14 + i32.shl + i32.or + local.get $0 + i32.const 3 + i32.and + i32.const 28 + i32.shl + i32.or + call $~lib/array/Array#__set + local.get $2 + call $~lib/staticarray/StaticArray.fromArray + else + local.get $17 + i32.eqz + local.get $21 + i32.and + i32.eqz + if + i32.const 5332 + i32.const 5376 + i32.const 5408 + local.get $21 + select + i32.store + i32.const 5340 + i32.const 5376 + i32.const 5408 + local.get $17 + select + i32.store + i32.const 5328 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + i32.const 4656 + i32.const 180 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 11 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.load offset=4 + drop + local.get $2 + local.get $4 + local.get $19 + i32.sub + i32.const 16383 + i32.and + local.get $1 + i32.const 0 + local.get $19 + i32.sub + i32.gt_s + if (result i32) + local.get $1 + local.get $19 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.le_s + select + else + local.get $16 + local.get $19 + i32.lt_s + if (result i32) + i32.const 1 + local.get $19 + i32.sub + local.tee $1 + local.get $16 + local.get $19 + i32.sub + local.tee $16 + local.get $1 + local.get $16 + i32.gt_s + select + else + i32.const 0 + end + end + local.get $3 + i32.add + i32.const 16383 + i32.and + i32.const 14 + i32.shl + i32.or + local.get $0 + i32.const 3 + i32.and + i32.const 28 + i32.shl + i32.or + call $~lib/array/Array#__set + local.get $2 + call $~lib/staticarray/StaticArray.fromArray + end + end + end + local.tee $2 + call $~lib/staticarray/StaticArray#__get + i32.const 14 + i32.shr_s + i32.const 16383 + i32.and + local.set $1 + local.get $2 + block $src/rsmod/NaivePathFinder/NaivePathFinder#isDiagonal|inlined.0 (result i32) + i32.const 1 + local.get $2 + call $~lib/staticarray/StaticArray#__get + i32.const 16383 + i32.and + local.tee $0 + local.get $6 + i32.extend8_s + i32.add + local.get $4 + i32.eq + local.tee $16 + local.get $5 + i32.extend8_s + local.get $1 + i32.add + local.get $3 + i32.eq + local.tee $17 + i32.and + br_if $src/rsmod/NaivePathFinder/NaivePathFinder#isDiagonal|inlined.0 + drop + i32.const 1 + local.get $0 + local.get $8 + i32.extend8_s + local.get $4 + i32.add + i32.eq + local.tee $18 + local.get $1 + local.get $7 + i32.extend8_s + local.get $3 + i32.add + i32.eq + local.tee $19 + i32.and + br_if $src/rsmod/NaivePathFinder/NaivePathFinder#isDiagonal|inlined.0 + drop + i32.const 1 + local.get $17 + local.get $18 + i32.and + br_if $src/rsmod/NaivePathFinder/NaivePathFinder#isDiagonal|inlined.0 + drop + local.get $16 + local.get $19 + i32.and + end + br_if $src/rsmod/NaivePathFinder/NaivePathFinder#findPath|inlined.0 + drop + local.get $2 + local.get $7 + i32.extend8_s + local.get $3 + i32.add + local.get $1 + i32.le_s + local.get $5 + i32.extend8_s + local.get $1 + i32.add + local.get $3 + i32.le_s + i32.or + local.get $6 + i32.extend8_s + local.get $0 + i32.add + local.get $4 + i32.le_s + i32.or + local.get $8 + i32.extend8_s + local.get $4 + i32.add + local.get $0 + i32.le_s + i32.or + i32.eqz + br_if $src/rsmod/NaivePathFinder/NaivePathFinder#findPath|inlined.0 + drop + loop $while-continue|0 + local.get $0 + local.get $4 + i32.ne + local.get $1 + local.get $3 + i32.ne + i32.and + if + block $while-break|0 + local.get $14 + i32.load + local.set $8 + local.get $9 + i32.extend8_s + local.set $16 + f64.const 1 + f64.const -1 + local.get $3 + local.get $1 + i32.sub + f64.convert_i32_s + local.tee $13 + local.get $13 + f64.const 0 + f64.lt + select + local.get $13 + f64.const 0 + f64.gt + select + i32.trunc_sat_f64_s + local.tee $17 + i32.const 255 + i32.and + i32.eqz + f64.const 1 + f64.const -1 + local.get $4 + local.get $0 + i32.sub + f64.convert_i32_s + local.tee $13 + local.get $13 + f64.const 0 + f64.lt + select + local.get $13 + f64.const 0 + f64.gt + select + i32.trunc_sat_f64_s + local.tee $18 + i32.const 255 + i32.and + i32.const 255 + i32.eq + i32.and + if + block $src/rsmod/StepValidator/StepValidator#isBlockedSouth|inlined.0 + local.get $10 + i32.extend8_s + local.set $19 + local.get $5 + i32.extend8_s + local.tee $20 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$181 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.sub + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$181 + drop + i32.const -1 + local.get $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$181 + drop + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359554 + i32.or + local.set $6 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$182 + block $default + block $case4 + block $case3 + block $case2 + block $case1 + block $case0 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case0 $case1 $case2 $case3 $case4 $default + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$182 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$182 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$182 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$182 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$182 + end + unreachable + end + local.get $2 + i32.eqz + else + local.get $20 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$183 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$183 + drop + i32.const -1 + local.get $2 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$183 + drop + local.get $7 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359566 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$184 + block $default0 + block $case41 + block $case32 + block $case23 + block $case14 + block $case05 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case05 $case14 $case23 $case32 $case41 $default0 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$184 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$184 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$184 + end + local.get $2 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$184 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$184 + end + unreachable + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$186 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$185 (result i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 7 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$185 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$185 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359683 + i32.or + local.set $6 + block $default1 + block $case42 + block $case33 + block $case24 + block $case15 + block $case06 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case06 $case15 $case24 $case33 $case42 $default1 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$186 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$186 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$186 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$186 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$186 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + else + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$187 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.sub + local.tee $7 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $21 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$187 + drop + i32.const -1 + local.get $6 + local.get $21 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$187 + drop + local.get $21 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359566 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$188 + block $default2 + block $case43 + block $case34 + block $case25 + block $case16 + block $case07 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case07 $case16 $case25 $case34 $case43 $default2 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$188 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$188 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$188 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$188 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$188 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedSouth|inlined.0 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$189 (result i32) + local.get $1 + local.get $20 + i32.add + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + local.get $7 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $21 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$189 + drop + i32.const -1 + local.get $21 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$189 + drop + local.get $6 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359683 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$190 + block $default3 + block $case44 + block $case35 + block $case26 + block $case17 + block $case08 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case08 $case17 $case26 $case35 $case44 $default3 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$190 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$190 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$190 + end + local.get $6 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$190 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$190 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedSouth|inlined.0 + local.get $1 + i32.const 1 + i32.add + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $1 + local.get $20 + i32.add + i32.const 1 + i32.sub + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$191 (result i32) + local.get $7 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $21 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$191 + drop + i32.const -1 + local.get $21 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$191 + drop + local.get $6 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359695 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$192 + block $default4 + block $case45 + block $case36 + block $case27 + block $case18 + block $case09 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case09 $case18 $case27 $case36 $case45 $default4 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$192 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$192 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$192 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$192 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$192 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedSouth|inlined.0 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + i32.const 0 + end + end + local.set $2 + end + else + local.get $17 + i32.const 255 + i32.and + i32.eqz + local.get $18 + i32.const 255 + i32.and + i32.const 1 + i32.eq + i32.and + if + block $src/rsmod/StepValidator/StepValidator#isBlockedNorth|inlined.0 + local.get $10 + i32.extend8_s + local.set $19 + local.get $5 + i32.extend8_s + local.tee $20 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$193 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.add + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$193 + drop + i32.const -1 + local.get $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$193 + drop + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359584 + i32.or + local.set $6 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$194 + block $default5 + block $case46 + block $case37 + block $case28 + block $case19 + block $case010 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case010 $case19 $case28 $case37 $case46 $default5 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$194 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$194 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$194 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$194 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$194 + end + unreachable + end + local.get $2 + i32.eqz + else + local.get $20 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$195 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 2 + i32.add + local.tee $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$195 + drop + i32.const -1 + local.get $2 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$195 + drop + local.get $7 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359608 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$196 + block $default6 + block $case47 + block $case38 + block $case29 + block $case110 + block $case011 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case011 $case110 $case29 $case38 $case47 $default6 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$196 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$196 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$196 + end + local.get $2 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$196 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$196 + end + unreachable + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$198 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$197 (result i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 7 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$197 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$197 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359776 + i32.or + local.set $6 + block $default7 + block $case48 + block $case39 + block $case210 + block $case111 + block $case012 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case012 $case111 $case210 $case39 $case48 $default7 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$198 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$198 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$198 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$198 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$198 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + else + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$199 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $0 + local.get $20 + i32.add + local.tee $7 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $21 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$199 + drop + i32.const -1 + local.get $6 + local.get $21 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$199 + drop + local.get $21 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359608 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$200 + block $default8 + block $case49 + block $case310 + block $case211 + block $case112 + block $case013 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case013 $case112 $case211 $case310 $case49 $default8 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$200 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$200 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$200 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$200 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$200 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorth|inlined.0 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$201 (result i32) + local.get $1 + local.get $20 + i32.add + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + local.get $7 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $21 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$201 + drop + i32.const -1 + local.get $21 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$201 + drop + local.get $6 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359776 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$202 + block $default9 + block $case410 + block $case311 + block $case212 + block $case113 + block $case014 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case014 $case113 $case212 $case311 $case410 $default9 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$202 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$202 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$202 + end + local.get $6 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$202 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$202 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorth|inlined.0 + local.get $1 + i32.const 1 + i32.add + local.set $7 + loop $for-loop|2 + local.get $7 + local.get $1 + local.get $20 + i32.add + i32.const 1 + i32.sub + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$203 (result i32) + local.get $7 + i32.const 7 + i32.and + local.get $0 + local.get $20 + i32.add + local.tee $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $21 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$203 + drop + i32.const -1 + local.get $21 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$203 + drop + local.get $6 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359800 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$204 + block $default10 + block $case411 + block $case312 + block $case213 + block $case114 + block $case015 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case015 $case114 $case213 $case312 $case411 $default10 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$204 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$204 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$204 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$204 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$204 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorth|inlined.0 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|2 + end + end + i32.const 0 + end + end + local.set $2 + end + else + local.get $18 + i32.const 255 + i32.and + i32.eqz + local.get $17 + i32.const 255 + i32.and + i32.const 255 + i32.eq + i32.and + if + block $src/rsmod/StepValidator/StepValidator#isBlockedWest|inlined.0 + local.get $10 + i32.extend8_s + local.set $19 + local.get $5 + i32.extend8_s + local.tee $20 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$205 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $2 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$205 + drop + i32.const -1 + local.get $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$205 + drop + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359560 + i32.or + local.set $6 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$206 + block $default11 + block $case412 + block $case313 + block $case214 + block $case115 + block $case016 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case016 $case115 $case214 $case313 $case412 $default11 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$206 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$206 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$206 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$206 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$206 + end + unreachable + end + local.get $2 + i32.eqz + else + local.get $20 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$207 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$207 + drop + i32.const -1 + local.get $2 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$207 + drop + local.get $7 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359566 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$208 + block $default12 + block $case413 + block $case314 + block $case215 + block $case116 + block $case017 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case017 $case116 $case215 $case314 $case413 $default12 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$208 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$208 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$208 + end + local.get $2 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$208 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$208 + end + unreachable + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$210 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$209 (result i32) + local.get $6 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.add + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$209 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$209 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359608 + i32.or + local.set $6 + block $default13 + block $case414 + block $case315 + block $case216 + block $case117 + block $case018 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case018 $case117 $case216 $case315 $case414 $default13 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$210 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$210 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$210 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$210 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$210 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + else + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$211 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $7 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $21 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$211 + drop + i32.const -1 + local.get $6 + local.get $21 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$211 + drop + local.get $21 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359566 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$212 + block $default14 + block $case415 + block $case316 + block $case217 + block $case118 + block $case019 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case019 $case118 $case217 $case316 $case415 $default14 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$212 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$212 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$212 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$212 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$212 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedWest|inlined.0 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$213 (result i32) + local.get $7 + i32.const 7 + i32.and + local.get $0 + local.get $20 + i32.add + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $21 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$213 + drop + i32.const -1 + local.get $21 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$213 + drop + local.get $6 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359608 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$214 + block $default15 + block $case416 + block $case317 + block $case218 + block $case119 + block $case020 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case020 $case119 $case218 $case317 $case416 $default15 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$214 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$214 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$214 + end + local.get $6 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$214 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$214 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedWest|inlined.0 + local.get $0 + i32.const 1 + i32.add + local.set $7 + loop $for-loop|3 + local.get $7 + local.get $0 + local.get $20 + i32.add + i32.const 1 + i32.sub + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$215 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + local.get $7 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $21 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$215 + drop + i32.const -1 + local.get $21 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$215 + drop + local.get $6 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359614 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$216 + block $default16 + block $case417 + block $case318 + block $case219 + block $case120 + block $case021 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case021 $case120 $case219 $case318 $case417 $default16 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$216 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$216 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$216 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$216 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$216 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedWest|inlined.0 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|3 + end + end + i32.const 0 + end + end + local.set $2 + end + else + local.get $18 + i32.const 255 + i32.and + i32.eqz + local.get $17 + i32.const 255 + i32.and + i32.const 1 + i32.eq + i32.and + if + block $src/rsmod/StepValidator/StepValidator#isBlockedEast|inlined.0 + local.get $10 + i32.extend8_s + local.set $19 + local.get $5 + i32.extend8_s + local.tee $20 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$217 (result i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$217 + drop + i32.const -1 + local.get $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$217 + drop + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359680 + i32.or + local.set $6 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$218 + block $default17 + block $case418 + block $case319 + block $case220 + block $case121 + block $case022 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case022 $case121 $case220 $case319 $case418 $default17 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$218 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$218 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$218 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$218 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$218 + end + unreachable + end + local.get $2 + i32.eqz + else + local.get $20 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$219 (result i32) + local.get $1 + i32.const 2 + i32.add + local.tee $6 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$219 + drop + i32.const -1 + local.get $2 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$219 + drop + local.get $7 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359683 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$220 + block $default18 + block $case419 + block $case320 + block $case221 + block $case122 + block $case023 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case023 $case122 $case221 $case320 $case419 $default18 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$220 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$220 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$220 + end + local.get $2 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$220 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$220 + end + unreachable + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$222 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$221 (result i32) + local.get $6 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.add + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$221 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$221 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359776 + i32.or + local.set $6 + block $default19 + block $case420 + block $case321 + block $case222 + block $case123 + block $case024 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case024 $case123 $case222 $case321 $case420 $default19 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$222 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$222 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$222 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$222 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$222 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + else + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$223 (result i32) + local.get $1 + local.get $20 + i32.add + local.tee $7 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $21 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$223 + drop + i32.const -1 + local.get $6 + local.get $21 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$223 + drop + local.get $21 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359683 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$224 + block $default20 + block $case421 + block $case322 + block $case223 + block $case124 + block $case025 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case025 $case124 $case223 $case322 $case421 $default20 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$224 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$224 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$224 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$224 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$224 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedEast|inlined.0 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$225 (result i32) + local.get $7 + i32.const 7 + i32.and + local.get $0 + local.get $20 + i32.add + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $21 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$225 + drop + i32.const -1 + local.get $21 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$225 + drop + local.get $6 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359776 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$226 + block $default21 + block $case422 + block $case323 + block $case224 + block $case125 + block $case026 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case026 $case125 $case224 $case323 $case422 $default21 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$226 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$226 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$226 + end + local.get $6 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$226 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$226 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedEast|inlined.0 + local.get $0 + i32.const 1 + i32.add + local.set $7 + loop $for-loop|4 + local.get $7 + local.get $0 + local.get $20 + i32.add + i32.const 1 + i32.sub + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$227 (result i32) + local.get $1 + local.get $20 + i32.add + local.tee $6 + i32.const 7 + i32.and + local.get $7 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $21 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$227 + drop + i32.const -1 + local.get $21 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$227 + drop + local.get $6 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359779 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$228 + block $default22 + block $case423 + block $case324 + block $case225 + block $case126 + block $case027 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case027 $case126 $case225 $case324 $case423 $default22 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$228 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$228 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$228 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$228 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$228 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedEast|inlined.0 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|4 + end + end + i32.const 0 + end + end + local.set $2 + end + else + local.get $18 + i32.const 255 + i32.and + i32.const 255 + i32.eq + local.get $17 + i32.const 255 + i32.and + i32.const 255 + i32.eq + i32.and + if + block $src/rsmod/StepValidator/StepValidator#isBlockedSouthWest|inlined.0 + local.get $10 + i32.extend8_s + local.set $19 + local.get $5 + i32.extend8_s + local.tee $20 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$229 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.sub + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$229 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$229 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359566 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$230 + block $default23 + block $case424 + block $case325 + block $case226 + block $case127 + block $case028 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case028 $case127 $case226 $case325 $case424 $default23 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$230 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$230 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$230 + end + local.get $2 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$230 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$230 + end + unreachable + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$232 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$231 (result i32) + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$231 + drop + i32.const -1 + local.get $6 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$231 + drop + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359560 + i32.or + local.set $6 + block $default24 + block $case425 + block $case326 + block $case227 + block $case128 + block $case029 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case029 $case128 $case227 $case326 $case425 $default24 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$232 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$232 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$232 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$232 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$232 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$234 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$233 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.sub + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$233 + drop + i32.const -1 + local.get $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$233 + drop + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359554 + i32.or + local.set $6 + block $default25 + block $case426 + block $case327 + block $case228 + block $case129 + block $case030 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case030 $case129 $case228 $case327 $case426 $default25 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$234 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$234 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$234 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$234 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$234 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + else + local.get $20 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$235 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$235 + drop + i32.const -1 + local.get $2 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$235 + drop + local.get $7 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359614 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$236 + block $default26 + block $case427 + block $case328 + block $case229 + block $case130 + block $case031 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case031 $case130 $case229 $case328 $case427 $default26 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$236 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$236 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$236 + end + local.get $2 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$236 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$236 + end + unreachable + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$238 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$237 (result i32) + local.get $6 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.sub + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$237 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$237 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359566 + i32.or + local.set $6 + block $default27 + block $case428 + block $case329 + block $case230 + block $case131 + block $case032 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case032 $case131 $case230 $case329 $case428 $default27 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$238 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$238 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$238 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$238 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$238 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$240 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$239 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.sub + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$239 + drop + i32.const -1 + local.get $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$239 + drop + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359695 + i32.or + local.set $6 + block $default28 + block $case429 + block $case330 + block $case231 + block $case132 + block $case033 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case033 $case132 $case231 $case330 $case429 $default28 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$240 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$240 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$240 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$240 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$240 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + else + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$241 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.sub + local.tee $7 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $21 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$241 + drop + i32.const -1 + local.get $21 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$241 + drop + local.get $6 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359566 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$242 + block $default29 + block $case430 + block $case331 + block $case232 + block $case133 + block $case034 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case034 $case133 $case232 $case331 $case430 $default29 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$242 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$242 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$242 + end + local.get $6 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$242 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$242 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedSouthWest|inlined.0 + i32.const 1 + local.set $7 + loop $for-loop|5 + local.get $7 + local.get $20 + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$243 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + local.get $0 + local.get $7 + i32.add + i32.const 1 + i32.sub + local.tee $21 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $22 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $21 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$243 + drop + i32.const -1 + local.get $22 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$243 + drop + local.get $6 + local.get $22 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359614 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$244 + block $default30 + block $case431 + block $case332 + block $case233 + block $case134 + block $case035 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case035 $case134 $case233 $case332 $case431 $default30 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$244 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$244 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$244 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$244 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$244 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedSouthWest|inlined.0 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$245 (result i32) + local.get $1 + local.get $7 + i32.add + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.sub + local.tee $21 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $22 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $21 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$245 + drop + i32.const -1 + local.get $22 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$245 + drop + local.get $6 + local.get $22 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359695 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$246 + block $default31 + block $case432 + block $case333 + block $case234 + block $case135 + block $case036 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case036 $case135 $case234 $case333 $case432 $default31 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$246 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$246 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$246 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$246 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$246 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedSouthWest|inlined.0 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|5 + end + end + i32.const 0 + end + end + local.set $2 + end + else + local.get $18 + i32.const 255 + i32.and + i32.const 1 + i32.eq + local.get $17 + i32.const 255 + i32.and + i32.const 255 + i32.eq + i32.and + if + block $src/rsmod/StepValidator/StepValidator#isBlockedNorthWest|inlined.0 + local.get $10 + i32.extend8_s + local.set $19 + local.get $5 + i32.extend8_s + local.tee $20 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$247 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.add + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$247 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$247 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359608 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$248 + block $default32 + block $case433 + block $case334 + block $case235 + block $case136 + block $case037 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case037 $case136 $case235 $case334 $case433 $default32 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$248 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$248 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$248 + end + local.get $2 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$248 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$248 + end + unreachable + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$250 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$249 (result i32) + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$249 + drop + i32.const -1 + local.get $6 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$249 + drop + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359560 + i32.or + local.set $6 + block $default33 + block $case434 + block $case335 + block $case236 + block $case137 + block $case038 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case038 $case137 $case236 $case335 $case434 $default33 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$250 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$250 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$250 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$250 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$250 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$252 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$251 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.add + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$251 + drop + i32.const -1 + local.get $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$251 + drop + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359584 + i32.or + local.set $6 + block $default34 + block $case435 + block $case336 + block $case237 + block $case138 + block $case039 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case039 $case138 $case237 $case336 $case435 $default34 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$252 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$252 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$252 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$252 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$252 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + else + local.get $20 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$253 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.add + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$253 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$253 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359614 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$254 + block $default35 + block $case436 + block $case337 + block $case238 + block $case139 + block $case040 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case040 $case139 $case238 $case337 $case436 $default35 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$254 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$254 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$254 + end + local.get $2 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$254 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$254 + end + unreachable + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$256 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$255 (result i32) + local.get $6 + i32.const 7 + i32.and + local.get $0 + i32.const 2 + i32.add + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$255 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$255 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359608 + i32.or + local.set $6 + block $default36 + block $case437 + block $case338 + block $case239 + block $case140 + block $case041 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case041 $case140 $case239 $case338 $case437 $default36 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$256 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$256 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$256 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$256 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$256 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$258 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$257 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 2 + i32.add + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$257 + drop + i32.const -1 + local.get $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$257 + drop + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359800 + i32.or + local.set $6 + block $default37 + block $case438 + block $case339 + block $case240 + block $case141 + block $case042 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case042 $case141 $case240 $case339 $case438 $default37 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$258 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$258 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$258 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$258 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$258 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + else + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$259 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + local.get $0 + local.get $20 + i32.add + local.tee $7 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $21 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$259 + drop + i32.const -1 + local.get $21 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$259 + drop + local.get $6 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359608 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$260 + block $default38 + block $case439 + block $case340 + block $case241 + block $case142 + block $case043 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case043 $case142 $case241 $case340 $case439 $default38 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$260 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$260 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$260 + end + local.get $6 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$260 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$260 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorthWest|inlined.0 + i32.const 1 + local.set $7 + loop $for-loop|6 + local.get $7 + local.get $20 + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$261 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + local.get $0 + local.get $7 + i32.add + local.tee $21 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $22 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $21 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$261 + drop + i32.const -1 + local.get $22 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$261 + drop + local.get $6 + local.get $22 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359614 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$262 + block $default39 + block $case440 + block $case341 + block $case242 + block $case143 + block $case044 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case044 $case143 $case242 $case341 $case440 $default39 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$262 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$262 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$262 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$262 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$262 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorthWest|inlined.0 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$263 (result i32) + local.get $1 + local.get $7 + i32.add + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + local.get $0 + local.get $20 + i32.add + local.tee $21 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $22 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $21 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$263 + drop + i32.const -1 + local.get $22 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$263 + drop + local.get $6 + local.get $22 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359800 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$264 + block $default40 + block $case441 + block $case342 + block $case243 + block $case144 + block $case045 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case045 $case144 $case243 $case342 $case441 $default40 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$264 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$264 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$264 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$264 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$264 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorthWest|inlined.0 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|6 + end + end + i32.const 0 + end + end + local.set $2 + end + else + local.get $18 + i32.const 255 + i32.and + i32.const 255 + i32.eq + local.get $17 + i32.const 255 + i32.and + i32.const 1 + i32.eq + i32.and + if + block $src/rsmod/StepValidator/StepValidator#isBlockedSouthEast|inlined.0 + local.get $10 + i32.extend8_s + local.set $19 + local.get $5 + i32.extend8_s + local.tee $20 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$265 (result i32) + local.get $1 + i32.const 1 + i32.add + local.tee $6 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.sub + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$265 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$265 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359683 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$266 + block $default41 + block $case442 + block $case343 + block $case244 + block $case145 + block $case046 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case046 $case145 $case244 $case343 $case442 $default41 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$266 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$266 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$266 + end + local.get $2 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$266 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$266 + end + unreachable + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$268 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$267 (result i32) + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$267 + drop + i32.const -1 + local.get $6 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$267 + drop + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359680 + i32.or + local.set $6 + block $default42 + block $case443 + block $case344 + block $case245 + block $case146 + block $case047 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case047 $case146 $case245 $case344 $case443 $default42 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$268 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$268 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$268 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$268 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$268 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$270 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$269 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.sub + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$269 + drop + i32.const -1 + local.get $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$269 + drop + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359554 + i32.or + local.set $6 + block $default43 + block $case444 + block $case345 + block $case246 + block $case147 + block $case048 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case048 $case147 $case246 $case345 $case444 $default43 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$270 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$270 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$270 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$270 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$270 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + else + local.get $20 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$271 (result i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$271 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$271 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359695 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$272 + block $default44 + block $case445 + block $case346 + block $case247 + block $case148 + block $case049 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case049 $case148 $case247 $case346 $case445 $default44 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$272 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$272 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$272 + end + local.get $2 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$272 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$272 + end + unreachable + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$274 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$273 (result i32) + local.get $1 + i32.const 2 + i32.add + local.tee $2 + i32.const 7 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$273 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$273 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359683 + i32.or + local.set $6 + block $default45 + block $case446 + block $case347 + block $case248 + block $case149 + block $case050 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case050 $case149 $case248 $case347 $case446 $default45 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$274 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$274 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$274 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$274 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$274 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$276 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$275 (result i32) + local.get $1 + i32.const 2 + i32.add + local.tee $2 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$275 + drop + i32.const -1 + local.get $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$275 + drop + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359779 + i32.or + local.set $6 + block $default46 + block $case447 + block $case348 + block $case249 + block $case150 + block $case051 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case051 $case150 $case249 $case348 $case447 $default46 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$276 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$276 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$276 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$276 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$276 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + else + i32.const 1 + local.set $7 + loop $for-loop|7 + local.get $7 + local.get $20 + i32.lt_s + if + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$277 (result i32) + local.get $1 + local.get $20 + i32.add + local.tee $6 + i32.const 7 + i32.and + local.get $0 + local.get $7 + i32.add + i32.const 1 + i32.sub + local.tee $21 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $22 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $21 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$277 + drop + i32.const -1 + local.get $22 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$277 + drop + local.get $6 + local.get $22 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359779 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$278 + block $default47 + block $case448 + block $case349 + block $case250 + block $case151 + block $case052 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case052 $case151 $case250 $case349 $case448 $default47 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$278 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$278 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$278 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$278 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$278 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedSouthEast|inlined.0 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$279 (result i32) + local.get $1 + local.get $7 + i32.add + local.tee $6 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.sub + local.tee $21 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $22 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $21 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$279 + drop + i32.const -1 + local.get $22 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$279 + drop + local.get $6 + local.get $22 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359695 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$280 + block $default48 + block $case449 + block $case350 + block $case251 + block $case152 + block $case053 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case053 $case152 $case251 $case350 $case449 $default48 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$280 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$280 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$280 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$280 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$280 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedSouthEast|inlined.0 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|7 + end + end + i32.const 0 + end + end + local.set $2 + end + else + local.get $18 + i32.const 255 + i32.and + i32.const 1 + i32.eq + local.get $17 + i32.const 255 + i32.and + i32.const 1 + i32.eq + i32.and + if + block $src/rsmod/StepValidator/StepValidator#isBlockedNorthEast|inlined.0 + local.get $10 + i32.extend8_s + local.set $19 + local.get $5 + i32.extend8_s + local.tee $20 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$281 (result i32) + local.get $1 + i32.const 1 + i32.add + local.tee $6 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.add + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$281 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$281 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359776 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$282 + block $default49 + block $case450 + block $case351 + block $case252 + block $case153 + block $case054 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case054 $case153 $case252 $case351 $case450 $default49 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$282 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$282 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$282 + end + local.get $2 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$282 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$282 + end + unreachable + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$284 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$283 (result i32) + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$283 + drop + i32.const -1 + local.get $6 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$283 + drop + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359680 + i32.or + local.set $6 + block $default50 + block $case451 + block $case352 + block $case253 + block $case154 + block $case055 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case055 $case154 $case253 $case352 $case451 $default50 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$284 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$284 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$284 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$284 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$284 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$286 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$285 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.add + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$285 + drop + i32.const -1 + local.get $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$285 + drop + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359584 + i32.or + local.set $6 + block $default51 + block $case452 + block $case353 + block $case254 + block $case155 + block $case056 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case056 $case155 $case254 $case353 $case452 $default51 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$286 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$286 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$286 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$286 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$286 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + else + local.get $20 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$287 (result i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 7 + i32.and + local.get $0 + i32.const 2 + i32.add + local.tee $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$287 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$287 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359800 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$288 + block $default52 + block $case453 + block $case354 + block $case255 + block $case156 + block $case057 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case057 $case156 $case255 $case354 $case453 $default52 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$288 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$288 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$288 + end + local.get $2 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$288 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$288 + end + unreachable + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$290 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$289 (result i32) + local.get $1 + i32.const 2 + i32.add + local.tee $2 + i32.const 7 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$289 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$289 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359776 + i32.or + local.set $6 + block $default53 + block $case454 + block $case355 + block $case256 + block $case157 + block $case058 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case058 $case157 $case256 $case355 $case454 $default53 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$290 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$290 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$290 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$290 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$290 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$292 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$291 (result i32) + local.get $1 + i32.const 2 + i32.add + local.tee $2 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.add + local.tee $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$291 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$291 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359779 + i32.or + local.set $6 + block $default54 + block $case455 + block $case356 + block $case257 + block $case158 + block $case059 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case059 $case158 $case257 $case356 $case455 $default54 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$292 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$292 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$292 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$292 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$292 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + else + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$293 (result i32) + local.get $1 + local.get $20 + i32.add + local.tee $6 + i32.const 7 + i32.and + local.get $0 + local.get $20 + i32.add + local.tee $7 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $21 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$293 + drop + i32.const -1 + local.get $21 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$293 + drop + local.get $6 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359776 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$294 + block $default55 + block $case456 + block $case357 + block $case258 + block $case159 + block $case060 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case060 $case159 $case258 $case357 $case456 $default55 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$294 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$294 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$294 + end + local.get $6 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$294 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$294 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorthEast|inlined.0 + i32.const 1 + local.set $7 + loop $for-loop|8 + local.get $7 + local.get $20 + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$295 (result i32) + local.get $1 + local.get $7 + i32.add + local.tee $6 + i32.const 7 + i32.and + local.get $0 + local.get $20 + i32.add + local.tee $21 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $22 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $21 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$295 + drop + i32.const -1 + local.get $22 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$295 + drop + local.get $6 + local.get $22 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359800 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$296 + block $default56 + block $case457 + block $case358 + block $case259 + block $case160 + block $case061 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case061 $case160 $case259 $case358 $case457 $default56 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$296 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$296 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$296 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$296 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$296 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorthEast|inlined.0 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$297 (result i32) + local.get $1 + local.get $20 + i32.add + local.tee $6 + i32.const 7 + i32.and + local.get $0 + local.get $7 + i32.add + local.tee $21 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $22 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $21 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$297 + drop + i32.const -1 + local.get $22 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$297 + drop + local.get $6 + local.get $22 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359779 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$298 + block $default57 + block $case458 + block $case359 + block $case260 + block $case161 + block $case062 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case062 $case161 $case260 $case359 $case458 $default57 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$298 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$298 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$298 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$298 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$298 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorthEast|inlined.0 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|8 + end + end + i32.const 0 + end + end + local.set $2 + end + else + local.get $17 + i32.extend8_s + call $~lib/util/number/itoa32 + local.set $0 + local.get $18 + i32.extend8_s + call $~lib/util/number/itoa32 + local.set $1 + i32.const 5588 + local.get $0 + i32.store + i32.const 5596 + local.get $1 + i32.store + i32.const 5584 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + i32.const 5632 + i32.const 43 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + end + end + end + end + end + end + end + local.get $2 + if + local.get $17 + i32.const 255 + i32.and + local.tee $2 + if (result i32) + local.get $14 + i32.load + local.set $8 + local.get $9 + i32.extend8_s + local.set $16 + local.get $2 + i32.const 255 + i32.eq + if + block $src/rsmod/StepValidator/StepValidator#isBlockedWest|inlined.1 + local.get $10 + i32.extend8_s + local.set $19 + local.get $5 + i32.extend8_s + local.tee $20 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$299 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $2 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$299 + drop + i32.const -1 + local.get $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$299 + drop + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359560 + i32.or + local.set $6 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$300 + block $default58 + block $case459 + block $case360 + block $case261 + block $case162 + block $case063 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case063 $case162 $case261 $case360 $case459 $default58 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$300 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$300 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$300 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$300 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$300 + end + unreachable + end + local.get $2 + i32.eqz + else + local.get $20 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$301 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$301 + drop + i32.const -1 + local.get $2 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$301 + drop + local.get $7 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359566 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$302 + block $default59 + block $case460 + block $case361 + block $case262 + block $case163 + block $case064 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case064 $case163 $case262 $case361 $case460 $default59 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$302 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$302 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$302 + end + local.get $2 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$302 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$302 + end + unreachable + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$304 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$303 (result i32) + local.get $6 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.add + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$303 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$303 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359608 + i32.or + local.set $6 + block $default60 + block $case461 + block $case362 + block $case263 + block $case164 + block $case065 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case065 $case164 $case263 $case362 $case461 $default60 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$304 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$304 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$304 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$304 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$304 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + else + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$305 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $7 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $21 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$305 + drop + i32.const -1 + local.get $6 + local.get $21 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$305 + drop + local.get $21 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359566 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$306 + block $default61 + block $case462 + block $case363 + block $case264 + block $case165 + block $case066 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case066 $case165 $case264 $case363 $case462 $default61 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$306 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$306 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$306 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$306 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$306 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedWest|inlined.1 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$307 (result i32) + local.get $7 + i32.const 7 + i32.and + local.get $0 + local.get $20 + i32.add + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $21 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$307 + drop + i32.const -1 + local.get $21 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$307 + drop + local.get $6 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359608 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$308 + block $default62 + block $case463 + block $case364 + block $case265 + block $case166 + block $case067 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case067 $case166 $case265 $case364 $case463 $default62 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$308 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$308 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$308 + end + local.get $6 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$308 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$308 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedWest|inlined.1 + local.get $0 + i32.const 1 + i32.add + local.set $7 + loop $for-loop|11 + local.get $7 + local.get $0 + local.get $20 + i32.add + i32.const 1 + i32.sub + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$309 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + local.get $7 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $21 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$309 + drop + i32.const -1 + local.get $21 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$309 + drop + local.get $6 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359614 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$310 + block $default63 + block $case464 + block $case365 + block $case266 + block $case167 + block $case068 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case068 $case167 $case266 $case365 $case464 $default63 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$310 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$310 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$310 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$310 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$310 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedWest|inlined.1 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|11 + end + end + i32.const 0 + end + end + local.set $2 + end + else + local.get $17 + i32.const 255 + i32.and + i32.const 1 + i32.eq + if + block $src/rsmod/StepValidator/StepValidator#isBlockedEast|inlined.1 + local.get $10 + i32.extend8_s + local.set $19 + local.get $5 + i32.extend8_s + local.tee $20 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$311 (result i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$311 + drop + i32.const -1 + local.get $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$311 + drop + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359680 + i32.or + local.set $6 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$312 + block $default64 + block $case465 + block $case366 + block $case267 + block $case168 + block $case069 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case069 $case168 $case267 $case366 $case465 $default64 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$312 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$312 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$312 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$312 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$312 + end + unreachable + end + local.get $2 + i32.eqz + else + local.get $20 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$313 (result i32) + local.get $1 + i32.const 2 + i32.add + local.tee $6 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$313 + drop + i32.const -1 + local.get $2 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$313 + drop + local.get $7 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359683 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$314 + block $default65 + block $case466 + block $case367 + block $case268 + block $case169 + block $case070 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case070 $case169 $case268 $case367 $case466 $default65 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$314 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$314 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$314 + end + local.get $2 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$314 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$314 + end + unreachable + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$316 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$315 (result i32) + local.get $6 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.add + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$315 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$315 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359776 + i32.or + local.set $6 + block $default66 + block $case467 + block $case368 + block $case269 + block $case170 + block $case071 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case071 $case170 $case269 $case368 $case467 $default66 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$316 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$316 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$316 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$316 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$316 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + else + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$317 (result i32) + local.get $1 + local.get $20 + i32.add + local.tee $7 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $21 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$317 + drop + i32.const -1 + local.get $6 + local.get $21 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$317 + drop + local.get $21 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359683 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$318 + block $default67 + block $case468 + block $case369 + block $case270 + block $case171 + block $case072 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case072 $case171 $case270 $case369 $case468 $default67 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$318 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$318 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$318 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$318 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$318 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedEast|inlined.1 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$319 (result i32) + local.get $7 + i32.const 7 + i32.and + local.get $0 + local.get $20 + i32.add + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $21 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$319 + drop + i32.const -1 + local.get $21 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$319 + drop + local.get $6 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359776 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$320 + block $default68 + block $case469 + block $case370 + block $case271 + block $case172 + block $case073 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case073 $case172 $case271 $case370 $case469 $default68 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$320 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$320 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$320 + end + local.get $6 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$320 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$320 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedEast|inlined.1 + local.get $0 + i32.const 1 + i32.add + local.set $7 + loop $for-loop|12 + local.get $7 + local.get $0 + local.get $20 + i32.add + i32.const 1 + i32.sub + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$321 (result i32) + local.get $1 + local.get $20 + i32.add + local.tee $6 + i32.const 7 + i32.and + local.get $7 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $21 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $19 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$321 + drop + i32.const -1 + local.get $21 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$321 + drop + local.get $6 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359779 + i32.or + local.set $21 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$322 + block $default69 + block $case470 + block $case371 + block $case272 + block $case173 + block $case074 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case074 $case173 $case272 $case371 $case470 $default69 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$322 + end + local.get $21 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$322 + end + local.get $6 + local.get $21 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$322 + end + local.get $6 + local.get $21 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$322 + end + local.get $21 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $21 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$322 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedEast|inlined.1 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|12 + end + end + i32.const 0 + end + end + local.set $2 + end + else + local.get $17 + i32.extend8_s + call $~lib/util/number/itoa32 + local.set $0 + i32.const 0 + call $~lib/util/number/itoa32 + local.set $1 + i32.const 5716 + local.get $0 + i32.store + i32.const 5724 + local.get $1 + i32.store + i32.const 5712 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + i32.const 5632 + i32.const 43 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.eqz + else + i32.const 0 + end + if + local.get $1 + local.get $17 + i32.extend8_s + i32.add + local.set $1 + else + local.get $18 + i32.const 255 + i32.and + local.tee $2 + if (result i32) + local.get $14 + i32.load + local.set $8 + local.get $9 + i32.extend8_s + local.set $16 + local.get $2 + i32.const 255 + i32.eq + if + block $src/rsmod/StepValidator/StepValidator#isBlockedSouth|inlined.2 + local.get $10 + i32.extend8_s + local.set $17 + local.get $5 + i32.extend8_s + local.tee $19 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$323 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.sub + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $17 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$323 + drop + i32.const -1 + local.get $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$323 + drop + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359554 + i32.or + local.set $6 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$324 + block $default70 + block $case471 + block $case372 + block $case273 + block $case174 + block $case075 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case075 $case174 $case273 $case372 $case471 $default70 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$324 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$324 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$324 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$324 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$324 + end + unreachable + end + local.get $2 + i32.eqz + else + local.get $19 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$325 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $17 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$325 + drop + i32.const -1 + local.get $2 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$325 + drop + local.get $7 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359566 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$326 + block $default71 + block $case472 + block $case373 + block $case274 + block $case175 + block $case076 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case076 $case175 $case274 $case373 $case472 $default71 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$326 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$326 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$326 + end + local.get $2 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$326 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$326 + end + unreachable + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$328 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$327 (result i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 7 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $17 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$327 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$327 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359683 + i32.or + local.set $6 + block $default72 + block $case473 + block $case374 + block $case275 + block $case176 + block $case077 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case077 $case176 $case275 $case374 $case473 $default72 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$328 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$328 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$328 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$328 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$328 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + else + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$329 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.sub + local.tee $7 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $17 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $20 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$329 + drop + i32.const -1 + local.get $6 + local.get $20 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$329 + drop + local.get $20 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359566 + i32.or + local.set $20 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$330 + block $default73 + block $case474 + block $case375 + block $case276 + block $case177 + block $case078 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case078 $case177 $case276 $case375 $case474 $default73 + end + local.get $6 + local.get $20 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$330 + end + local.get $20 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$330 + end + local.get $6 + local.get $20 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$330 + end + local.get $6 + local.get $20 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$330 + end + local.get $20 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $20 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$330 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedSouth|inlined.2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$331 (result i32) + local.get $1 + local.get $19 + i32.add + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + local.get $7 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $20 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $17 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$331 + drop + i32.const -1 + local.get $20 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$331 + drop + local.get $6 + local.get $20 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359683 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$332 + block $default74 + block $case475 + block $case376 + block $case277 + block $case178 + block $case079 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case079 $case178 $case277 $case376 $case475 $default74 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$332 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$332 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$332 + end + local.get $6 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$332 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$332 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedSouth|inlined.2 + local.get $1 + i32.const 1 + i32.add + local.set $7 + loop $for-loop|17 + local.get $7 + local.get $1 + local.get $19 + i32.add + i32.const 1 + i32.sub + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$333 (result i32) + local.get $7 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $20 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $17 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$333 + drop + i32.const -1 + local.get $20 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$333 + drop + local.get $6 + local.get $20 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359695 + i32.or + local.set $20 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$334 + block $default75 + block $case476 + block $case377 + block $case278 + block $case179 + block $case080 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case080 $case179 $case278 $case377 $case476 $default75 + end + local.get $6 + local.get $20 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$334 + end + local.get $20 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$334 + end + local.get $6 + local.get $20 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$334 + end + local.get $6 + local.get $20 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$334 + end + local.get $20 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $20 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$334 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedSouth|inlined.2 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|17 + end + end + i32.const 0 + end + end + local.set $2 + end + else + local.get $18 + i32.const 255 + i32.and + i32.const 1 + i32.eq + if + block $src/rsmod/StepValidator/StepValidator#isBlockedNorth|inlined.2 + local.get $10 + i32.extend8_s + local.set $17 + local.get $5 + i32.extend8_s + local.tee $19 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$335 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 1 + i32.add + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $17 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$335 + drop + i32.const -1 + local.get $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$335 + drop + local.get $2 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359584 + i32.or + local.set $6 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$336 + block $default76 + block $case477 + block $case378 + block $case279 + block $case180 + block $case081 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case081 $case180 $case279 $case378 $case477 $default76 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$336 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$336 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$336 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$336 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$336 + end + unreachable + end + local.get $2 + i32.eqz + else + local.get $19 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$337 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 2 + i32.add + local.tee $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $17 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$337 + drop + i32.const -1 + local.get $2 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$337 + drop + local.get $7 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359608 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$338 + block $default77 + block $case478 + block $case379 + block $case280 + block $case181 + block $case082 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case082 $case181 $case280 $case379 $case478 $default77 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$338 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$338 + end + local.get $2 + local.get $7 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$338 + end + local.get $2 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$338 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$338 + end + unreachable + end + local.get $2 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$340 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$339 (result i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 7 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $7 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $17 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$339 + drop + i32.const -1 + local.get $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$339 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $2 + local.get $16 + i32.const 2359776 + i32.or + local.set $6 + block $default78 + block $case479 + block $case380 + block $case281 + block $case182 + block $case083 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case083 $case182 $case281 $case380 $case479 $default78 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$340 + end + local.get $6 + i32.const -2097153 + i32.and + local.get $2 + i32.and + i32.eqz + local.get $2 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$340 + end + local.get $2 + local.get $6 + i32.and + i32.eqz + local.get $2 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$340 + end + local.get $2 + local.get $6 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$340 + end + local.get $6 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $6 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $2 + i32.and + i32.eqz + local.set $2 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$340 + end + unreachable + end + else + i32.const 0 + local.set $2 + end + local.get $2 + i32.eqz + else + i32.const 1 + local.set $2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$341 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $0 + local.get $19 + i32.add + local.tee $7 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $17 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $20 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$341 + drop + i32.const -1 + local.get $6 + local.get $20 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$341 + drop + local.get $20 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359608 + i32.or + local.set $20 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$342 + block $default79 + block $case480 + block $case381 + block $case282 + block $case183 + block $case084 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case084 $case183 $case282 $case381 $case480 $default79 + end + local.get $6 + local.get $20 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$342 + end + local.get $20 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$342 + end + local.get $6 + local.get $20 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$342 + end + local.get $6 + local.get $20 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$342 + end + local.get $20 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $20 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$342 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorth|inlined.2 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$343 (result i32) + local.get $1 + local.get $19 + i32.add + i32.const 1 + i32.sub + local.tee $6 + i32.const 7 + i32.and + local.get $7 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $20 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $17 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$343 + drop + i32.const -1 + local.get $20 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$343 + drop + local.get $6 + local.get $20 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $6 + local.get $16 + i32.const 2359776 + i32.or + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$344 + block $default80 + block $case481 + block $case382 + block $case283 + block $case184 + block $case085 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case085 $case184 $case283 $case382 $case481 $default80 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$344 + end + local.get $7 + i32.const -2097153 + i32.and + local.get $6 + i32.and + i32.eqz + local.get $6 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$344 + end + local.get $6 + local.get $7 + i32.and + i32.eqz + local.get $6 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$344 + end + local.get $6 + local.get $7 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$344 + end + local.get $7 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $7 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $6 + i32.and + i32.eqz + local.set $6 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$344 + end + unreachable + end + local.get $6 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorth|inlined.2 + local.get $1 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|18 + local.get $6 + local.get $1 + local.get $19 + i32.add + i32.const 1 + i32.sub + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$345 (result i32) + local.get $6 + i32.const 7 + i32.and + local.get $0 + local.get $19 + i32.add + local.tee $7 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $20 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $6 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $7 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $17 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$345 + drop + i32.const -1 + local.get $20 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$345 + drop + local.get $7 + local.get $20 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $7 + local.get $16 + i32.const 2359800 + i32.or + local.set $20 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$346 + block $default81 + block $case482 + block $case383 + block $case284 + block $case185 + block $case086 + local.get $12 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case086 $case185 $case284 $case383 $case482 $default81 + end + local.get $7 + local.get $20 + i32.and + i32.eqz + local.set $7 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$346 + end + local.get $20 + i32.const -2097153 + i32.and + local.get $7 + i32.and + i32.eqz + local.get $7 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $7 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$346 + end + local.get $7 + local.get $20 + i32.and + i32.eqz + local.get $7 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $7 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$346 + end + local.get $7 + local.get $20 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $7 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$346 + end + local.get $20 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $20 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $7 + i32.and + i32.eqz + local.set $7 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$346 + end + unreachable + end + local.get $7 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorth|inlined.2 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|18 + end + end + i32.const 0 + end + end + local.set $2 + end + else + i32.const 0 + call $~lib/util/number/itoa32 + local.set $0 + local.get $18 + i32.extend8_s + call $~lib/util/number/itoa32 + local.set $1 + i32.const 5764 + local.get $0 + i32.store + i32.const 5772 + local.get $1 + i32.store + i32.const 5760 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + i32.const 5632 + i32.const 43 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.eqz + else + i32.const 0 + end + i32.eqz + br_if $while-break|0 + local.get $0 + local.get $18 + i32.extend8_s + i32.add + local.set $0 + end + else + local.get $1 + local.get $17 + i32.extend8_s + i32.add + local.set $1 + local.get $0 + local.get $18 + i32.extend8_s + i32.add + local.set $0 + end + br $while-continue|0 + end + end + end + i32.const 1 + i32.const 11 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.load offset=4 + drop + local.get $2 + local.get $10 + i32.const 3 + i32.and + i32.const 4 + i32.shl + i32.extend8_s + local.get $0 + i32.const 16383 + i32.and + local.get $1 + i32.const 16383 + i32.and + i32.const 14 + i32.shl + i32.or + i32.or + call $~lib/array/Array#__set + local.get $2 + call $~lib/staticarray/StaticArray.fromArray + end + ) + (func $src/index/findNaivePath@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 10 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $10 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + local.get $4 + local.get $5 + local.get $6 + local.get $7 + local.get $8 + local.get $9 + local.get $10 + call $src/index/findNaivePath + ) + (func $src/index/intersects (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) + local.get $4 + local.get $6 + i32.add + local.get $0 + i32.le_s + local.get $4 + local.get $0 + local.get $2 + i32.add + i32.ge_s + i32.or + local.get $5 + local.get $1 + local.get $3 + i32.add + i32.ge_s + i32.or + local.get $5 + local.get $7 + i32.add + local.get $1 + i32.le_s + i32.or + i32.eqz + ) + (func $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#allocateIfAbsent (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $3 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + if + local.get $2 + return + end + i32.const 64 + call $~lib/staticarray/StaticArray#constructor + local.set $2 + local.get $0 + i32.load + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $2 + ) + (func $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#set (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + local.get $0 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $3 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $5 + if (result i32) + local.get $5 + else + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#allocateIfAbsent + end + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store + ) + (func $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $5 + local.get $0 + local.get $1 + local.get $2 + local.get $3 + local.get $0 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $3 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + if (result i32) + local.get $5 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.lt_s + else + i32.const 0 + end + if (result i32) + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 0 + end + local.get $4 + i32.or + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#set + ) + (func $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $5 + local.get $0 + local.get $1 + local.get $2 + local.get $3 + local.get $0 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $3 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + if (result i32) + local.get $5 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.lt_s + else + i32.const 0 + end + if (result i32) + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + else + i32.const 0 + end + local.get $4 + i32.const -1 + i32.xor + i32.and + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#set + ) + (func $src/index/changeFloor (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + local.get $3 + if + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + i32.const 2097152 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + else + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + i32.const 2097152 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + end + ) + (func $src/index/changeLoc (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) + (local $8 i32) + (local $9 i32) + i32.const 131328 + i32.const 256 + local.get $5 + select + local.tee $5 + i32.const 1073741824 + i32.or + local.get $5 + local.get $6 + select + local.set $6 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $3 + local.get $4 + i32.mul + i32.extend8_s + i32.lt_s + if + local.get $0 + local.get $5 + local.get $3 + i32.extend8_s + local.tee $8 + i32.rem_s + i32.add + local.set $9 + local.get $1 + local.get $5 + local.get $8 + i32.div_s + i32.add + local.set $8 + local.get $7 + if + global.get $src/index/flags + local.get $9 + local.get $8 + local.get $2 + i32.extend8_s + local.get $6 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + else + global.get $src/index/flags + local.get $9 + local.get $8 + local.get $2 + i32.extend8_s + local.get $6 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + ) + (func $src/index/changeNpc (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + loop $for-loop|0 + local.get $5 + local.get $3 + local.get $3 + i32.mul + i32.extend8_s + i32.lt_s + if + local.get $0 + local.get $5 + local.get $3 + i32.extend8_s + local.tee $7 + i32.rem_s + i32.add + local.set $6 + local.get $1 + local.get $5 + local.get $7 + i32.div_s + i32.add + local.set $7 + local.get $4 + if + global.get $src/index/flags + local.get $6 + local.get $7 + local.get $2 + i32.extend8_s + i32.const 524288 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + else + global.get $src/index/flags + local.get $6 + local.get $7 + local.get $2 + i32.extend8_s + i32.const 524288 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + ) + (func $src/index/changePlayer (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + loop $for-loop|0 + local.get $5 + local.get $3 + local.get $3 + i32.mul + i32.extend8_s + i32.lt_s + if + local.get $0 + local.get $5 + local.get $3 + i32.extend8_s + local.tee $7 + i32.rem_s + i32.add + local.set $6 + local.get $1 + local.get $5 + local.get $7 + i32.div_s + i32.add + local.set $7 + local.get $4 + if + global.get $src/index/flags + local.get $6 + local.get $7 + local.get $2 + i32.extend8_s + i32.const 1048576 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + else + global.get $src/index/flags + local.get $6 + local.get $7 + local.get $2 + i32.extend8_s + i32.const 1048576 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + ) + (func $src/index/changeRoof (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + local.get $3 + if + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + i32.const -2147483648 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + else + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + i32.const -2147483648 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + end + ) + (func $src/index/changeWallStraight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + i32.const 536870912 + i32.const 65536 + i32.const 128 + local.get $4 + select + local.get $5 + select + local.set $8 + i32.const 33554432 + i32.const 4096 + i32.const 8 + local.get $4 + select + local.get $5 + select + local.set $10 + local.get $3 + i32.const 255 + i32.and + local.tee $7 + if + i32.const 8388608 + i32.const 1024 + i32.const 2 + local.get $4 + select + local.get $5 + select + local.set $9 + i32.const 134217728 + i32.const 16384 + i32.const 32 + local.get $4 + select + local.get $5 + select + local.set $11 + local.get $7 + i32.const 1 + i32.eq + if + local.get $6 + if + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $7 + local.get $9 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + global.get $src/index/flags + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.get $7 + local.get $11 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + else + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $7 + local.get $9 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + global.get $src/index/flags + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.get $7 + local.get $11 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + end + else + local.get $3 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + local.get $6 + if + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $7 + local.get $10 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.add + local.get $1 + local.get $7 + local.get $8 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + else + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $7 + local.get $10 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.add + local.get $1 + local.get $7 + local.get $8 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + end + else + local.get $3 + i32.const 255 + i32.and + i32.const 3 + i32.eq + if + local.get $6 + if + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $7 + local.get $11 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + global.get $src/index/flags + local.get $0 + local.get $1 + i32.const 1 + i32.sub + local.get $7 + local.get $9 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + else + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $7 + local.get $11 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + global.get $src/index/flags + local.get $0 + local.get $1 + i32.const 1 + i32.sub + local.get $7 + local.get $9 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + end + end + end + end + else + local.get $6 + if + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $7 + local.get $8 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.sub + local.get $1 + local.get $7 + local.get $10 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + else + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $7 + local.get $8 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.sub + local.get $1 + local.get $7 + local.get $10 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + end + end + local.get $5 + if + local.get $0 + local.get $1 + local.get $2 + local.get $3 + local.get $4 + i32.const 0 + local.get $6 + call $src/index/changeWallStraight + return + end + local.get $4 + if + local.get $0 + local.get $1 + local.get $2 + local.get $3 + i32.const 0 + i32.const 0 + local.get $6 + call $src/index/changeWallStraight + end + ) + (func $src/index/changeWallCorner (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + i32.const 4194304 + i32.const 512 + i32.const 1 + local.get $4 + select + local.get $5 + select + local.set $8 + i32.const 67108864 + i32.const 8192 + i32.const 16 + local.get $4 + select + local.get $5 + select + local.set $10 + local.get $3 + i32.const 255 + i32.and + local.tee $7 + if + i32.const 16777216 + i32.const 2048 + i32.const 4 + local.get $4 + select + local.get $5 + select + local.set $9 + i32.const 268435456 + i32.const 32768 + i32.const 64 + local.get $4 + select + local.get $5 + select + local.set $11 + local.get $7 + i32.const 1 + i32.eq + if + local.get $6 + if + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $7 + local.get $9 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.add + local.get $1 + i32.const 1 + i32.add + local.get $7 + local.get $11 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + else + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $7 + local.get $9 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.add + local.get $1 + i32.const 1 + i32.add + local.get $7 + local.get $11 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + end + else + local.get $3 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + local.get $6 + if + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $7 + local.get $10 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.add + local.get $1 + i32.const 1 + i32.sub + local.get $7 + local.get $8 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + else + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $7 + local.get $10 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.add + local.get $1 + i32.const 1 + i32.sub + local.get $7 + local.get $8 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + end + else + local.get $3 + i32.const 255 + i32.and + i32.const 3 + i32.eq + if + local.get $6 + if + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $7 + local.get $11 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.sub + local.get $1 + i32.const 1 + i32.sub + local.get $7 + local.get $9 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + else + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $7 + local.get $11 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.sub + local.get $1 + i32.const 1 + i32.sub + local.get $7 + local.get $9 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + end + end + end + end + else + local.get $6 + if + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $7 + local.get $8 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.sub + local.get $1 + i32.const 1 + i32.add + local.get $7 + local.get $10 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + else + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $7 + local.get $8 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.sub + local.get $1 + i32.const 1 + i32.add + local.get $7 + local.get $10 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + end + end + local.get $5 + if + local.get $0 + local.get $1 + local.get $2 + local.get $3 + local.get $4 + i32.const 0 + local.get $6 + call $src/index/changeWallCorner + return + end + local.get $4 + if + local.get $0 + local.get $1 + local.get $2 + local.get $3 + i32.const 0 + i32.const 0 + local.get $6 + call $src/index/changeWallCorner + end + ) + (func $src/index/changeWallL (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + i32.const 536870912 + i32.const 65536 + i32.const 128 + local.get $4 + select + local.get $5 + select + local.set $7 + i32.const 33554432 + i32.const 4096 + i32.const 8 + local.get $4 + select + local.get $5 + select + local.set $8 + i32.const 8388608 + i32.const 1024 + i32.const 2 + local.get $4 + select + local.get $5 + select + local.set $9 + i32.const 134217728 + i32.const 16384 + i32.const 32 + local.get $4 + select + local.get $5 + select + local.set $10 + local.get $3 + i32.const 255 + i32.and + local.tee $11 + if + local.get $11 + i32.const 1 + i32.eq + if + local.get $6 + if + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $11 + local.get $8 + local.get $9 + i32.or + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + global.get $src/index/flags + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.get $11 + local.get $10 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.add + local.get $1 + local.get $11 + local.get $7 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + else + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $11 + local.get $8 + local.get $9 + i32.or + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + global.get $src/index/flags + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.get $11 + local.get $10 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.add + local.get $1 + local.get $11 + local.get $7 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + end + else + local.get $3 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + local.get $6 + if + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $11 + local.get $8 + local.get $10 + i32.or + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.add + local.get $1 + local.get $11 + local.get $7 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + global.get $src/index/flags + local.get $0 + local.get $1 + i32.const 1 + i32.sub + local.get $11 + local.get $9 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + else + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $11 + local.get $8 + local.get $10 + i32.or + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.add + local.get $1 + local.get $11 + local.get $7 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + global.get $src/index/flags + local.get $0 + local.get $1 + i32.const 1 + i32.sub + local.get $11 + local.get $9 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + end + else + local.get $3 + i32.const 255 + i32.and + i32.const 3 + i32.eq + if + local.get $6 + if + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $11 + local.get $7 + local.get $10 + i32.or + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + global.get $src/index/flags + local.get $0 + local.get $1 + i32.const 1 + i32.sub + local.get $11 + local.get $9 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.sub + local.get $1 + local.get $11 + local.get $8 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + else + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $11 + local.get $7 + local.get $10 + i32.or + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + global.get $src/index/flags + local.get $0 + local.get $1 + i32.const 1 + i32.sub + local.get $11 + local.get $9 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.sub + local.get $1 + local.get $11 + local.get $8 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + end + end + end + end + else + local.get $6 + if + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $11 + local.get $7 + local.get $9 + i32.or + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.sub + local.get $1 + local.get $11 + local.get $8 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + global.get $src/index/flags + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.get $11 + local.get $10 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#add + else + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + local.tee $11 + local.get $7 + local.get $9 + i32.or + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + global.get $src/index/flags + local.get $0 + i32.const 1 + i32.sub + local.get $1 + local.get $11 + local.get $8 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + global.get $src/index/flags + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.get $11 + local.get $10 + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#remove + end + end + local.get $5 + if + local.get $0 + local.get $1 + local.get $2 + local.get $3 + local.get $4 + i32.const 0 + local.get $6 + call $src/index/changeWallL + return + end + local.get $4 + if + local.get $0 + local.get $1 + local.get $2 + local.get $3 + i32.const 0 + i32.const 0 + local.get $6 + call $src/index/changeWallL + end + ) + (func $src/index/changeWall (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) + (local $8 i32) + local.get $4 + i32.const 255 + i32.and + local.tee $8 + if + local.get $8 + i32.const 3 + i32.eq + local.get $8 + i32.const 1 + i32.eq + i32.or + if + local.get $0 + local.get $1 + local.get $2 + local.get $3 + local.get $5 + local.get $6 + local.get $7 + call $src/index/changeWallCorner + else + local.get $4 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + local.get $3 + local.get $5 + local.get $6 + local.get $7 + call $src/index/changeWallL + end + end + else + local.get $0 + local.get $1 + local.get $2 + local.get $3 + local.get $5 + local.get $6 + local.get $7 + call $src/index/changeWallStraight + end + ) + (func $src/index/allocateIfAbsent (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $src/index/flags + local.get $0 + local.get $1 + local.get $2 + i32.extend8_s + call $src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#allocateIfAbsent + ) + (func $src/index/deallocateIfPresent (param $0 i32) (param $1 i32) (param $2 i32) + global.get $src/index/flags + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $2 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.const 0 + i32.store + ) + (func $src/index/isZoneAllocated (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $src/index/flags + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $2 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 0 + i32.ne + ) + (func $src/index/isFlagged (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$347 (result i32) + i32.const -1 + global.get $src/index/flags + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $2 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$347 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $0 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$347 + drop + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.get $3 + i32.and + i32.const 0 + i32.ne + ) + (func $src/index/canTravel (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $src/index/stepValidator + local.set $8 + local.get $7 + call $src/index/getCollisionStrategy + local.set $7 + local.get $3 + i32.const 255 + i32.and + i32.eqz + local.get $4 + i32.const 255 + i32.and + i32.const 255 + i32.eq + i32.and + if + local.get $0 + i32.extend8_s + local.set $9 + block $src/rsmod/StepValidator/StepValidator#isBlockedSouth|inlined.3 + local.get $5 + i32.extend8_s + local.tee $5 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$348 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$348 + drop + i32.const -1 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$348 + drop + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359554 + i32.or + local.set $1 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$349 + block $default + block $case4 + block $case3 + block $case2 + block $case1 + block $case0 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case0 $case1 $case2 $case3 $case4 $default + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$349 + end + local.get $1 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$349 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$349 + end + local.get $0 + local.get $1 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$349 + end + local.get $1 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $1 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$349 + end + unreachable + end + local.get $0 + i32.eqz + else + local.get $5 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$350 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $0 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$350 + drop + i32.const -1 + local.get $0 + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$350 + drop + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359566 + i32.or + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$351 + block $default0 + block $case41 + block $case32 + block $case23 + block $case14 + block $case05 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case05 $case14 $case23 $case32 $case41 $default0 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$351 + end + local.get $3 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$351 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$351 + end + local.get $0 + local.get $3 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$351 + end + local.get $3 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $3 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$351 + end + unreachable + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$353 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$352 (result i32) + local.get $1 + i32.const 1 + i32.add + local.tee $0 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $1 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$352 + drop + i32.const -1 + local.get $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$352 + drop + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359683 + i32.or + local.set $1 + block $default1 + block $case42 + block $case33 + block $case24 + block $case15 + block $case06 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case06 $case15 $case24 $case33 $case42 $default1 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$353 + end + local.get $1 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$353 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$353 + end + local.get $0 + local.get $1 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$353 + end + local.get $1 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $1 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$353 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + else + i32.const 1 + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$354 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.sub + local.tee $4 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $0 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $4 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $10 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$354 + drop + i32.const -1 + local.get $0 + local.get $10 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$354 + drop + local.get $10 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359566 + i32.or + local.set $10 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$355 + block $default2 + block $case43 + block $case34 + block $case25 + block $case16 + block $case07 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case07 $case16 $case25 $case34 $case43 $default2 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$355 + end + local.get $10 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$355 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$355 + end + local.get $0 + local.get $10 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$355 + end + local.get $10 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $10 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$355 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedSouth|inlined.3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$356 (result i32) + local.get $1 + local.get $5 + i32.add + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + local.get $4 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $10 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $4 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$356 + drop + i32.const -1 + local.get $10 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$356 + drop + local.get $0 + local.get $10 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359683 + i32.or + local.set $4 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$357 + block $default3 + block $case44 + block $case35 + block $case26 + block $case17 + block $case08 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case08 $case17 $case26 $case35 $case44 $default3 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$357 + end + local.get $4 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$357 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$357 + end + local.get $0 + local.get $4 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$357 + end + local.get $4 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $4 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$357 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedSouth|inlined.3 + local.get $1 + i32.const 1 + i32.add + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + local.get $5 + i32.add + i32.const 1 + i32.sub + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$358 (result i32) + local.get $4 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $10 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $4 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$358 + drop + i32.const -1 + local.get $10 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$358 + drop + local.get $0 + local.get $10 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359695 + i32.or + local.set $10 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$359 + block $default4 + block $case45 + block $case36 + block $case27 + block $case18 + block $case09 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case09 $case18 $case27 $case36 $case45 $default4 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$359 + end + local.get $10 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$359 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$359 + end + local.get $0 + local.get $10 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$359 + end + local.get $10 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $10 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$359 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedSouth|inlined.3 + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + i32.const 0 + end + end + local.set $3 + end + else + local.get $3 + i32.const 255 + i32.and + i32.eqz + local.get $4 + i32.const 255 + i32.and + i32.const 1 + i32.eq + i32.and + if + local.get $0 + i32.extend8_s + local.set $4 + block $src/rsmod/StepValidator/StepValidator#isBlockedNorth|inlined.3 + local.get $5 + i32.extend8_s + local.tee $9 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$360 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.add + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$360 + drop + i32.const -1 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$360 + drop + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359584 + i32.or + local.set $1 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$361 + block $default5 + block $case46 + block $case37 + block $case28 + block $case19 + block $case010 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case010 $case19 $case28 $case37 $case46 $default5 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$361 + end + local.get $1 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$361 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$361 + end + local.get $0 + local.get $1 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$361 + end + local.get $1 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $1 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$361 + end + unreachable + end + local.get $0 + i32.eqz + else + local.get $9 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$362 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $0 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$362 + drop + i32.const -1 + local.get $0 + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$362 + drop + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359608 + i32.or + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$363 + block $default6 + block $case47 + block $case38 + block $case29 + block $case110 + block $case011 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case011 $case110 $case29 $case38 $case47 $default6 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$363 + end + local.get $3 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$363 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$363 + end + local.get $0 + local.get $3 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$363 + end + local.get $3 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $3 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$363 + end + unreachable + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$365 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$364 (result i32) + local.get $1 + i32.const 1 + i32.add + local.tee $0 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $1 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$364 + drop + i32.const -1 + local.get $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$364 + drop + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359776 + i32.or + local.set $1 + block $default7 + block $case48 + block $case39 + block $case210 + block $case111 + block $case012 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case012 $case111 $case210 $case39 $case48 $default7 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$365 + end + local.get $1 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$365 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$365 + end + local.get $0 + local.get $1 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$365 + end + local.get $1 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $1 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$365 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + else + i32.const 1 + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$366 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + local.get $9 + i32.add + local.tee $5 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $0 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $10 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$366 + drop + i32.const -1 + local.get $0 + local.get $10 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$366 + drop + local.get $10 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359608 + i32.or + local.set $10 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$367 + block $default8 + block $case49 + block $case310 + block $case211 + block $case112 + block $case013 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case013 $case112 $case211 $case310 $case49 $default8 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$367 + end + local.get $10 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$367 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$367 + end + local.get $0 + local.get $10 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$367 + end + local.get $10 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $10 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$367 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorth|inlined.3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$368 (result i32) + local.get $1 + local.get $9 + i32.add + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $10 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$368 + drop + i32.const -1 + local.get $10 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$368 + drop + local.get $0 + local.get $10 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359776 + i32.or + local.set $5 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$369 + block $default9 + block $case410 + block $case311 + block $case212 + block $case113 + block $case014 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case014 $case113 $case212 $case311 $case410 $default9 + end + local.get $0 + local.get $5 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$369 + end + local.get $5 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$369 + end + local.get $0 + local.get $5 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$369 + end + local.get $0 + local.get $5 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$369 + end + local.get $5 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $5 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$369 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorth|inlined.3 + local.get $1 + i32.const 1 + i32.add + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $1 + local.get $9 + i32.add + i32.const 1 + i32.sub + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$370 (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $2 + local.get $9 + i32.add + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $10 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$370 + drop + i32.const -1 + local.get $10 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$370 + drop + local.get $0 + local.get $10 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359800 + i32.or + local.set $10 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$371 + block $default10 + block $case411 + block $case312 + block $case213 + block $case114 + block $case015 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case015 $case114 $case213 $case312 $case411 $default10 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$371 + end + local.get $10 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$371 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$371 + end + local.get $0 + local.get $10 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$371 + end + local.get $10 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $10 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$371 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorth|inlined.3 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + i32.const 0 + end + end + local.set $3 + end + else + local.get $4 + i32.const 255 + i32.and + i32.eqz + local.get $3 + i32.const 255 + i32.and + i32.const 255 + i32.eq + i32.and + if + local.get $0 + i32.extend8_s + local.set $9 + block $src/rsmod/StepValidator/StepValidator#isBlockedWest|inlined.3 + local.get $5 + i32.extend8_s + local.tee $5 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$372 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $1 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$372 + drop + i32.const -1 + local.get $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$372 + drop + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359560 + i32.or + local.set $1 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$373 + block $default11 + block $case412 + block $case313 + block $case214 + block $case115 + block $case016 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case016 $case115 $case214 $case313 $case412 $default11 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$373 + end + local.get $1 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$373 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$373 + end + local.get $0 + local.get $1 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$373 + end + local.get $1 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $1 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$373 + end + unreachable + end + local.get $0 + i32.eqz + else + local.get $5 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$374 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $0 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$374 + drop + i32.const -1 + local.get $0 + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$374 + drop + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359566 + i32.or + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$375 + block $default12 + block $case413 + block $case314 + block $case215 + block $case116 + block $case017 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case017 $case116 $case215 $case314 $case413 $default12 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$375 + end + local.get $3 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$375 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$375 + end + local.get $0 + local.get $3 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$375 + end + local.get $3 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $3 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$375 + end + unreachable + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$377 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$376 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.add + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$376 + drop + i32.const -1 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$376 + drop + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359608 + i32.or + local.set $1 + block $default13 + block $case414 + block $case315 + block $case216 + block $case117 + block $case018 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case018 $case117 $case216 $case315 $case414 $default13 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$377 + end + local.get $1 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$377 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$377 + end + local.get $0 + local.get $1 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$377 + end + local.get $1 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $1 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$377 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + else + i32.const 1 + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$378 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $4 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $0 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $4 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $10 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$378 + drop + i32.const -1 + local.get $0 + local.get $10 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$378 + drop + local.get $10 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359566 + i32.or + local.set $10 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$379 + block $default14 + block $case415 + block $case316 + block $case217 + block $case118 + block $case019 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case019 $case118 $case217 $case316 $case415 $default14 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$379 + end + local.get $10 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$379 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$379 + end + local.get $0 + local.get $10 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$379 + end + local.get $10 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $10 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$379 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedWest|inlined.3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$380 (result i32) + local.get $4 + i32.const 7 + i32.and + local.get $2 + local.get $5 + i32.add + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $10 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $4 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$380 + drop + i32.const -1 + local.get $10 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$380 + drop + local.get $0 + local.get $10 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359608 + i32.or + local.set $4 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$381 + block $default15 + block $case416 + block $case317 + block $case218 + block $case119 + block $case020 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case020 $case119 $case218 $case317 $case416 $default15 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$381 + end + local.get $4 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$381 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$381 + end + local.get $0 + local.get $4 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$381 + end + local.get $4 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $4 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$381 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedWest|inlined.3 + local.get $2 + i32.const 1 + i32.add + local.set $4 + loop $for-loop|2 + local.get $4 + local.get $2 + local.get $5 + i32.add + i32.const 1 + i32.sub + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$382 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + local.get $4 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $10 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $4 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$382 + drop + i32.const -1 + local.get $10 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$382 + drop + local.get $0 + local.get $10 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359614 + i32.or + local.set $10 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$383 + block $default16 + block $case417 + block $case318 + block $case219 + block $case120 + block $case021 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case021 $case120 $case219 $case318 $case417 $default16 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$383 + end + local.get $10 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$383 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$383 + end + local.get $0 + local.get $10 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$383 + end + local.get $10 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $10 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$383 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedWest|inlined.3 + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|2 + end + end + i32.const 0 + end + end + local.set $3 + end + else + local.get $4 + i32.const 255 + i32.and + i32.eqz + local.get $3 + i32.const 255 + i32.and + i32.const 1 + i32.eq + i32.and + if + local.get $0 + i32.extend8_s + local.set $4 + block $src/rsmod/StepValidator/StepValidator#isBlockedEast|inlined.3 + local.get $5 + i32.extend8_s + local.tee $9 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$384 (result i32) + local.get $1 + i32.const 1 + i32.add + local.tee $0 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $1 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$384 + drop + i32.const -1 + local.get $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$384 + drop + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359680 + i32.or + local.set $1 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$385 + block $default17 + block $case418 + block $case319 + block $case220 + block $case121 + block $case022 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case022 $case121 $case220 $case319 $case418 $default17 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$385 + end + local.get $1 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$385 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$385 + end + local.get $0 + local.get $1 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$385 + end + local.get $1 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $1 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$385 + end + unreachable + end + local.get $0 + i32.eqz + else + local.get $9 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$386 (result i32) + local.get $1 + i32.const 2 + i32.add + local.tee $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $0 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$386 + drop + i32.const -1 + local.get $0 + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$386 + drop + local.get $3 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359683 + i32.or + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$387 + block $default18 + block $case419 + block $case320 + block $case221 + block $case122 + block $case023 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case023 $case122 $case221 $case320 $case419 $default18 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$387 + end + local.get $3 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$387 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$387 + end + local.get $0 + local.get $3 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$387 + end + local.get $3 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $3 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$387 + end + unreachable + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$389 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$388 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.add + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$388 + drop + i32.const -1 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$388 + drop + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359776 + i32.or + local.set $1 + block $default19 + block $case420 + block $case321 + block $case222 + block $case123 + block $case024 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case024 $case123 $case222 $case321 $case420 $default19 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$389 + end + local.get $1 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$389 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$389 + end + local.get $0 + local.get $1 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$389 + end + local.get $1 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $1 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$389 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + else + i32.const 1 + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$390 (result i32) + local.get $1 + local.get $9 + i32.add + local.tee $5 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $0 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $10 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$390 + drop + i32.const -1 + local.get $0 + local.get $10 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$390 + drop + local.get $10 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359683 + i32.or + local.set $10 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$391 + block $default20 + block $case421 + block $case322 + block $case223 + block $case124 + block $case025 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case025 $case124 $case223 $case322 $case421 $default20 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$391 + end + local.get $10 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$391 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$391 + end + local.get $0 + local.get $10 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$391 + end + local.get $10 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $10 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$391 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedEast|inlined.3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$392 (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $2 + local.get $9 + i32.add + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $10 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$392 + drop + i32.const -1 + local.get $10 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$392 + drop + local.get $0 + local.get $10 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359776 + i32.or + local.set $5 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$393 + block $default21 + block $case422 + block $case323 + block $case224 + block $case125 + block $case026 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case026 $case125 $case224 $case323 $case422 $default21 + end + local.get $0 + local.get $5 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$393 + end + local.get $5 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$393 + end + local.get $0 + local.get $5 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$393 + end + local.get $0 + local.get $5 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$393 + end + local.get $5 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $5 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$393 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedEast|inlined.3 + local.get $2 + i32.const 1 + i32.add + local.set $5 + loop $for-loop|3 + local.get $5 + local.get $2 + local.get $9 + i32.add + i32.const 1 + i32.sub + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$394 (result i32) + local.get $1 + local.get $9 + i32.add + local.tee $0 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $10 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$394 + drop + i32.const -1 + local.get $10 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$394 + drop + local.get $0 + local.get $10 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359779 + i32.or + local.set $10 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$395 + block $default22 + block $case423 + block $case324 + block $case225 + block $case126 + block $case027 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case027 $case126 $case225 $case324 $case423 $default22 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$395 + end + local.get $10 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$395 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$395 + end + local.get $0 + local.get $10 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$395 + end + local.get $10 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $10 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$395 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedEast|inlined.3 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|3 + end + end + i32.const 0 + end + end + local.set $3 + end + else + local.get $4 + i32.const 255 + i32.and + i32.const 255 + i32.eq + local.get $3 + i32.const 255 + i32.and + i32.const 255 + i32.eq + i32.and + if + local.get $0 + i32.extend8_s + local.set $9 + block $src/rsmod/StepValidator/StepValidator#isBlockedSouthWest|inlined.3 + local.get $5 + i32.extend8_s + local.tee $5 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$396 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $3 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $4 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$396 + drop + i32.const -1 + local.get $4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$396 + drop + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359566 + i32.or + local.set $4 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$397 + block $default23 + block $case424 + block $case325 + block $case226 + block $case127 + block $case028 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case028 $case127 $case226 $case325 $case424 $default23 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$397 + end + local.get $4 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$397 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$397 + end + local.get $0 + local.get $4 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$397 + end + local.get $4 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $4 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$397 + end + unreachable + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$399 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$398 (result i32) + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$398 + drop + i32.const -1 + local.get $3 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $3 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$398 + drop + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359560 + i32.or + local.set $3 + block $default24 + block $case425 + block $case326 + block $case227 + block $case128 + block $case029 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case029 $case128 $case227 $case326 $case425 $default24 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$399 + end + local.get $3 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$399 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$399 + end + local.get $0 + local.get $3 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$399 + end + local.get $3 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $3 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$399 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$401 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$400 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$400 + drop + i32.const -1 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$400 + drop + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359554 + i32.or + local.set $1 + block $default25 + block $case426 + block $case327 + block $case228 + block $case129 + block $case030 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case030 $case129 $case228 $case327 $case426 $default25 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$401 + end + local.get $1 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$401 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$401 + end + local.get $0 + local.get $1 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$401 + end + local.get $1 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $1 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$401 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + else + local.get $5 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$402 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $3 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $0 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$402 + drop + i32.const -1 + local.get $0 + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$402 + drop + local.get $4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359614 + i32.or + local.set $4 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$403 + block $default26 + block $case427 + block $case328 + block $case229 + block $case130 + block $case031 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case031 $case130 $case229 $case328 $case427 $default26 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$403 + end + local.get $4 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$403 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$403 + end + local.get $0 + local.get $4 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$403 + end + local.get $4 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $4 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$403 + end + unreachable + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$405 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$404 (result i32) + local.get $3 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $4 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$404 + drop + i32.const -1 + local.get $4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$404 + drop + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359566 + i32.or + local.set $3 + block $default27 + block $case428 + block $case329 + block $case230 + block $case131 + block $case032 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case032 $case131 $case230 $case329 $case428 $default27 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$405 + end + local.get $3 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$405 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$405 + end + local.get $0 + local.get $3 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$405 + end + local.get $3 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $3 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$405 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$407 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$406 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$406 + drop + i32.const -1 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$406 + drop + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359695 + i32.or + local.set $1 + block $default28 + block $case429 + block $case330 + block $case231 + block $case132 + block $case033 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case033 $case132 $case231 $case330 $case429 $default28 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$407 + end + local.get $1 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$407 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$407 + end + local.get $0 + local.get $1 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$407 + end + local.get $1 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $1 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$407 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + else + i32.const 1 + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$408 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.sub + local.tee $4 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $10 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $4 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$408 + drop + i32.const -1 + local.get $10 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$408 + drop + local.get $0 + local.get $10 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359566 + i32.or + local.set $4 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$409 + block $default29 + block $case430 + block $case331 + block $case232 + block $case133 + block $case034 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case034 $case133 $case232 $case331 $case430 $default29 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$409 + end + local.get $4 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$409 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$409 + end + local.get $0 + local.get $4 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$409 + end + local.get $4 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $4 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$409 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedSouthWest|inlined.3 + i32.const 1 + local.set $4 + loop $for-loop|4 + local.get $4 + local.get $5 + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$410 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + local.get $2 + local.get $4 + i32.add + i32.const 1 + i32.sub + local.tee $10 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $11 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $10 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$410 + drop + i32.const -1 + local.get $11 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$410 + drop + local.get $0 + local.get $11 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359614 + i32.or + local.set $10 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$411 + block $default30 + block $case431 + block $case332 + block $case233 + block $case134 + block $case035 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case035 $case134 $case233 $case332 $case431 $default30 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$411 + end + local.get $10 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$411 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$411 + end + local.get $0 + local.get $10 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$411 + end + local.get $10 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $10 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$411 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedSouthWest|inlined.3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$412 (result i32) + local.get $1 + local.get $4 + i32.add + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.sub + local.tee $10 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $11 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $10 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$412 + drop + i32.const -1 + local.get $11 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$412 + drop + local.get $0 + local.get $11 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359695 + i32.or + local.set $10 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$413 + block $default31 + block $case432 + block $case333 + block $case234 + block $case135 + block $case036 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case036 $case135 $case234 $case333 $case432 $default31 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$413 + end + local.get $10 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$413 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$413 + end + local.get $0 + local.get $10 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$413 + end + local.get $10 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $10 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$413 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedSouthWest|inlined.3 + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|4 + end + end + i32.const 0 + end + end + local.set $3 + end + else + local.get $4 + i32.const 255 + i32.and + i32.const 1 + i32.eq + local.get $3 + i32.const 255 + i32.and + i32.const 255 + i32.eq + i32.and + if + local.get $0 + i32.extend8_s + local.set $9 + block $src/rsmod/StepValidator/StepValidator#isBlockedNorthWest|inlined.3 + local.get $5 + i32.extend8_s + local.tee $5 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$414 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $3 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.add + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $4 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$414 + drop + i32.const -1 + local.get $4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$414 + drop + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359608 + i32.or + local.set $4 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$415 + block $default32 + block $case433 + block $case334 + block $case235 + block $case136 + block $case037 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case037 $case136 $case235 $case334 $case433 $default32 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$415 + end + local.get $4 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$415 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$415 + end + local.get $0 + local.get $4 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$415 + end + local.get $4 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $4 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$415 + end + unreachable + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$417 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$416 (result i32) + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$416 + drop + i32.const -1 + local.get $3 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $3 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$416 + drop + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359560 + i32.or + local.set $3 + block $default33 + block $case434 + block $case335 + block $case236 + block $case137 + block $case038 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case038 $case137 $case236 $case335 $case434 $default33 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$417 + end + local.get $3 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$417 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$417 + end + local.get $0 + local.get $3 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$417 + end + local.get $3 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $3 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$417 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$419 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$418 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.add + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$418 + drop + i32.const -1 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$418 + drop + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359584 + i32.or + local.set $1 + block $default34 + block $case435 + block $case336 + block $case237 + block $case138 + block $case039 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case039 $case138 $case237 $case336 $case435 $default34 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$419 + end + local.get $1 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$419 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$419 + end + local.get $0 + local.get $1 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$419 + end + local.get $1 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $1 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$419 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + else + local.get $5 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$420 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $3 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.add + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $4 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$420 + drop + i32.const -1 + local.get $4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$420 + drop + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359614 + i32.or + local.set $4 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$421 + block $default35 + block $case436 + block $case337 + block $case238 + block $case139 + block $case040 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case040 $case139 $case238 $case337 $case436 $default35 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$421 + end + local.get $4 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$421 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$421 + end + local.get $0 + local.get $4 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$421 + end + local.get $4 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $4 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$421 + end + unreachable + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$423 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$422 (result i32) + local.get $3 + i32.const 7 + i32.and + local.get $2 + i32.const 2 + i32.add + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $4 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$422 + drop + i32.const -1 + local.get $4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$422 + drop + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359608 + i32.or + local.set $3 + block $default36 + block $case437 + block $case338 + block $case239 + block $case140 + block $case041 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case041 $case140 $case239 $case338 $case437 $default36 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$423 + end + local.get $3 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$423 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$423 + end + local.get $0 + local.get $3 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$423 + end + local.get $3 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $3 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$423 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$425 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$424 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 2 + i32.add + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$424 + drop + i32.const -1 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$424 + drop + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359800 + i32.or + local.set $1 + block $default37 + block $case438 + block $case339 + block $case240 + block $case141 + block $case042 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case042 $case141 $case240 $case339 $case438 $default37 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$425 + end + local.get $1 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$425 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$425 + end + local.get $0 + local.get $1 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$425 + end + local.get $1 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $1 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$425 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + else + i32.const 1 + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$426 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + local.get $2 + local.get $5 + i32.add + local.tee $4 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $10 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $4 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$426 + drop + i32.const -1 + local.get $10 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$426 + drop + local.get $0 + local.get $10 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359608 + i32.or + local.set $4 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$427 + block $default38 + block $case439 + block $case340 + block $case241 + block $case142 + block $case043 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case043 $case142 $case241 $case340 $case439 $default38 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$427 + end + local.get $4 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$427 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$427 + end + local.get $0 + local.get $4 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$427 + end + local.get $4 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $4 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$427 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorthWest|inlined.3 + i32.const 1 + local.set $4 + loop $for-loop|5 + local.get $4 + local.get $5 + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$428 (result i32) + local.get $1 + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + local.get $2 + local.get $4 + i32.add + local.tee $10 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $11 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $10 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$428 + drop + i32.const -1 + local.get $11 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$428 + drop + local.get $0 + local.get $11 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359614 + i32.or + local.set $10 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$429 + block $default39 + block $case440 + block $case341 + block $case242 + block $case143 + block $case044 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case044 $case143 $case242 $case341 $case440 $default39 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$429 + end + local.get $10 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$429 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$429 + end + local.get $0 + local.get $10 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$429 + end + local.get $10 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $10 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$429 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorthWest|inlined.3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$430 (result i32) + local.get $1 + local.get $4 + i32.add + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + local.get $2 + local.get $5 + i32.add + local.tee $10 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $11 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $10 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$430 + drop + i32.const -1 + local.get $11 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$430 + drop + local.get $0 + local.get $11 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359800 + i32.or + local.set $10 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$431 + block $default40 + block $case441 + block $case342 + block $case243 + block $case144 + block $case045 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case045 $case144 $case243 $case342 $case441 $default40 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$431 + end + local.get $10 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$431 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$431 + end + local.get $0 + local.get $10 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$431 + end + local.get $10 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $10 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$431 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorthWest|inlined.3 + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|5 + end + end + i32.const 0 + end + end + local.set $3 + end + else + local.get $4 + i32.const 255 + i32.and + i32.const 255 + i32.eq + local.get $3 + i32.const 255 + i32.and + i32.const 1 + i32.eq + i32.and + if + local.get $0 + i32.extend8_s + local.set $9 + block $src/rsmod/StepValidator/StepValidator#isBlockedSouthEast|inlined.3 + local.get $5 + i32.extend8_s + local.tee $5 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$432 (result i32) + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $4 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$432 + drop + i32.const -1 + local.get $4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$432 + drop + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359683 + i32.or + local.set $4 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$433 + block $default41 + block $case442 + block $case343 + block $case244 + block $case145 + block $case046 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case046 $case145 $case244 $case343 $case442 $default41 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$433 + end + local.get $4 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$433 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$433 + end + local.get $0 + local.get $4 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$433 + end + local.get $4 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $4 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$433 + end + unreachable + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$435 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$434 (result i32) + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$434 + drop + i32.const -1 + local.get $3 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $3 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$434 + drop + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359680 + i32.or + local.set $3 + block $default42 + block $case443 + block $case344 + block $case245 + block $case146 + block $case047 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case047 $case146 $case245 $case344 $case443 $default42 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$435 + end + local.get $3 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$435 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$435 + end + local.get $0 + local.get $3 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$435 + end + local.get $3 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $3 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$435 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$437 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$436 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.sub + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$436 + drop + i32.const -1 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$436 + drop + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359554 + i32.or + local.set $1 + block $default43 + block $case444 + block $case345 + block $case246 + block $case147 + block $case048 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case048 $case147 $case246 $case345 $case444 $default43 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$437 + end + local.get $1 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$437 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$437 + end + local.get $0 + local.get $1 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$437 + end + local.get $1 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $1 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$437 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + else + local.get $5 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$438 (result i32) + local.get $1 + i32.const 1 + i32.add + local.tee $0 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.sub + local.tee $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $4 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$438 + drop + i32.const -1 + local.get $4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$438 + drop + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359695 + i32.or + local.set $4 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$439 + block $default44 + block $case445 + block $case346 + block $case247 + block $case148 + block $case049 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case049 $case148 $case247 $case346 $case445 $default44 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$439 + end + local.get $4 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$439 + end + local.get $0 + local.get $4 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$439 + end + local.get $0 + local.get $4 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$439 + end + local.get $4 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $4 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$439 + end + unreachable + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$441 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$440 (result i32) + local.get $1 + i32.const 2 + i32.add + local.tee $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $4 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$440 + drop + i32.const -1 + local.get $4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$440 + drop + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359683 + i32.or + local.set $3 + block $default45 + block $case446 + block $case347 + block $case248 + block $case149 + block $case050 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case050 $case149 $case248 $case347 $case446 $default45 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$441 + end + local.get $3 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$441 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$441 + end + local.get $0 + local.get $3 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$441 + end + local.get $3 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $3 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$441 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$443 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$442 (result i32) + local.get $1 + i32.const 2 + i32.add + local.tee $0 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $1 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$442 + drop + i32.const -1 + local.get $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$442 + drop + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359779 + i32.or + local.set $1 + block $default46 + block $case447 + block $case348 + block $case249 + block $case150 + block $case051 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case051 $case150 $case249 $case348 $case447 $default46 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$443 + end + local.get $1 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$443 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$443 + end + local.get $0 + local.get $1 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$443 + end + local.get $1 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $1 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$443 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + else + i32.const 1 + local.set $4 + loop $for-loop|6 + local.get $4 + local.get $5 + i32.lt_s + if + i32.const 1 + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$444 (result i32) + local.get $1 + local.get $5 + i32.add + local.tee $0 + i32.const 7 + i32.and + local.get $2 + local.get $4 + i32.add + i32.const 1 + i32.sub + local.tee $10 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $11 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $10 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$444 + drop + i32.const -1 + local.get $11 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$444 + drop + local.get $0 + local.get $11 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359779 + i32.or + local.set $10 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$445 + block $default47 + block $case448 + block $case349 + block $case250 + block $case151 + block $case052 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case052 $case151 $case250 $case349 $case448 $default47 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$445 + end + local.get $10 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$445 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$445 + end + local.get $0 + local.get $10 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$445 + end + local.get $10 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $10 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$445 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedSouthEast|inlined.3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$446 (result i32) + local.get $1 + local.get $4 + i32.add + local.tee $0 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.sub + local.tee $10 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $11 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $10 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$446 + drop + i32.const -1 + local.get $11 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$446 + drop + local.get $0 + local.get $11 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359695 + i32.or + local.set $10 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$447 + block $default48 + block $case449 + block $case350 + block $case251 + block $case152 + block $case053 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case053 $case152 $case251 $case350 $case449 $default48 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$447 + end + local.get $10 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$447 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$447 + end + local.get $0 + local.get $10 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$447 + end + local.get $10 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $10 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$447 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedSouthEast|inlined.3 + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|6 + end + end + i32.const 0 + end + end + local.set $3 + end + else + local.get $4 + i32.const 255 + i32.and + i32.const 1 + i32.eq + local.get $3 + i32.const 255 + i32.and + i32.const 1 + i32.eq + i32.and + if + local.get $0 + i32.extend8_s + local.set $4 + block $src/rsmod/StepValidator/StepValidator#isBlockedNorthEast|inlined.3 + local.get $5 + i32.extend8_s + local.tee $9 + i32.const 1 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$448 (result i32) + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.add + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $5 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$448 + drop + i32.const -1 + local.get $5 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$448 + drop + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359776 + i32.or + local.set $5 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$449 + block $default49 + block $case450 + block $case351 + block $case252 + block $case153 + block $case054 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case054 $case153 $case252 $case351 $case450 $default49 + end + local.get $0 + local.get $5 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$449 + end + local.get $5 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$449 + end + local.get $0 + local.get $5 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$449 + end + local.get $0 + local.get $5 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$449 + end + local.get $5 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $5 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$449 + end + unreachable + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$451 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$450 (result i32) + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$450 + drop + i32.const -1 + local.get $3 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $3 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$450 + drop + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359680 + i32.or + local.set $3 + block $default50 + block $case451 + block $case352 + block $case253 + block $case154 + block $case055 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case055 $case154 $case253 $case352 $case451 $default50 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$451 + end + local.get $3 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$451 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$451 + end + local.get $0 + local.get $3 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$451 + end + local.get $3 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $3 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$451 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$453 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$452 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.add + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$452 + drop + i32.const -1 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$452 + drop + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359584 + i32.or + local.set $1 + block $default51 + block $case452 + block $case353 + block $case254 + block $case155 + block $case056 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case056 $case155 $case254 $case353 $case452 $default51 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$453 + end + local.get $1 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$453 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$453 + end + local.get $0 + local.get $1 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$453 + end + local.get $1 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $1 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$453 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + else + local.get $9 + i32.const 2 + i32.eq + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$454 (result i32) + local.get $1 + i32.const 1 + i32.add + local.tee $0 + i32.const 7 + i32.and + local.get $2 + i32.const 2 + i32.add + local.tee $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $5 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$454 + drop + i32.const -1 + local.get $5 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$454 + drop + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359800 + i32.or + local.set $5 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$455 + block $default52 + block $case453 + block $case354 + block $case255 + block $case156 + block $case057 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case057 $case156 $case255 $case354 $case453 $default52 + end + local.get $0 + local.get $5 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$455 + end + local.get $5 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$455 + end + local.get $0 + local.get $5 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$455 + end + local.get $0 + local.get $5 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$455 + end + local.get $5 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $5 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$455 + end + unreachable + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$457 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$456 (result i32) + local.get $1 + i32.const 2 + i32.add + local.tee $0 + i32.const 7 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $5 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$456 + drop + i32.const -1 + local.get $5 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$456 + drop + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359776 + i32.or + local.set $3 + block $default53 + block $case454 + block $case355 + block $case256 + block $case157 + block $case058 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case058 $case157 $case256 $case355 $case454 $default53 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$457 + end + local.get $3 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$457 + end + local.get $0 + local.get $3 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$457 + end + local.get $0 + local.get $3 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$457 + end + local.get $3 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $3 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$457 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + if + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$459 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$458 (result i32) + local.get $1 + i32.const 2 + i32.add + local.tee $0 + i32.const 7 + i32.and + local.get $2 + i32.const 1 + i32.add + local.tee $1 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $2 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$458 + drop + i32.const -1 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$458 + drop + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359779 + i32.or + local.set $1 + block $default54 + block $case455 + block $case356 + block $case257 + block $case158 + block $case059 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case059 $case158 $case257 $case356 $case455 $default54 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$459 + end + local.get $1 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$459 + end + local.get $0 + local.get $1 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$459 + end + local.get $0 + local.get $1 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$459 + end + local.get $1 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $1 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$459 + end + unreachable + end + else + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + else + i32.const 1 + local.set $3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$460 (result i32) + local.get $1 + local.get $9 + i32.add + local.tee $0 + i32.const 7 + i32.and + local.get $2 + local.get $9 + i32.add + local.tee $5 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $10 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$460 + drop + i32.const -1 + local.get $10 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$460 + drop + local.get $0 + local.get $10 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359776 + i32.or + local.set $5 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$461 + block $default55 + block $case456 + block $case357 + block $case258 + block $case159 + block $case060 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case060 $case159 $case258 $case357 $case456 $default55 + end + local.get $0 + local.get $5 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$461 + end + local.get $5 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$461 + end + local.get $0 + local.get $5 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$461 + end + local.get $0 + local.get $5 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$461 + end + local.get $5 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $5 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$461 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorthEast|inlined.3 + i32.const 1 + local.set $5 + loop $for-loop|7 + local.get $5 + local.get $9 + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$462 (result i32) + local.get $1 + local.get $5 + i32.add + local.tee $0 + i32.const 7 + i32.and + local.get $2 + local.get $9 + i32.add + local.tee $10 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $11 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $10 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$462 + drop + i32.const -1 + local.get $11 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$462 + drop + local.get $0 + local.get $11 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359800 + i32.or + local.set $10 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$463 + block $default56 + block $case457 + block $case358 + block $case259 + block $case160 + block $case061 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case061 $case160 $case259 $case358 $case457 $default56 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$463 + end + local.get $10 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$463 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$463 + end + local.get $0 + local.get $10 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$463 + end + local.get $10 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $10 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$463 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorthEast|inlined.3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$464 (result i32) + local.get $1 + local.get $9 + i32.add + local.tee $0 + i32.const 7 + i32.and + local.get $2 + local.get $5 + i32.add + local.tee $10 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $11 + i32.const -1 + local.get $8 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $10 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $4 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$464 + drop + i32.const -1 + local.get $11 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$464 + drop + local.get $0 + local.get $11 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $6 + i32.const 2359779 + i32.or + local.set $10 + block $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$465 + block $default57 + block $case458 + block $case359 + block $case260 + block $case161 + block $case062 + local.get $7 + i32.const 8 + i32.sub + i32.load + i32.const 6 + i32.sub + br_table $case062 $case161 $case260 $case359 $case458 $default57 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$465 + end + local.get $10 + i32.const -2097153 + i32.and + local.get $0 + i32.and + i32.eqz + local.get $0 + i32.const 2097152 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$465 + end + local.get $0 + local.get $10 + i32.and + i32.eqz + local.get $0 + i32.const -2147483648 + i32.and + i32.const 0 + i32.ne + i32.and + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$465 + end + local.get $0 + local.get $10 + i32.const -2147483648 + i32.or + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$465 + end + local.get $10 + i32.const 511 + i32.and + i32.const 9 + i32.shl + local.get $10 + i32.const 2143289344 + i32.and + i32.const 13 + i32.shr_u + i32.or + local.get $0 + i32.and + i32.eqz + local.set $0 + br $__inlined_func$src/rsmod/collision/CollisionStrategy/CollisionStrategy#canMove@override$465 + end + unreachable + end + local.get $0 + i32.eqz + br_if $src/rsmod/StepValidator/StepValidator#isBlockedNorthEast|inlined.3 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|7 + end + end + i32.const 0 + end + end + local.set $3 + end + else + local.get $3 + i32.extend8_s + call $~lib/util/number/itoa32 + local.set $0 + local.get $4 + i32.extend8_s + call $~lib/util/number/itoa32 + local.set $1 + i32.const 5812 + local.get $0 + i32.store + i32.const 5820 + local.get $1 + i32.store + i32.const 5808 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + i32.const 5632 + i32.const 43 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + end + end + end + end + end + end + end + local.get $3 + i32.eqz + ) + (func $src/index/canTravel@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 7 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $7 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + local.get $4 + local.get $5 + local.get $6 + local.get $7 + call $src/index/canTravel + ) + (func $src/index/hasLineOfSight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (result i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + local.get $0 + local.set $9 + local.get $8 + i32.const 196608 + i32.or + local.set $13 + local.get $8 + i32.const 135168 + i32.or + local.set $14 + local.get $8 + i32.const 147456 + i32.or + local.set $15 + local.get $8 + i32.const 132096 + i32.or + local.set $16 + local.get $8 + i32.const 256 + i32.or + local.set $17 + local.get $8 + i32.const 131072 + i32.or + local.set $11 + global.get $src/index/lineValidator + local.tee $10 + i32.load + local.set $12 + local.get $5 + i32.extend8_s + local.set $8 + block $src/rsmod/Line/Line.coordinate|inlined.0 + local.get $3 + local.get $1 + local.tee $0 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.0 + local.get $3 + local.get $0 + local.get $8 + i32.add + i32.const 1 + i32.sub + local.tee $0 + i32.ge_s + br_if $src/rsmod/Line/Line.coordinate|inlined.0 + local.get $3 + local.set $0 + end + local.get $5 + i32.extend8_s + local.set $8 + block $src/rsmod/Line/Line.coordinate|inlined.1 + local.get $2 + local.tee $5 + local.get $4 + i32.ge_s + br_if $src/rsmod/Line/Line.coordinate|inlined.1 + local.get $5 + local.get $8 + i32.add + i32.const 1 + i32.sub + local.tee $5 + local.get $4 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.1 + local.get $4 + local.set $5 + end + i32.const 0 + local.set $8 + block $src/rsmod/LineValidator/LineValidator#rayCast|inlined.0 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$466 (result i32) + i32.const -1 + local.get $12 + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $5 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $18 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$466 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $12 + local.get $18 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$466 + drop + local.get $18 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.get $17 + i32.and + br_if $src/rsmod/LineValidator/LineValidator#rayCast|inlined.0 + local.get $6 + i32.extend8_s + local.set $6 + block $src/rsmod/Line/Line.coordinate|inlined.2 + local.get $1 + local.get $3 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.2 + local.get $3 + local.get $6 + i32.add + i32.const 1 + i32.sub + local.tee $3 + local.get $1 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.2 + local.get $1 + local.set $3 + end + local.get $3 + local.set $1 + local.get $7 + i32.extend8_s + local.set $3 + block $src/rsmod/Line/Line.coordinate|inlined.3 + local.get $2 + local.get $4 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.3 + local.get $3 + local.get $4 + i32.add + i32.const 1 + i32.sub + local.tee $4 + local.get $2 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.3 + local.get $2 + local.set $4 + end + i32.const 1 + local.set $8 + local.get $4 + local.tee $2 + local.get $5 + i32.eq + local.get $0 + local.get $1 + i32.eq + i32.and + br_if $src/rsmod/LineValidator/LineValidator#rayCast|inlined.0 + local.get $1 + local.get $0 + i32.sub + local.tee $7 + f64.convert_i32_s + f64.abs + i32.trunc_sat_f64_s + local.set $6 + local.get $4 + local.get $5 + i32.sub + local.tee $8 + f64.convert_i32_s + f64.abs + i32.trunc_sat_f64_s + local.set $12 + local.get $13 + local.get $14 + local.get $7 + i32.const 0 + i32.ge_s + local.tee $13 + select + local.set $3 + local.get $15 + local.get $16 + local.get $8 + i32.const 0 + i32.ge_s + local.tee $14 + select + local.set $4 + local.get $6 + local.get $12 + i32.gt_s + if + i32.const 1 + i32.const -1 + local.get $13 + select + local.set $7 + local.get $5 + i32.const 16 + i32.shl + i32.const 32768 + i32.add + i32.const 0 + i32.const -1 + local.get $14 + select + i32.add + local.set $5 + local.get $8 + i32.const 16 + i32.shl + local.get $6 + i32.div_s + local.set $6 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + i32.const 0 + local.set $8 + local.get $11 + i32.const -1 + i32.xor + local.tee $12 + local.get $3 + i32.and + local.get $3 + local.get $1 + local.get $0 + local.get $7 + i32.add + local.tee $0 + i32.eq + local.get $5 + i32.const 16 + i32.shr_u + local.tee $13 + local.get $2 + i32.eq + i32.and + select + local.tee $3 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$467 (result i32) + i32.const -1 + local.get $10 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $13 + i32.const 3 + i32.shr_u + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.extend8_s + local.tee $14 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $15 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$467 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $13 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $16 + local.get $15 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$467 + drop + local.get $15 + local.get $16 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.and + br_if $src/rsmod/LineValidator/LineValidator#rayCast|inlined.0 + local.get $4 + local.get $12 + i32.and + local.get $4 + local.get $0 + local.get $1 + i32.eq + local.get $5 + local.get $6 + i32.add + local.tee $5 + i32.const 16 + i32.shr_u + local.tee $12 + local.get $2 + i32.eq + i32.and + select + local.set $4 + local.get $12 + local.get $13 + i32.ne + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$468 (result i32) + i32.const -1 + local.get $10 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $12 + i32.const 3 + i32.shr_u + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $14 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $13 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$468 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $12 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $12 + local.get $13 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$468 + drop + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.get $4 + i32.and + else + i32.const 0 + end + br_if $src/rsmod/LineValidator/LineValidator#rayCast|inlined.0 + br $while-continue|0 + end + end + else + i32.const 1 + i32.const -1 + local.get $14 + select + local.set $14 + local.get $0 + i32.const 16 + i32.shl + i32.const 32768 + i32.add + i32.const 0 + i32.const -1 + local.get $13 + select + i32.add + local.set $6 + local.get $7 + i32.const 16 + i32.shl + local.get $12 + i32.div_s + local.set $7 + local.get $5 + local.set $0 + loop $while-continue|1 + local.get $0 + local.get $2 + i32.ne + if + i32.const 0 + local.set $8 + local.get $11 + i32.const -1 + i32.xor + local.tee $5 + local.get $4 + i32.and + local.get $4 + local.get $6 + i32.const 16 + i32.shr_u + local.tee $12 + local.get $1 + i32.eq + local.get $2 + local.get $0 + local.get $14 + i32.add + local.tee $0 + i32.eq + i32.and + select + local.tee $4 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$469 (result i32) + i32.const -1 + local.get $10 + i32.load + i32.load + local.get $12 + i32.const 3 + i32.shr_u + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.extend8_s + local.tee $13 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $15 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$469 + drop + i32.const -1 + local.get $12 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $16 + local.get $15 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$469 + drop + local.get $15 + local.get $16 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.and + br_if $src/rsmod/LineValidator/LineValidator#rayCast|inlined.0 + local.get $3 + local.get $5 + i32.and + local.get $3 + local.get $6 + local.get $7 + i32.add + local.tee $6 + i32.const 16 + i32.shr_u + local.tee $5 + local.get $1 + i32.eq + local.get $0 + local.get $2 + i32.eq + i32.and + select + local.set $3 + local.get $5 + local.get $12 + i32.ne + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$470 (result i32) + i32.const -1 + local.get $10 + i32.load + i32.load + local.get $5 + i32.const 3 + i32.shr_u + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $13 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $12 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$470 + drop + i32.const -1 + local.get $5 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $5 + local.get $12 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$470 + drop + local.get $12 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.get $3 + i32.and + else + i32.const 0 + end + br_if $src/rsmod/LineValidator/LineValidator#rayCast|inlined.0 + br $while-continue|1 + end + end + end + i32.const 1 + local.set $8 + end + local.get $8 + ) + (func $src/index/hasLineOfSight@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (result i32) + block $4of4 + block $3of4 + block $2of4 + block $1of4 + block $0of4 + block $outOfRange + global.get $~argumentsLength + i32.const 5 + i32.sub + br_table $0of4 $1of4 $2of4 $3of4 $4of4 $outOfRange + end + unreachable + end + i32.const 1 + local.set $5 + end + i32.const 0 + local.set $6 + end + i32.const 0 + local.set $7 + end + i32.const 0 + local.set $8 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + local.get $4 + local.get $5 + local.get $6 + local.get $7 + local.get $8 + call $src/index/hasLineOfSight + ) + (func $src/index/hasLineOfWalk (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (result i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + global.get $src/index/lineValidator + local.set $10 + local.get $0 + local.set $9 + local.get $8 + i32.const 2359680 + i32.or + local.set $11 + local.get $8 + i32.const 2359560 + i32.or + local.set $12 + local.get $8 + i32.const 2359584 + i32.or + local.set $13 + local.get $8 + i32.const 2359554 + i32.or + local.set $8 + local.get $5 + i32.extend8_s + local.set $14 + block $src/rsmod/Line/Line.coordinate|inlined.4 + local.get $3 + local.get $1 + local.tee $0 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.4 + local.get $3 + local.get $0 + local.get $14 + i32.add + i32.const 1 + i32.sub + local.tee $0 + i32.ge_s + br_if $src/rsmod/Line/Line.coordinate|inlined.4 + local.get $3 + local.set $0 + end + local.get $5 + i32.extend8_s + local.set $14 + block $src/rsmod/Line/Line.coordinate|inlined.5 + local.get $2 + local.tee $5 + local.get $4 + i32.ge_s + br_if $src/rsmod/Line/Line.coordinate|inlined.5 + local.get $5 + local.get $14 + i32.add + i32.const 1 + i32.sub + local.tee $5 + local.get $4 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.5 + local.get $4 + local.set $5 + end + local.get $6 + i32.extend8_s + local.set $6 + block $src/rsmod/Line/Line.coordinate|inlined.6 + local.get $1 + local.get $3 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.6 + local.get $3 + local.get $6 + i32.add + i32.const 1 + i32.sub + local.tee $3 + local.get $1 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.6 + local.get $1 + local.set $3 + end + local.get $7 + i32.extend8_s + local.set $1 + block $src/rsmod/Line/Line.coordinate|inlined.7 + local.get $2 + local.get $4 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.7 + local.get $1 + local.get $4 + i32.add + i32.const 1 + i32.sub + local.tee $4 + local.get $2 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.7 + local.get $2 + local.set $4 + end + i32.const 1 + local.set $7 + block $src/rsmod/LineValidator/LineValidator#rayCast|inlined.1 + local.get $4 + local.get $5 + i32.eq + local.get $0 + local.get $3 + i32.eq + i32.and + br_if $src/rsmod/LineValidator/LineValidator#rayCast|inlined.1 + local.get $3 + local.get $0 + i32.sub + local.tee $1 + f64.convert_i32_s + f64.abs + i32.trunc_sat_f64_s + local.set $2 + local.get $4 + local.get $5 + i32.sub + local.tee $6 + f64.convert_i32_s + f64.abs + i32.trunc_sat_f64_s + local.set $7 + local.get $11 + local.get $12 + local.get $1 + i32.const 0 + i32.ge_s + local.tee $11 + select + local.set $12 + local.get $13 + local.get $8 + local.get $6 + i32.const 0 + i32.ge_s + local.tee $8 + select + local.set $13 + local.get $2 + local.get $7 + i32.gt_s + if + i32.const 1 + i32.const -1 + local.get $11 + select + local.set $1 + local.get $5 + i32.const 16 + i32.shl + i32.const 32768 + i32.add + i32.const 0 + i32.const -1 + local.get $8 + select + i32.add + local.set $5 + local.get $6 + i32.const 16 + i32.shl + local.get $2 + i32.div_s + local.set $2 + loop $while-continue|0 + local.get $0 + local.get $3 + i32.ne + if + i32.const 0 + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$471 (result i32) + local.get $0 + local.get $1 + i32.add + local.tee $0 + i32.const 7 + i32.and + local.get $5 + i32.const 16 + i32.shr_u + local.tee $4 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $10 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $4 + i32.const 3 + i32.shr_u + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.extend8_s + local.tee $8 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$471 + drop + i32.const -1 + local.get $6 + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$471 + drop + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.get $12 + i32.and + br_if $src/rsmod/LineValidator/LineValidator#rayCast|inlined.1 + local.get $2 + local.get $5 + i32.add + local.tee $5 + i32.const 16 + i32.shr_u + local.tee $6 + local.get $4 + i32.ne + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$472 (result i32) + i32.const -1 + local.get $10 + i32.load + i32.load + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_u + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $8 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$472 + drop + i32.const -1 + local.get $0 + i32.const 7 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $6 + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$472 + drop + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.get $13 + i32.and + else + i32.const 0 + end + br_if $src/rsmod/LineValidator/LineValidator#rayCast|inlined.1 + br $while-continue|0 + end + end + else + i32.const 1 + i32.const -1 + local.get $8 + select + local.set $2 + local.get $0 + i32.const 16 + i32.shl + i32.const 32768 + i32.add + i32.const 0 + i32.const -1 + local.get $11 + select + i32.add + local.set $6 + local.get $1 + i32.const 16 + i32.shl + local.get $7 + i32.div_s + local.set $1 + local.get $5 + local.set $0 + loop $while-continue|1 + local.get $0 + local.get $4 + i32.ne + if + i32.const 0 + local.set $7 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$473 (result i32) + local.get $6 + i32.const 16 + i32.shr_u + local.tee $3 + i32.const 7 + i32.and + local.get $0 + local.get $2 + i32.add + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $5 + i32.const -1 + local.get $10 + i32.load + i32.load + local.get $3 + i32.const 3 + i32.shr_u + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.extend8_s + local.tee $8 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$473 + drop + i32.const -1 + local.get $5 + local.get $11 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$473 + drop + local.get $11 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.get $13 + i32.and + br_if $src/rsmod/LineValidator/LineValidator#rayCast|inlined.1 + local.get $1 + local.get $6 + i32.add + local.tee $6 + i32.const 16 + i32.shr_u + local.tee $5 + local.get $3 + i32.ne + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$474 (result i32) + i32.const -1 + local.get $10 + i32.load + i32.load + local.get $5 + i32.const 3 + i32.shr_u + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $8 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$474 + drop + i32.const -1 + local.get $5 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $5 + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$474 + drop + local.get $3 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.get $12 + i32.and + else + i32.const 0 + end + br_if $src/rsmod/LineValidator/LineValidator#rayCast|inlined.1 + br $while-continue|1 + end + end + end + i32.const 1 + local.set $7 + end + local.get $7 + ) + (func $src/index/hasLineOfWalk@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (result i32) + block $4of4 + block $3of4 + block $2of4 + block $1of4 + block $0of4 + block $outOfRange + global.get $~argumentsLength + i32.const 5 + i32.sub + br_table $0of4 $1of4 $2of4 $3of4 $4of4 $outOfRange + end + unreachable + end + i32.const 1 + local.set $5 + end + i32.const 0 + local.set $6 + end + i32.const 0 + local.set $7 + end + i32.const 0 + local.set $8 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + local.get $4 + local.get $5 + local.get $6 + local.get $7 + local.get $8 + call $src/index/hasLineOfWalk + ) + (func $~lib/array/Array#push (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + ) + (func $src/index/lineOfSight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (result i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + global.get $src/index/linePathFinder + local.set $11 + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $8 + i32.const 196608 + i32.or + local.set $13 + local.get $8 + i32.const 135168 + i32.or + local.set $14 + local.get $8 + i32.const 147456 + i32.or + local.set $15 + local.get $8 + i32.const 132096 + i32.or + local.set $12 + local.get $8 + i32.const 256 + i32.or + local.set $8 + local.get $5 + i32.extend8_s + local.set $0 + local.get $1 + local.set $4 + block $src/rsmod/Line/Line.coordinate|inlined.8 + local.get $1 + local.get $3 + i32.ge_s + br_if $src/rsmod/Line/Line.coordinate|inlined.8 + local.get $0 + local.get $1 + i32.add + i32.const 1 + i32.sub + local.tee $4 + local.get $3 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.8 + local.get $3 + local.set $4 + end + local.get $5 + i32.extend8_s + local.set $5 + block $src/rsmod/Line/Line.coordinate|inlined.9 + local.get $9 + local.get $2 + local.tee $0 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.9 + local.get $9 + local.get $0 + local.get $5 + i32.add + i32.const 1 + i32.sub + local.tee $0 + i32.ge_s + br_if $src/rsmod/Line/Line.coordinate|inlined.9 + local.get $9 + local.set $0 + end + block $src/rsmod/LinePathFinder/LinePathFinder#rayCast|inlined.0 + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$475 (result i32) + i32.const -1 + local.get $11 + i32.load + i32.load + local.get $4 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $10 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $16 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$475 + drop + i32.const -1 + local.get $4 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $5 + local.get $16 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$475 + drop + local.get $16 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.get $8 + i32.and + if + global.get $src/rsmod/LinePathFinder/LinePathFinder.EMPTY + local.set $1 + br $src/rsmod/LinePathFinder/LinePathFinder#rayCast|inlined.0 + end + local.get $6 + i32.extend8_s + local.set $5 + block $src/rsmod/Line/Line.coordinate|inlined.10 + local.get $1 + local.get $3 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.10 + local.get $3 + local.get $5 + i32.add + i32.const 1 + i32.sub + local.tee $3 + local.get $1 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.10 + local.get $1 + local.set $3 + end + local.get $3 + local.set $5 + global.get $src/rsmod/LinePathFinder/LinePathFinder.EMPTY + local.set $1 + local.get $7 + i32.extend8_s + local.set $3 + block $src/rsmod/Line/Line.coordinate|inlined.11 + local.get $2 + local.get $9 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.11 + local.get $3 + local.get $9 + i32.add + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.11 + local.get $2 + local.set $9 + end + local.get $0 + local.get $9 + i32.eq + local.get $4 + local.get $5 + i32.eq + i32.and + br_if $src/rsmod/LinePathFinder/LinePathFinder#rayCast|inlined.0 + local.get $5 + local.get $4 + i32.sub + local.tee $2 + f64.convert_i32_s + f64.abs + i32.trunc_sat_f64_s + local.set $7 + local.get $9 + local.get $0 + i32.sub + local.tee $8 + f64.convert_i32_s + f64.abs + i32.trunc_sat_f64_s + local.set $3 + local.get $13 + local.get $14 + local.get $2 + i32.const 0 + i32.ge_s + local.tee $13 + select + local.set $1 + local.get $15 + local.get $12 + local.get $8 + i32.const 0 + i32.ge_s + local.tee $12 + select + local.set $6 + i32.const 0 + i32.const 11 + i32.const 5856 + call $~lib/rt/__newArray + local.set $14 + local.get $3 + local.get $7 + i32.lt_s + if + i32.const 1 + i32.const -1 + local.get $13 + select + local.set $2 + local.get $0 + i32.const 16 + i32.shl + i32.const 32768 + i32.add + i32.const 0 + i32.const -1 + local.get $12 + select + i32.add + local.set $3 + local.get $8 + i32.const 16 + i32.shl + local.get $7 + i32.div_s + local.set $0 + loop $while-continue|0 + local.get $4 + local.get $5 + i32.ne + if + local.get $5 + local.get $2 + local.get $4 + i32.add + local.tee $4 + i32.eq + local.get $3 + i32.const 16 + i32.shr_u + local.tee $7 + local.get $9 + i32.eq + i32.and + if + local.get $1 + i32.const -131073 + i32.and + local.get $1 + i32.const -1048577 + i32.and + i32.or + local.set $1 + end + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$476 (result i32) + i32.const -1 + local.get $11 + i32.load + i32.load + local.get $4 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $7 + i32.const 3 + i32.shr_u + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $10 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$476 + drop + i32.const -1 + local.get $4 + i32.const 7 + i32.and + local.get $7 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $12 + local.get $8 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$476 + drop + local.get $8 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.get $1 + i32.and + if + local.get $14 + i32.load offset=12 + call $~lib/staticarray/StaticArray#constructor + local.set $0 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + local.get $14 + i32.load offset=12 + i32.lt_s + if + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + local.get $0 + i32.add + local.get $14 + i32.load offset=4 + local.get $2 + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + local.set $1 + br $src/rsmod/LinePathFinder/LinePathFinder#rayCast|inlined.0 + end + local.get $14 + local.get $10 + i32.const 3 + i32.and + i32.const 4 + i32.shl + i32.extend8_s + local.get $7 + i32.const 16383 + i32.and + local.get $4 + i32.const 16383 + i32.and + i32.const 14 + i32.shl + i32.or + i32.or + call $~lib/array/Array#push + local.get $0 + local.get $3 + i32.add + local.tee $3 + i32.const 16 + i32.shr_u + local.tee $8 + local.get $7 + i32.ne + if + local.get $4 + local.get $5 + i32.eq + local.get $8 + local.get $9 + i32.eq + i32.and + if + local.get $6 + i32.const -131073 + i32.and + local.get $6 + i32.const -1048577 + i32.and + i32.or + local.set $6 + end + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$477 (result i32) + i32.const -1 + local.get $11 + i32.load + i32.load + local.get $4 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $8 + i32.const 3 + i32.shr_u + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $10 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$477 + drop + i32.const -1 + local.get $4 + i32.const 7 + i32.and + local.get $8 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $12 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$477 + drop + local.get $7 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.get $6 + i32.and + if + local.get $14 + i32.load offset=12 + call $~lib/staticarray/StaticArray#constructor + local.set $0 + i32.const 0 + local.set $1 + loop $for-loop|2 + local.get $1 + local.get $14 + i32.load offset=12 + i32.lt_s + if + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + local.get $0 + i32.add + local.get $14 + i32.load offset=4 + local.get $2 + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + local.get $0 + local.set $1 + br $src/rsmod/LinePathFinder/LinePathFinder#rayCast|inlined.0 + end + local.get $14 + local.get $10 + i32.const 3 + i32.and + i32.const 4 + i32.shl + i32.extend8_s + local.get $8 + i32.const 16383 + i32.and + local.get $4 + i32.const 16383 + i32.and + i32.const 14 + i32.shl + i32.or + i32.or + call $~lib/array/Array#push + end + br $while-continue|0 + end + end + else + i32.const 1 + i32.const -1 + local.get $12 + select + local.set $7 + local.get $4 + i32.const 16 + i32.shl + i32.const 32768 + i32.add + i32.const 0 + i32.const -1 + local.get $13 + select + i32.add + local.set $4 + local.get $2 + i32.const 16 + i32.shl + local.get $3 + i32.div_s + local.set $2 + loop $while-continue|3 + local.get $0 + local.get $9 + i32.ne + if + local.get $4 + i32.const 16 + i32.shr_u + local.tee $3 + local.get $5 + i32.eq + local.get $9 + local.get $0 + local.get $7 + i32.add + local.tee $0 + i32.eq + i32.and + if + local.get $6 + i32.const -131073 + i32.and + local.get $6 + i32.const -1048577 + i32.and + i32.or + local.set $6 + end + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$478 (result i32) + i32.const -1 + local.get $11 + i32.load + i32.load + local.get $3 + i32.const 3 + i32.shr_u + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $10 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$478 + drop + i32.const -1 + local.get $3 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $12 + local.get $8 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$478 + drop + local.get $8 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.get $6 + i32.and + if + local.get $14 + i32.load offset=12 + call $~lib/staticarray/StaticArray#constructor + local.set $0 + i32.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + local.get $14 + i32.load offset=12 + i32.lt_s + if + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + local.get $0 + i32.add + local.get $14 + i32.load offset=4 + local.get $2 + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|4 + end + end + local.get $0 + local.set $1 + br $src/rsmod/LinePathFinder/LinePathFinder#rayCast|inlined.0 + end + local.get $14 + local.get $10 + i32.const 3 + i32.and + i32.const 4 + i32.shl + i32.extend8_s + local.get $0 + i32.const 16383 + i32.and + local.get $3 + i32.const 16383 + i32.and + i32.const 14 + i32.shl + i32.or + i32.or + call $~lib/array/Array#push + local.get $2 + local.get $4 + i32.add + local.tee $4 + i32.const 16 + i32.shr_u + local.tee $8 + local.get $3 + i32.ne + if + local.get $5 + local.get $8 + i32.eq + local.get $0 + local.get $9 + i32.eq + i32.and + if + local.get $1 + i32.const -131073 + i32.and + local.get $1 + i32.const -1048577 + i32.and + i32.or + local.set $1 + end + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$479 (result i32) + i32.const -1 + local.get $11 + i32.load + i32.load + local.get $8 + i32.const 3 + i32.shr_u + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $10 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$479 + drop + i32.const -1 + local.get $8 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $12 + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$479 + drop + local.get $3 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.get $1 + i32.and + if + local.get $14 + i32.load offset=12 + call $~lib/staticarray/StaticArray#constructor + local.set $0 + i32.const 0 + local.set $1 + loop $for-loop|5 + local.get $1 + local.get $14 + i32.load offset=12 + i32.lt_s + if + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + local.get $0 + i32.add + local.get $14 + i32.load offset=4 + local.get $2 + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|5 + end + end + local.get $0 + local.set $1 + br $src/rsmod/LinePathFinder/LinePathFinder#rayCast|inlined.0 + end + local.get $14 + local.get $10 + i32.const 3 + i32.and + i32.const 4 + i32.shl + i32.extend8_s + local.get $0 + i32.const 16383 + i32.and + local.get $8 + i32.const 16383 + i32.and + i32.const 14 + i32.shl + i32.or + i32.or + call $~lib/array/Array#push + end + br $while-continue|3 + end + end + end + local.get $14 + i32.load offset=12 + call $~lib/staticarray/StaticArray#constructor + local.set $0 + i32.const 0 + local.set $1 + loop $for-loop|6 + local.get $1 + local.get $14 + i32.load offset=12 + i32.lt_s + if + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + local.get $0 + i32.add + local.get $14 + i32.load offset=4 + local.get $2 + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|6 + end + end + local.get $0 + local.set $1 + end + local.get $1 + ) + (func $src/index/lineOfSight@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (result i32) + block $4of4 + block $3of4 + block $2of4 + block $1of4 + block $0of4 + block $outOfRange + global.get $~argumentsLength + i32.const 5 + i32.sub + br_table $0of4 $1of4 $2of4 $3of4 $4of4 $outOfRange + end + unreachable + end + i32.const 1 + local.set $5 + end + i32.const 0 + local.set $6 + end + i32.const 0 + local.set $7 + end + i32.const 0 + local.set $8 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + local.get $4 + local.get $5 + local.get $6 + local.get $7 + local.get $8 + call $src/index/lineOfSight + ) + (func $src/index/lineOfWalk (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (result i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + global.get $src/index/linePathFinder + local.set $11 + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $8 + i32.const 2359680 + i32.or + local.set $12 + local.get $8 + i32.const 2359560 + i32.or + local.set $13 + local.get $8 + i32.const 2359584 + i32.or + local.set $14 + local.get $8 + i32.const 2359554 + i32.or + local.set $8 + local.get $5 + i32.extend8_s + local.set $0 + local.get $1 + local.set $4 + block $src/rsmod/Line/Line.coordinate|inlined.12 + local.get $1 + local.get $3 + i32.ge_s + br_if $src/rsmod/Line/Line.coordinate|inlined.12 + local.get $0 + local.get $1 + i32.add + i32.const 1 + i32.sub + local.tee $4 + local.get $3 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.12 + local.get $3 + local.set $4 + end + local.get $5 + i32.extend8_s + local.set $5 + block $src/rsmod/Line/Line.coordinate|inlined.13 + local.get $9 + local.get $2 + local.tee $0 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.13 + local.get $9 + local.get $0 + local.get $5 + i32.add + i32.const 1 + i32.sub + local.tee $0 + i32.ge_s + br_if $src/rsmod/Line/Line.coordinate|inlined.13 + local.get $9 + local.set $0 + end + local.get $6 + i32.extend8_s + local.set $5 + block $src/rsmod/Line/Line.coordinate|inlined.14 + local.get $1 + local.get $3 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.14 + local.get $3 + local.get $5 + i32.add + i32.const 1 + i32.sub + local.tee $3 + local.get $1 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.14 + local.get $1 + local.set $3 + end + local.get $3 + local.set $5 + global.get $src/rsmod/LinePathFinder/LinePathFinder.EMPTY + local.set $1 + local.get $7 + i32.extend8_s + local.set $3 + block $src/rsmod/Line/Line.coordinate|inlined.15 + local.get $2 + local.get $9 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.15 + local.get $3 + local.get $9 + i32.add + i32.const 1 + i32.sub + local.tee $9 + local.get $2 + i32.le_s + br_if $src/rsmod/Line/Line.coordinate|inlined.15 + local.get $2 + local.set $9 + end + block $src/rsmod/LinePathFinder/LinePathFinder#rayCast|inlined.1 + local.get $0 + local.get $9 + i32.eq + local.get $4 + local.get $5 + i32.eq + i32.and + br_if $src/rsmod/LinePathFinder/LinePathFinder#rayCast|inlined.1 + local.get $5 + local.get $4 + i32.sub + local.tee $1 + f64.convert_i32_s + f64.abs + i32.trunc_sat_f64_s + local.set $2 + local.get $9 + local.get $0 + i32.sub + local.tee $6 + f64.convert_i32_s + f64.abs + i32.trunc_sat_f64_s + local.set $3 + local.get $12 + local.get $13 + local.get $1 + i32.const 0 + i32.ge_s + local.tee $7 + select + local.set $12 + local.get $14 + local.get $8 + local.get $6 + i32.const 0 + i32.ge_s + local.tee $8 + select + local.set $13 + i32.const 0 + i32.const 11 + i32.const 5888 + call $~lib/rt/__newArray + local.set $14 + local.get $2 + local.get $3 + i32.gt_s + if + i32.const 1 + i32.const -1 + local.get $7 + select + local.set $1 + local.get $0 + i32.const 16 + i32.shl + i32.const 32768 + i32.add + i32.const 0 + i32.const -1 + local.get $8 + select + i32.add + local.set $3 + local.get $6 + i32.const 16 + i32.shl + local.get $2 + i32.div_s + local.set $0 + loop $while-continue|0 + local.get $4 + local.get $5 + i32.ne + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$480 (result i32) + local.get $1 + local.get $4 + i32.add + local.tee $4 + i32.const 7 + i32.and + local.get $3 + i32.const 16 + i32.shr_u + local.tee $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $6 + i32.const -1 + local.get $11 + i32.load + i32.load + local.get $4 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_u + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $10 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$480 + drop + i32.const -1 + local.get $6 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$480 + drop + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.get $12 + i32.and + if + local.get $14 + i32.load offset=12 + call $~lib/staticarray/StaticArray#constructor + local.set $0 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + local.get $14 + i32.load offset=12 + i32.lt_s + if + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + local.get $0 + i32.add + local.get $14 + i32.load offset=4 + local.get $2 + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + local.set $1 + br $src/rsmod/LinePathFinder/LinePathFinder#rayCast|inlined.1 + end + local.get $14 + local.get $10 + i32.const 3 + i32.and + i32.const 4 + i32.shl + i32.extend8_s + local.get $2 + i32.const 16383 + i32.and + local.get $4 + i32.const 16383 + i32.and + i32.const 14 + i32.shl + i32.or + i32.or + call $~lib/array/Array#push + local.get $0 + local.get $3 + i32.add + local.tee $3 + i32.const 16 + i32.shr_u + local.tee $6 + local.get $2 + i32.ne + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$481 (result i32) + i32.const -1 + local.get $11 + i32.load + i32.load + local.get $4 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $6 + i32.const 3 + i32.shr_u + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $10 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$481 + drop + i32.const -1 + local.get $4 + i32.const 7 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $7 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$481 + drop + local.get $2 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.get $13 + i32.and + if + local.get $14 + i32.load offset=12 + call $~lib/staticarray/StaticArray#constructor + local.set $0 + i32.const 0 + local.set $1 + loop $for-loop|2 + local.get $1 + local.get $14 + i32.load offset=12 + i32.lt_s + if + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + local.get $0 + i32.add + local.get $14 + i32.load offset=4 + local.get $2 + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + local.get $0 + local.set $1 + br $src/rsmod/LinePathFinder/LinePathFinder#rayCast|inlined.1 + end + local.get $14 + local.get $10 + i32.const 3 + i32.and + i32.const 4 + i32.shl + i32.extend8_s + local.get $6 + i32.const 16383 + i32.and + local.get $4 + i32.const 16383 + i32.and + i32.const 14 + i32.shl + i32.or + i32.or + call $~lib/array/Array#push + end + br $while-continue|0 + end + end + else + i32.const 1 + i32.const -1 + local.get $8 + select + local.set $2 + local.get $4 + i32.const 16 + i32.shl + i32.const 32768 + i32.add + i32.const 0 + i32.const -1 + local.get $7 + select + i32.add + local.set $4 + local.get $1 + i32.const 16 + i32.shl + local.get $3 + i32.div_s + local.set $1 + loop $while-continue|3 + local.get $0 + local.get $9 + i32.ne + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$482 (result i32) + local.get $4 + i32.const 16 + i32.shr_u + local.tee $3 + i32.const 7 + i32.and + local.get $0 + local.get $2 + i32.add + local.tee $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $5 + i32.const -1 + local.get $11 + i32.load + i32.load + local.get $3 + i32.const 3 + i32.shr_u + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $10 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$482 + drop + i32.const -1 + local.get $5 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$482 + drop + local.get $6 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.get $13 + i32.and + if + local.get $14 + i32.load offset=12 + call $~lib/staticarray/StaticArray#constructor + local.set $0 + i32.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + local.get $14 + i32.load offset=12 + i32.lt_s + if + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + local.get $0 + i32.add + local.get $14 + i32.load offset=4 + local.get $2 + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|4 + end + end + local.get $0 + local.set $1 + br $src/rsmod/LinePathFinder/LinePathFinder#rayCast|inlined.1 + end + local.get $14 + local.get $10 + i32.const 3 + i32.and + i32.const 4 + i32.shl + i32.extend8_s + local.get $0 + i32.const 16383 + i32.and + local.get $3 + i32.const 16383 + i32.and + i32.const 14 + i32.shl + i32.or + i32.or + call $~lib/array/Array#push + local.get $1 + local.get $4 + i32.add + local.tee $4 + i32.const 16 + i32.shr_u + local.tee $5 + local.get $3 + i32.ne + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$483 (result i32) + i32.const -1 + local.get $11 + i32.load + i32.load + local.get $5 + i32.const 3 + i32.shr_u + i32.const 2047 + i32.and + local.get $0 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $10 + i32.extend8_s + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$483 + drop + i32.const -1 + local.get $5 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $6 + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$483 + drop + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.get $12 + i32.and + if + local.get $14 + i32.load offset=12 + call $~lib/staticarray/StaticArray#constructor + local.set $0 + i32.const 0 + local.set $1 + loop $for-loop|5 + local.get $1 + local.get $14 + i32.load offset=12 + i32.lt_s + if + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + local.get $0 + i32.add + local.get $14 + i32.load offset=4 + local.get $2 + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|5 + end + end + local.get $0 + local.set $1 + br $src/rsmod/LinePathFinder/LinePathFinder#rayCast|inlined.1 + end + local.get $14 + local.get $10 + i32.const 3 + i32.and + i32.const 4 + i32.shl + i32.extend8_s + local.get $0 + i32.const 16383 + i32.and + local.get $5 + i32.const 16383 + i32.and + i32.const 14 + i32.shl + i32.or + i32.or + call $~lib/array/Array#push + end + br $while-continue|3 + end + end + end + local.get $14 + i32.load offset=12 + call $~lib/staticarray/StaticArray#constructor + local.set $0 + i32.const 0 + local.set $1 + loop $for-loop|6 + local.get $1 + local.get $14 + i32.load offset=12 + i32.lt_s + if + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + local.get $0 + i32.add + local.get $14 + i32.load offset=4 + local.get $2 + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|6 + end + end + local.get $0 + local.set $1 + end + local.get $1 + ) + (func $src/index/lineOfWalk@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (result i32) + block $4of4 + block $3of4 + block $2of4 + block $1of4 + block $0of4 + block $outOfRange + global.get $~argumentsLength + i32.const 5 + i32.sub + br_table $0of4 $1of4 $2of4 $3of4 $4of4 $outOfRange + end + unreachable + end + i32.const 1 + local.set $5 + end + i32.const 0 + local.set $6 + end + i32.const 0 + local.set $7 + end + i32.const 0 + local.set $8 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + local.get $4 + local.get $5 + local.get $6 + local.get $7 + local.get $8 + call $src/index/lineOfWalk + ) + (func $src/index/reached (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (result i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + global.get $src/index/flags + local.set $12 + local.get $0 + local.set $11 + i32.const 1 + local.set $0 + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.3 + local.get $2 + local.get $4 + i32.eq + local.tee $13 + local.get $1 + local.get $3 + i32.eq + block $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.3 (result i32) + i32.const 4 + local.get $9 + i32.const 255 + i32.and + local.tee $14 + i32.const 254 + i32.eq + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.3 + drop + i32.const 3 + local.get $14 + i32.const 255 + i32.eq + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.3 + drop + i32.const 0 + local.get $9 + i32.extend8_s + local.tee $15 + i32.const 3 + i32.le_s + local.get $15 + i32.const 0 + i32.ge_s + i32.and + local.get $14 + i32.const 9 + i32.eq + i32.or + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.3 + drop + i32.const 1 + local.get $15 + i32.const 9 + i32.lt_s + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.3 + drop + i32.const 2 + local.get $15 + i32.const 11 + i32.le_s + local.get $15 + i32.const 10 + i32.ge_s + i32.and + local.get $14 + i32.const 22 + i32.eq + i32.or + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.exitStrategy|inlined.3 + drop + i32.const 3 + end + local.tee $14 + i32.const 255 + i32.and + local.tee $15 + i32.const 4 + i32.ne + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.3 + local.get $15 + if + local.get $15 + i32.const 1 + i32.eq + if + local.get $1 + local.get $3 + i32.eq + local.get $7 + i32.const 255 + i32.and + local.tee $5 + i32.const 1 + i32.eq + i32.and + local.get $13 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.3 + local.get $2 + local.get $4 + i32.le_s + local.set $6 + local.get $5 + i32.const 1 + i32.ne + local.get $1 + local.get $3 + i32.le_s + i32.and + if (result i32) + local.get $7 + i32.extend8_s + local.get $1 + i32.add + i32.const 1 + i32.sub + local.get $3 + i32.ge_s + else + i32.const 0 + end + local.get $6 + i32.and + if (result i32) + local.get $7 + i32.extend8_s + local.get $2 + i32.add + i32.const 1 + i32.sub + local.get $4 + i32.ge_s + else + i32.const 0 + end + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.3 + local.get $11 + i32.extend8_s + local.set $0 + local.get $7 + i32.const 255 + i32.and + i32.const 1 + i32.eq + if + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.3 (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$484 (result i32) + i32.const -1 + local.get $12 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $0 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$484 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $5 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$484 + drop + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $9 + i32.const 255 + i32.and + local.tee $5 + i32.const 7 + i32.eq + local.tee $6 + local.get $5 + i32.const 6 + i32.eq + i32.or + if + local.get $8 + i32.const 2 + i32.add + i32.const 3 + i32.and + local.get $8 + local.get $6 + select + i32.extend8_s + local.tee $5 + if + local.get $5 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.eq + local.get $1 + local.get $3 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.const 1 + i32.sub + i32.eq + local.get $1 + local.get $3 + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.3 + else + local.get $5 + i32.const 2 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.eq + local.get $1 + local.get $3 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + local.get $1 + local.get $3 + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.3 + else + local.get $5 + i32.const 3 + i32.eq + if + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.eq + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + if + i32.const 1 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.3 + else + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + local.get $1 + local.get $3 + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.3 + drop + end + end + end + end + else + i32.const 1 + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.eq + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.const 1 + i32.sub + i32.eq + local.get $1 + local.get $3 + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.3 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.3 + else + local.get $9 + i32.const 255 + i32.and + i32.const 8 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $1 + local.get $3 + i32.eq + local.tee $5 + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.const 1 + i32.sub + i32.eq + local.get $5 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.eq + local.tee $2 + local.get $1 + local.get $3 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $2 + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecor1|inlined.3 + end + end + i32.const 0 + end + local.set $0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.3 + end + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.3 (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$485 (result i32) + i32.const -1 + local.get $12 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $0 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$485 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $5 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$485 + drop + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $7 + i32.extend8_s + local.tee $5 + local.get $1 + i32.add + i32.const 1 + i32.sub + local.set $6 + local.get $2 + local.get $5 + i32.add + i32.const 1 + i32.sub + local.set $10 + local.get $9 + i32.const 255 + i32.and + local.tee $11 + i32.const 7 + i32.eq + local.tee $12 + local.get $11 + i32.const 6 + i32.eq + i32.or + if + local.get $8 + i32.const 2 + i32.add + i32.const 3 + i32.and + local.get $8 + local.get $12 + select + i32.extend8_s + local.tee $8 + if + local.get $8 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $1 + local.get $3 + local.get $5 + i32.sub + i32.eq + local.get $2 + local.get $4 + i32.le_s + i32.and + local.get $4 + local.get $10 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $2 + local.get $4 + local.get $5 + i32.sub + i32.eq + local.get $1 + local.get $3 + i32.le_s + i32.and + local.get $3 + local.get $6 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.3 + else + local.get $8 + i32.const 2 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $1 + local.get $3 + local.get $7 + i32.extend8_s + i32.sub + i32.eq + local.get $2 + local.get $4 + i32.le_s + i32.and + local.get $4 + local.get $10 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + local.get $1 + local.get $3 + i32.le_s + i32.and + local.get $3 + local.get $6 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.3 + else + local.get $8 + i32.const 3 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + local.get $2 + local.get $4 + i32.le_s + i32.and + local.get $4 + local.get $10 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + local.get $1 + local.get $3 + i32.le_s + i32.and + local.get $3 + local.get $6 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.3 + end + end + end + else + i32.const 1 + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + local.get $2 + local.get $4 + i32.le_s + i32.and + local.get $4 + local.get $10 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $2 + local.get $4 + local.get $7 + i32.extend8_s + i32.sub + i32.eq + local.get $1 + local.get $3 + i32.le_s + i32.and + local.get $3 + local.get $6 + i32.le_s + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.3 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.3 + else + local.get $9 + i32.const 255 + i32.and + i32.const 8 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $3 + local.get $6 + i32.le_s + local.tee $5 + local.get $1 + local.get $3 + i32.le_s + local.tee $6 + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $2 + local.get $4 + local.get $7 + i32.extend8_s + local.tee $7 + i32.sub + i32.eq + local.get $6 + i32.and + local.get $5 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $4 + local.get $10 + i32.le_s + local.tee $5 + local.get $2 + local.get $4 + i32.le_s + local.tee $2 + local.get $1 + local.get $3 + local.get $7 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + local.get $2 + i32.and + local.get $5 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallDecorN|inlined.3 + end + end + i32.const 0 + end + local.set $0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.3 + else + local.get $14 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + local.get $11 + i32.extend8_s + local.set $9 + local.get $6 + local.get $5 + local.get $8 + i32.const 1 + i32.and + local.tee $11 + select + i32.extend8_s + local.set $13 + local.get $5 + local.get $6 + local.get $11 + select + i32.extend8_s + local.set $5 + local.get $8 + i32.const 255 + i32.and + if (result i32) + local.get $10 + local.get $8 + i32.const 7 + i32.and + i32.shl + i32.const 15 + i32.and + local.get $10 + i32.extend8_s + i32.const 4 + local.get $8 + i32.sub + i32.const 7 + i32.and + i32.shr_s + i32.or + else + local.get $10 + end + i32.extend8_s + local.set $6 + local.get $7 + i32.extend8_s + local.tee $8 + local.get $1 + i32.add + local.get $3 + i32.le_s + local.get $1 + local.get $3 + local.get $13 + i32.add + i32.ge_s + i32.or + if (result i32) + i32.const 0 + else + local.get $4 + local.get $2 + local.get $8 + i32.add + i32.lt_s + local.get $2 + local.get $4 + local.get $5 + i32.add + i32.lt_s + i32.and + end + local.set $8 + local.get $7 + i32.extend8_s + local.tee $7 + i32.const 1 + i32.gt_s + if + local.get $8 + i32.eqz + if + block $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.6 + local.get $2 + local.get $7 + i32.add + local.set $8 + local.get $4 + local.get $5 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.and + i32.eqz + local.get $3 + local.get $13 + i32.add + local.tee $10 + local.get $1 + i32.eq + i32.and + if + local.get $8 + f64.convert_i32_s + local.get $5 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$486 (result i32) + local.get $10 + i32.const 1 + i32.sub + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $4 + i32.const -1 + local.get $12 + i32.load + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$486 + drop + i32.const -1 + local.get $4 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$486 + drop + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 8 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.6 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + else + local.get $6 + i32.const 8 + i32.and + i32.eqz + local.get $3 + local.get $1 + local.get $7 + i32.add + local.tee $7 + i32.eq + i32.and + if + local.get $8 + f64.convert_i32_s + local.get $5 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $5 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $1 + loop $for-loop|1 + local.get $1 + local.get $5 + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$487 (result i32) + i32.const -1 + local.get $12 + i32.load + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$487 + drop + i32.const -1 + local.get $3 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $4 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$487 + drop + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 128 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.6 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + else + local.get $6 + i32.const 1 + i32.and + i32.eqz + local.get $2 + local.get $5 + i32.eq + i32.and + if + local.get $7 + f64.convert_i32_s + local.get $10 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $2 + local.get $1 + f64.convert_i32_s + local.get $3 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $1 + loop $for-loop|2 + local.get $1 + local.get $2 + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$488 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $5 + i32.const 1 + i32.sub + local.tee $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $4 + i32.const -1 + local.get $12 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$488 + drop + i32.const -1 + local.get $4 + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$488 + drop + local.get $3 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 2 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.6 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + else + local.get $6 + i32.const 4 + i32.and + i32.eqz + local.get $4 + local.get $8 + i32.eq + i32.and + if + local.get $7 + f64.convert_i32_s + local.get $10 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $2 + local.get $1 + f64.convert_i32_s + local.get $3 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $1 + loop $for-loop|3 + local.get $1 + local.get $2 + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$489 (result i32) + i32.const -1 + local.get $12 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $4 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$489 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $4 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $5 + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$489 + drop + local.get $3 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 32 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.6 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|3 + end + end + end + end + end + end + i32.const 0 + local.set $0 + end + end + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.3 + end + local.get $8 + i32.eqz + if + block $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.6 + local.get $1 + local.get $3 + i32.const 1 + i32.sub + i32.eq + local.get $2 + local.get $4 + i32.ge_s + i32.and + local.get $4 + local.get $5 + i32.add + i32.const 1 + i32.sub + local.tee $5 + local.get $2 + i32.ge_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$490 (result i32) + i32.const -1 + local.get $12 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$490 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $8 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$490 + drop + local.get $7 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 8 + i32.and + else + i32.const 1 + end + local.get $6 + i32.const 8 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.6 + local.get $1 + local.get $3 + local.get $13 + i32.add + i32.const 1 + i32.sub + local.tee $7 + i32.const 1 + i32.add + i32.eq + local.get $2 + local.get $4 + i32.ge_s + i32.and + local.get $2 + local.get $5 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$491 (result i32) + i32.const -1 + local.get $12 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$491 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $10 + local.get $8 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$491 + drop + local.get $8 + local.get $10 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 128 + i32.and + else + i32.const 1 + end + local.get $6 + i32.const 2 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.6 + local.get $2 + i32.const 1 + i32.add + local.get $4 + i32.eq + local.get $1 + local.get $3 + i32.ge_s + i32.and + local.get $1 + local.get $7 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$492 (result i32) + i32.const -1 + local.get $12 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$492 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $8 + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$492 + drop + local.get $4 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 2 + i32.and + else + i32.const 1 + end + local.get $6 + i32.const 4 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.6 + local.get $2 + local.get $5 + i32.const 1 + i32.add + i32.eq + local.get $1 + local.get $3 + i32.ge_s + i32.and + local.get $1 + local.get $7 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$493 (result i32) + i32.const -1 + local.get $12 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$493 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$493 + drop + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 32 + i32.and + else + i32.const 1 + end + local.get $6 + i32.const 1 + i32.and + i32.or + i32.eqz + local.set $0 + end + end + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.3 + else + local.get $14 + i32.const 255 + i32.and + i32.const 4 + i32.eq + if + local.get $11 + i32.extend8_s + local.set $9 + local.get $6 + local.get $5 + local.get $8 + i32.const 1 + i32.and + local.tee $11 + select + i32.extend8_s + local.set $13 + local.get $5 + local.get $6 + local.get $11 + select + i32.extend8_s + local.set $5 + local.get $8 + i32.const 255 + i32.and + if (result i32) + local.get $10 + local.get $8 + i32.const 7 + i32.and + i32.shl + i32.const 15 + i32.and + local.get $10 + i32.extend8_s + i32.const 4 + local.get $8 + i32.sub + i32.const 7 + i32.and + i32.shr_s + i32.or + else + local.get $10 + end + i32.extend8_s + local.set $6 + local.get $7 + i32.extend8_s + local.tee $8 + local.get $1 + i32.add + local.get $3 + i32.le_s + local.get $1 + local.get $3 + local.get $13 + i32.add + i32.ge_s + i32.or + if (result i32) + i32.const 0 + else + local.get $4 + local.get $2 + local.get $8 + i32.add + i32.lt_s + local.get $2 + local.get $4 + local.get $5 + i32.add + i32.lt_s + i32.and + end + local.set $8 + local.get $7 + i32.extend8_s + i32.const 1 + i32.gt_s + if + local.get $8 + if + i32.const 0 + local.set $0 + else + block $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.7 + local.get $7 + i32.extend8_s + local.tee $7 + local.get $1 + i32.add + local.set $8 + local.get $2 + local.get $7 + i32.add + local.set $7 + local.get $4 + local.get $5 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.and + i32.eqz + local.get $3 + local.get $13 + i32.add + local.tee $10 + local.get $1 + i32.eq + i32.and + if + local.get $7 + f64.convert_i32_s + local.get $5 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $1 + loop $for-loop|4 + local.get $1 + local.get $3 + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$494 (result i32) + local.get $10 + i32.const 1 + i32.sub + local.tee $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $4 + i32.const -1 + local.get $12 + i32.load + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$494 + drop + i32.const -1 + local.get $4 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$494 + drop + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 8 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.7 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|4 + end + end + else + local.get $6 + i32.const 8 + i32.and + i32.eqz + local.get $3 + local.get $8 + i32.eq + i32.and + if + local.get $7 + f64.convert_i32_s + local.get $5 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $5 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $1 + loop $for-loop|5 + local.get $1 + local.get $5 + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$495 (result i32) + i32.const -1 + local.get $12 + i32.load + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$495 + drop + i32.const -1 + local.get $3 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $4 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$495 + drop + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 128 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.7 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|5 + end + end + else + local.get $6 + i32.const 1 + i32.and + i32.eqz + local.get $2 + local.get $5 + i32.eq + i32.and + if + local.get $8 + f64.convert_i32_s + local.get $10 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $2 + local.get $1 + f64.convert_i32_s + local.get $3 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $1 + loop $for-loop|6 + local.get $1 + local.get $2 + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$496 (result i32) + local.get $1 + i32.const 7 + i32.and + local.get $5 + i32.const 1 + i32.sub + local.tee $3 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.set $4 + i32.const -1 + local.get $12 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $3 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$496 + drop + i32.const -1 + local.get $4 + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$496 + drop + local.get $3 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 2 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.7 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|6 + end + end + else + local.get $6 + i32.const 4 + i32.and + i32.eqz + local.get $4 + local.get $7 + i32.eq + i32.and + if + local.get $8 + f64.convert_i32_s + local.get $10 + f64.convert_i32_s + f64.min + i32.trunc_sat_f64_s + local.set $2 + local.get $1 + f64.convert_i32_s + local.get $3 + f64.convert_i32_s + f64.max + i32.trunc_sat_f64_s + local.set $1 + loop $for-loop|7 + local.get $1 + local.get $2 + i32.lt_s + if + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$497 (result i32) + i32.const -1 + local.get $12 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $4 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$497 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $4 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $5 + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$497 + drop + local.get $3 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 32 + i32.and + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangleN|inlined.7 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|7 + end + end + end + end + end + end + i32.const 0 + local.set $0 + end + end + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.3 + end + local.get $8 + if + i32.const 0 + local.set $0 + else + block $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.7 + local.get $1 + local.get $3 + i32.const 1 + i32.sub + i32.eq + local.get $2 + local.get $4 + i32.ge_s + i32.and + local.get $4 + local.get $5 + i32.add + i32.const 1 + i32.sub + local.tee $5 + local.get $2 + i32.ge_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$498 (result i32) + i32.const -1 + local.get $12 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$498 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $8 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$498 + drop + local.get $7 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 8 + i32.and + else + i32.const 1 + end + local.get $6 + i32.const 8 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.7 + local.get $1 + local.get $3 + local.get $13 + i32.add + i32.const 1 + i32.sub + local.tee $7 + i32.const 1 + i32.add + i32.eq + local.get $2 + local.get $4 + i32.ge_s + i32.and + local.get $2 + local.get $5 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$499 (result i32) + i32.const -1 + local.get $12 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$499 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $10 + local.get $8 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$499 + drop + local.get $8 + local.get $10 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 128 + i32.and + else + i32.const 1 + end + local.get $6 + i32.const 2 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.7 + local.get $2 + i32.const 1 + i32.add + local.get $4 + i32.eq + local.get $1 + local.get $3 + i32.ge_s + i32.and + local.get $1 + local.get $7 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$500 (result i32) + i32.const -1 + local.get $12 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$500 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $8 + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$500 + drop + local.get $4 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 2 + i32.and + else + i32.const 1 + end + local.get $6 + i32.const 4 + i32.and + i32.or + i32.eqz + br_if $src/rsmod/reach/RectangleBoundaryUtils/RectangleBoundaryUtils.reachRectangle1|inlined.7 + local.get $2 + local.get $5 + i32.const 1 + i32.add + i32.eq + local.get $1 + local.get $3 + i32.ge_s + i32.and + local.get $1 + local.get $7 + i32.le_s + i32.and + if (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$501 (result i32) + i32.const -1 + local.get $12 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $9 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$501 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$501 + drop + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + end + i32.const 32 + i32.and + else + i32.const 1 + end + local.get $6 + i32.const 1 + i32.and + i32.or + i32.eqz + local.set $0 + end + end + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.3 + end + end + end + else + local.get $1 + local.get $3 + i32.eq + local.get $7 + i32.const 255 + i32.and + local.tee $5 + i32.const 1 + i32.eq + i32.and + local.get $2 + local.get $4 + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.3 + local.get $2 + local.get $4 + i32.le_s + local.set $6 + local.get $5 + i32.const 1 + i32.ne + local.get $1 + local.get $3 + i32.le_s + i32.and + if (result i32) + local.get $7 + i32.extend8_s + local.get $1 + i32.add + i32.const 1 + i32.sub + local.get $3 + i32.ge_s + else + i32.const 0 + end + local.get $6 + i32.and + if (result i32) + local.get $7 + i32.extend8_s + local.get $2 + i32.add + i32.const 1 + i32.sub + local.get $4 + i32.ge_s + else + i32.const 0 + end + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.3 + local.get $11 + i32.extend8_s + local.set $0 + local.get $7 + i32.const 255 + i32.and + i32.const 1 + i32.eq + if + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$502 (result i32) + i32.const -1 + local.get $12 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $0 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$502 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $5 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$502 + drop + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $9 + i32.const 255 + i32.and + local.tee $5 + if + local.get $5 + i32.const 2 + i32.eq + if + local.get $8 + i32.const 255 + i32.and + local.tee $5 + if + local.get $5 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.eq + local.tee $5 + local.get $1 + local.get $3 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $1 + local.get $3 + i32.eq + local.tee $6 + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $5 + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.const 1 + i32.sub + i32.eq + local.get $6 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + else + local.get $8 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.eq + local.tee $5 + local.get $1 + local.get $3 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $1 + local.get $3 + i32.eq + local.tee $0 + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $5 + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $2 + local.get $4 + i32.const 1 + i32.sub + i32.eq + local.get $0 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + else + local.get $8 + i32.const 255 + i32.and + i32.const 3 + i32.eq + if + i32.const 1 + local.get $2 + local.get $4 + i32.eq + local.tee $5 + local.get $1 + local.get $3 + i32.const 1 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $1 + local.get $3 + i32.eq + local.tee $6 + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $5 + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $2 + local.get $4 + i32.const 1 + i32.sub + i32.eq + local.get $6 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + end + end + end + else + i32.const 1 + local.get $2 + local.get $4 + i32.eq + local.tee $5 + local.get $1 + local.get $3 + i32.const 1 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $1 + local.get $3 + i32.eq + local.tee $6 + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $5 + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.const 1 + i32.sub + i32.eq + local.get $6 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + else + local.get $9 + i32.const 255 + i32.and + i32.const 9 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 32 + i32.and + i32.eqz + local.get $1 + local.get $3 + i32.eq + local.tee $5 + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.const 1 + i32.sub + i32.eq + local.get $5 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 8 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.eq + local.tee $2 + local.get $1 + local.get $3 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 128 + i32.and + i32.eqz + local.get $2 + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + end + end + else + local.get $8 + i32.const 255 + i32.and + local.tee $5 + if + local.get $5 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + local.get $1 + local.get $3 + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.eq + local.tee $2 + local.get $1 + local.get $3 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $2 + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + else + local.get $8 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + i32.const 1 + local.get $2 + local.get $4 + i32.eq + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $1 + local.get $3 + i32.eq + local.tee $1 + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.const 1 + i32.sub + i32.eq + local.get $1 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + else + local.get $8 + i32.const 255 + i32.and + i32.const 3 + i32.eq + if + i32.const 1 + local.get $2 + local.get $4 + i32.const 1 + i32.sub + i32.eq + local.get $1 + local.get $3 + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.eq + local.tee $2 + local.get $1 + local.get $3 + i32.const 1 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $2 + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + end + end + end + else + i32.const 1 + local.get $2 + local.get $4 + i32.eq + local.get $1 + local.get $3 + i32.const 1 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $1 + local.get $3 + i32.eq + local.tee $1 + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $2 + local.get $4 + i32.const 1 + i32.sub + i32.eq + local.get $1 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWall1|inlined.3 + end + i32.const 0 + end + local.set $0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.3 + end + block $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 (result i32) + block $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$503 (result i32) + i32.const -1 + local.get $12 + i32.load + local.get $1 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + local.get $2 + i32.const 3 + i32.shr_s + i32.const 2047 + i32.and + i32.const 11 + i32.shl + i32.or + local.get $0 + i32.const 3 + i32.and + i32.const 22 + i32.shl + i32.or + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.eqz + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$503 + drop + i32.const -1 + local.get $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.const 3 + i32.shl + i32.or + local.tee $5 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_s + br_if $__inlined_func$src/rsmod/collision/CollisionFlagMap/CollisionFlagMap#get$503 + drop + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + end + local.set $0 + local.get $7 + i32.extend8_s + local.tee $5 + local.get $1 + i32.add + i32.const 1 + i32.sub + local.set $6 + local.get $2 + local.get $5 + i32.add + i32.const 1 + i32.sub + local.set $10 + local.get $9 + i32.const 255 + i32.and + local.tee $11 + if + local.get $11 + i32.const 2 + i32.eq + if + local.get $8 + i32.const 255 + i32.and + local.tee $9 + if + local.get $9 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $4 + local.get $10 + i32.le_s + local.tee $7 + local.get $2 + local.get $4 + i32.le_s + local.tee $8 + local.get $1 + local.get $3 + local.get $5 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $3 + local.get $6 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + local.tee $6 + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + local.get $8 + i32.and + local.get $7 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $6 + local.get $2 + local.get $4 + local.get $5 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + else + local.get $8 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $4 + local.get $10 + i32.le_s + local.tee $5 + local.get $2 + local.get $4 + i32.le_s + local.tee $8 + local.get $1 + local.get $3 + local.get $7 + i32.extend8_s + local.tee $7 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $3 + local.get $6 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + local.tee $0 + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + local.get $8 + i32.and + local.get $5 + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $0 + local.get $2 + local.get $4 + local.get $7 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + else + local.get $8 + i32.const 255 + i32.and + i32.const 3 + i32.eq + if + i32.const 1 + local.get $4 + local.get $10 + i32.le_s + local.tee $5 + local.get $2 + local.get $4 + i32.le_s + local.tee $8 + local.get $1 + local.get $3 + local.get $7 + i32.extend8_s + local.tee $7 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $3 + local.get $6 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + local.tee $6 + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + local.get $8 + i32.and + local.get $5 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $6 + local.get $2 + local.get $4 + local.get $7 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + end + end + end + else + i32.const 1 + local.get $4 + local.get $10 + i32.le_s + local.tee $5 + local.get $2 + local.get $4 + i32.le_s + local.tee $8 + local.get $1 + local.get $3 + local.get $7 + i32.extend8_s + local.tee $7 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $3 + local.get $6 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + local.tee $6 + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + local.get $8 + i32.and + local.get $5 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $6 + local.get $2 + local.get $4 + local.get $7 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + else + local.get $9 + i32.const 255 + i32.and + i32.const 9 + i32.eq + if + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $3 + local.get $6 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + local.tee $5 + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $5 + local.get $2 + local.get $4 + local.get $7 + i32.extend8_s + local.tee $5 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $4 + local.get $10 + i32.le_s + local.tee $6 + local.get $2 + local.get $4 + i32.le_s + local.tee $2 + local.get $1 + local.get $3 + local.get $5 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + local.get $2 + i32.and + local.get $6 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + end + end + else + local.get $8 + i32.const 255 + i32.and + local.tee $5 + if + local.get $5 + i32.const 1 + i32.eq + if + i32.const 1 + local.get $3 + local.get $6 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $4 + local.get $10 + i32.le_s + local.tee $5 + local.get $2 + local.get $4 + i32.le_s + local.tee $2 + local.get $1 + local.get $3 + local.get $7 + i32.extend8_s + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + local.get $2 + i32.and + local.get $5 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + else + local.get $8 + i32.const 255 + i32.and + i32.const 2 + i32.eq + if + i32.const 1 + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + local.get $2 + local.get $4 + i32.le_s + i32.and + local.get $4 + local.get $10 + i32.le_s + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $3 + local.get $6 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + local.tee $1 + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $1 + local.get $2 + local.get $4 + local.get $7 + i32.extend8_s + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + else + local.get $8 + i32.const 255 + i32.and + i32.const 3 + i32.eq + if + i32.const 1 + local.get $3 + local.get $6 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + local.get $2 + local.get $4 + local.get $7 + i32.extend8_s + local.tee $5 + i32.sub + i32.eq + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359560 + i32.and + i32.eqz + local.get $4 + local.get $10 + i32.le_s + local.tee $6 + local.get $2 + local.get $4 + i32.le_s + local.tee $2 + local.get $1 + local.get $3 + local.get $5 + i32.sub + i32.eq + i32.and + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359680 + i32.and + i32.eqz + local.get $1 + local.get $3 + i32.const 1 + i32.add + i32.eq + local.get $2 + i32.and + local.get $6 + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + end + end + end + else + i32.const 1 + local.get $1 + local.get $3 + local.get $7 + i32.extend8_s + local.tee $5 + i32.sub + i32.eq + local.get $2 + local.get $4 + i32.le_s + i32.and + local.get $4 + local.get $10 + i32.le_s + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359584 + i32.and + i32.eqz + local.get $3 + local.get $6 + i32.le_s + local.get $1 + local.get $3 + i32.le_s + i32.and + local.tee $1 + local.get $2 + local.get $4 + i32.const 1 + i32.add + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 1 + local.get $0 + i32.const 2359554 + i32.and + i32.eqz + local.get $1 + local.get $2 + local.get $4 + local.get $5 + i32.sub + i32.eq + i32.and + i32.and + br_if $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + drop + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + end + i32.const 0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reachWallN|inlined.3 + end + i32.const 0 + end + local.set $0 + br $src/rsmod/reach/ReachStrategy/ReachStrategy.reached|inlined.3 + end + i32.const 0 + local.set $0 + end + local.get $0 + i32.const 0 + i32.ne + ) + (func $src/index/reached@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (result i32) + block $3of3 + block $2of3 + block $1of3 + block $0of3 + block $outOfRange + global.get $~argumentsLength + i32.const 8 + i32.sub + br_table $0of3 $1of3 $2of3 $3of3 $outOfRange + end + unreachable + end + i32.const 0 + local.set $8 + end + i32.const -1 + local.set $9 + end + i32.const 0 + local.set $10 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + local.get $4 + local.get $5 + local.get $6 + local.get $7 + local.get $8 + local.get $9 + local.get $10 + call $src/index/reached + ) + (func $src/index/locShapeLayer (param $0 i32) (result i32) + block $case23|0 + block $case22|0 + block $case9|0 + block $case4|0 + block $case0|0 + local.get $0 + br_table $case0|0 $case0|0 $case0|0 $case0|0 $case4|0 $case4|0 $case4|0 $case4|0 $case4|0 $case9|0 $case9|0 $case9|0 $case9|0 $case9|0 $case9|0 $case9|0 $case9|0 $case9|0 $case9|0 $case9|0 $case9|0 $case9|0 $case22|0 $case23|0 + end + i32.const 0 + return + end + i32.const 1 + return + end + i32.const 2 + return + end + i32.const 3 + return + end + i32.const 6004 + local.get $0 + call $~lib/util/number/itoa32 + i32.store + i32.const 6000 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + i32.const 3680 + i32.const 534 + i32.const 13 + call $~lib/builtins/abort + unreachable + ) + (func $~setArgumentsLength (param $0 i32) + local.get $0 + global.set $~argumentsLength + ) + (func $~start + call $start:src/index + ) +) diff --git a/src/rsmod/Line.ts b/src/rsmod/Line.ts index a9d7bfb..960d7a6 100644 --- a/src/rsmod/Line.ts +++ b/src/rsmod/Line.ts @@ -1,27 +1,31 @@ -import CollisionFlag from './flag/CollisionFlag'; +import {CollisionFlag} from './flag/CollisionFlag'; +@final export default class Line { - static readonly SIGHT_BLOCKED_NORTH: number = CollisionFlag.LOC_PROJ_BLOCKER | CollisionFlag.WALL_NORTH_PROJ_BLOCKER; - static readonly SIGHT_BLOCKED_EAST: number = CollisionFlag.LOC_PROJ_BLOCKER | CollisionFlag.WALL_EAST_PROJ_BLOCKER; - static readonly SIGHT_BLOCKED_SOUTH: number = CollisionFlag.LOC_PROJ_BLOCKER | CollisionFlag.WALL_SOUTH_PROJ_BLOCKER; - static readonly SIGHT_BLOCKED_WEST: number = CollisionFlag.LOC_PROJ_BLOCKER | CollisionFlag.WALL_WEST_PROJ_BLOCKER; + @inline static readonly SIGHT_BLOCKED_NORTH: i32 = CollisionFlag.LOC_PROJ_BLOCKER | CollisionFlag.WALL_NORTH_PROJ_BLOCKER; + @inline static readonly SIGHT_BLOCKED_EAST: i32 = CollisionFlag.LOC_PROJ_BLOCKER | CollisionFlag.WALL_EAST_PROJ_BLOCKER; + @inline static readonly SIGHT_BLOCKED_SOUTH: i32 = CollisionFlag.LOC_PROJ_BLOCKER | CollisionFlag.WALL_SOUTH_PROJ_BLOCKER; + @inline static readonly SIGHT_BLOCKED_WEST: i32 = CollisionFlag.LOC_PROJ_BLOCKER | CollisionFlag.WALL_WEST_PROJ_BLOCKER; - static readonly WALK_BLOCKED_NORTH: number = CollisionFlag.WALL_NORTH | CollisionFlag.WALK_BLOCKED; - static readonly WALK_BLOCKED_EAST: number = CollisionFlag.WALL_EAST | CollisionFlag.WALK_BLOCKED; - static readonly WALK_BLOCKED_SOUTH: number = CollisionFlag.WALL_SOUTH | CollisionFlag.WALK_BLOCKED; - static readonly WALK_BLOCKED_WEST: number = CollisionFlag.WALL_WEST | CollisionFlag.WALK_BLOCKED; + @inline static readonly WALK_BLOCKED_NORTH: i32 = CollisionFlag.WALL_NORTH | CollisionFlag.WALK_BLOCKED; + @inline static readonly WALK_BLOCKED_EAST: i32 = CollisionFlag.WALL_EAST | CollisionFlag.WALK_BLOCKED; + @inline static readonly WALK_BLOCKED_SOUTH: i32 = CollisionFlag.WALL_SOUTH | CollisionFlag.WALK_BLOCKED; + @inline static readonly WALK_BLOCKED_WEST: i32 = CollisionFlag.WALL_WEST | CollisionFlag.WALK_BLOCKED; - static readonly HALF_TILE: number = this.scaleUp(1) / 2; + @inline static readonly HALF_TILE: i32 = (1 << 16) / 2; // Line.scaleUp(1) / 2; - static scaleUp(tiles: number): number { + @inline + static scaleUp(tiles: i32): i32 { return tiles << 16; } - static scaleDown(tiles: number): number { + @inline + static scaleDown(tiles: i32): i32 { return tiles >>> 16; } - static coordinate(a: number, b: number, size: number): number { + @inline + static coordinate(a: i32, b: i32, size: i32): i32 { if (a >= b) { return a; } else if (a + size - 1 <= b) { diff --git a/src/rsmod/LinePathFinder.ts b/src/rsmod/LinePathFinder.ts index 92fb5ff..1a7ce97 100644 --- a/src/rsmod/LinePathFinder.ts +++ b/src/rsmod/LinePathFinder.ts @@ -1,17 +1,30 @@ import CollisionFlagMap from './collision/CollisionFlagMap'; -import RayCast from './RayCast'; import Line from './Line'; -import CollisionFlag from './flag/CollisionFlag'; -import RouteCoordinates from './RouteCoordinates'; +import {CollisionFlag} from './flag/CollisionFlag'; +@final export default class LinePathFinder { + private static readonly EMPTY: StaticArray = new StaticArray(0); + private readonly flags: CollisionFlagMap; constructor(flags: CollisionFlagMap) { this.flags = flags; } - lineOfSight(level: number, srcX: number, srcZ: number, destX: number, destZ: number, srcSize: number = 1, destWidth: number = 0, destHeight: number = 0, extraFlag: number = 0): RayCast { + // prettier-ignore + @inline + lineOfSight( + level: i8, + srcX: i32, + srcZ: i32, + destX: i32, + destZ: i32, + srcSize: i8, + destWidth: i8, + destHeight: i8, + extraFlag: i32 + ): StaticArray { return this.rayCast( level, srcX, @@ -30,7 +43,19 @@ export default class LinePathFinder { ); } - lineOfWalk(level: number, srcX: number, srcZ: number, destX: number, destZ: number, srcSize: number = 1, destWidth: number = 0, destHeight: number = 0, extraFlag: number = 0): RayCast { + // prettier-ignore + @inline + lineOfWalk( + level: i8, + srcX: i32, + srcZ: i32, + destX: i32, + destZ: i32, + srcSize: i8, + destWidth: i8, + destHeight: i8, + extraFlag: i32 + ): StaticArray { return this.rayCast( level, srcX, @@ -49,113 +74,135 @@ export default class LinePathFinder { ); } - rayCast( - level: number, - srcX: number, - srcZ: number, - destX: number, - destZ: number, - srcSize: number, - destWidth: number, - destHeight: number, - flagWest: number, - flagEast: number, - flagSouth: number, - flagNorth: number, - flagObject: number, - los: boolean - ): RayCast { - const startX: number = Line.coordinate(srcX, destX, srcSize); - const startZ: number = Line.coordinate(srcZ, destZ, srcSize); + // prettier-ignore + @inline + private rayCast( + level: i8, + srcX: i32, + srcZ: i32, + destX: i32, + destZ: i32, + srcSize: i8, + destWidth: i8, + destHeight: i8, + flagWest: i32, + flagEast: i32, + flagSouth: i32, + flagNorth: i32, + flagObject: i32, + los: bool + ): StaticArray { + const startX: i32 = Line.coordinate(srcX, destX, srcSize); + const startZ: i32 = Line.coordinate(srcZ, destZ, srcSize); if (los && this.flags.isFlagged(startX, startZ, level, flagObject)) { - return RayCast.FAILED; + return LinePathFinder.EMPTY; } - const endX: number = Line.coordinate(destX, srcX, destWidth); - const endZ: number = Line.coordinate(destZ, srcZ, destHeight); + const endX: i32 = Line.coordinate(destX, srcX, destWidth); + const endZ: i32 = Line.coordinate(destZ, srcZ, destHeight); - if (startX === endX && startZ === endZ) { - return RayCast.EMPTY_SUCCESS; + if (startX == endX && startZ == endZ) { + return LinePathFinder.EMPTY; } - const deltaX: number = endX - startX; - const deltaZ: number = endZ - startZ; - const absoluteDeltaX: number = Math.abs(deltaX); - const absoluteDeltaZ: number = Math.abs(deltaZ); + const deltaX: i32 = endX - startX; + const deltaZ: i32 = endZ - startZ; + const absoluteDeltaX: i32 = Math.abs(deltaX); + const absoluteDeltaZ: i32 = Math.abs(deltaZ); - const travelEast: boolean = deltaX >= 0; - const travelNorth: boolean = deltaZ >= 0; + const travelEast: bool = deltaX >= 0; + const travelNorth: bool = deltaZ >= 0; - let xFlags: number = travelEast ? flagWest : flagEast; - let zFlags: number = travelNorth ? flagSouth : flagNorth; + let xFlags: i32 = travelEast ? flagWest : flagEast; + let zFlags: i32 = travelNorth ? flagSouth : flagNorth; - const coordinates: RouteCoordinates[] = []; + const coordinates: i32[] = []; if (absoluteDeltaX > absoluteDeltaZ) { - const offsetX: number = travelEast ? 1 : -1; - const offsetZ: number = travelNorth ? 0 : -1; + const offsetX: i32 = travelEast ? 1 : -1; + const offsetZ: i32 = travelNorth ? 0 : -1; - let scaledZ: number = Line.scaleUp(startZ) + Line.HALF_TILE + offsetZ; - const tangent: number = Line.scaleUp(deltaZ) / absoluteDeltaX; + let scaledZ: i32 = Line.scaleUp(startZ) + Line.HALF_TILE + offsetZ; + const tangent: i32 = Line.scaleUp(deltaZ) / absoluteDeltaX; - let currX: number = startX; - while (currX !== endX) { + let currX: i32 = startX; + while (currX != endX) { currX += offsetX; - const currZ: number = Line.scaleDown(scaledZ); - if (los && currX === endX && currZ === endZ) { + const currZ: i32 = Line.scaleDown(scaledZ); + if (los && currX == endX && currZ == endZ) { xFlags = (xFlags & ~CollisionFlag.LOC_PROJ_BLOCKER) | (xFlags & ~CollisionFlag.PLAYER); } if (this.flags.isFlagged(currX, currZ, level, xFlags)) { - return new RayCast(coordinates, coordinates.length > 0, false); + const route: StaticArray = new StaticArray(coordinates.length); + for (let i: i32 = 0; i < coordinates.length; i++) { + unchecked(route[i] = coordinates[i]); + } + return route; } - coordinates.push(new RouteCoordinates(currX, currZ, level)); + coordinates.push(((currZ) & 0x3fff) | (((currX) & 0x3fff) << 14) | ((level & 0x3) << 28)); scaledZ += tangent; - const nextZ: number = Line.scaleDown(scaledZ); - if (nextZ !== currZ) { - if (los && currX === endX && nextZ === endZ) { + const nextZ: i32 = Line.scaleDown(scaledZ); + if (nextZ != currZ) { + if (los && currX == endX && nextZ == endZ) { zFlags = (zFlags & ~CollisionFlag.LOC_PROJ_BLOCKER) | (zFlags & ~CollisionFlag.PLAYER); } if (this.flags.isFlagged(currX, nextZ, level, zFlags)) { - return new RayCast(coordinates, coordinates.length > 0, false); + const route: StaticArray = new StaticArray(coordinates.length); + for (let i: i32 = 0; i < coordinates.length; i++) { + unchecked(route[i] = coordinates[i]); + } + return route; } - coordinates.push(new RouteCoordinates(currX, nextZ, level)); + coordinates.push(((nextZ) & 0x3fff) | (((currX) & 0x3fff) << 14) | ((level & 0x3) << 28)); } } } else { - const offsetX: number = travelEast ? 0 : -1; - const offsetZ: number = travelNorth ? 1 : -1; + const offsetX: i32 = travelEast ? 0 : -1; + const offsetZ: i32 = travelNorth ? 1 : -1; - let scaledX: number = Line.scaleUp(startX) + Line.HALF_TILE + offsetX; - const tangent: number = Line.scaleUp(deltaX) / absoluteDeltaZ; + let scaledX: i32 = Line.scaleUp(startX) + Line.HALF_TILE + offsetX; + const tangent: i32 = Line.scaleUp(deltaX) / absoluteDeltaZ; - let currZ: number = startZ; - while (currZ !== endZ) { + let currZ: i32 = startZ; + while (currZ != endZ) { currZ += offsetZ; - const currX: number = Line.scaleDown(scaledX); - if (los && currX === endX && currZ === endZ) { + const currX: i32 = Line.scaleDown(scaledX); + if (los && currX == endX && currZ == endZ) { zFlags = (zFlags & ~CollisionFlag.LOC_PROJ_BLOCKER) | (zFlags & ~CollisionFlag.PLAYER); } if (this.flags.isFlagged(currX, currZ, level, zFlags)) { - return new RayCast(coordinates, coordinates.length > 0, false); + const route: StaticArray = new StaticArray(coordinates.length); + for (let i: i32 = 0; i < coordinates.length; i++) { + unchecked(route[i] = coordinates[i]); + } + return route; } - coordinates.push(new RouteCoordinates(currX, currZ, level)); + coordinates.push(((currZ) & 0x3fff) | (((currX) & 0x3fff) << 14) | ((level & 0x3) << 28)); scaledX += tangent; - const nextX: number = Line.scaleDown(scaledX); - if (nextX !== currX) { - if (los && nextX === endX && currZ === endZ) { + const nextX: i32 = Line.scaleDown(scaledX); + if (nextX != currX) { + if (los && nextX == endX && currZ == endZ) { xFlags = (xFlags & ~CollisionFlag.LOC_PROJ_BLOCKER) | (xFlags & ~CollisionFlag.PLAYER); } if (this.flags.isFlagged(nextX, currZ, level, xFlags)) { - return new RayCast(coordinates, coordinates.length > 0, false); + const route: StaticArray = new StaticArray(coordinates.length); + for (let i: i32 = 0; i < coordinates.length; i++) { + unchecked(route[i] = coordinates[i]); + } + return route; } - coordinates.push(new RouteCoordinates(nextX, currZ, level)); + coordinates.push(((currZ) & 0x3fff) | (((nextX) & 0x3fff) << 14) | ((level & 0x3) << 28)); } } } - return new RayCast(coordinates, false, true); + const route: StaticArray = new StaticArray(coordinates.length); + for (let i: i32 = 0; i < coordinates.length; i++) { + unchecked(route[i] = coordinates[i]); + } + return route; } } diff --git a/src/rsmod/LineValidator.ts b/src/rsmod/LineValidator.ts index b9bb837..41cb397 100644 --- a/src/rsmod/LineValidator.ts +++ b/src/rsmod/LineValidator.ts @@ -1,7 +1,8 @@ import CollisionFlagMap from './collision/CollisionFlagMap'; import Line from './Line'; -import CollisionFlag from './flag/CollisionFlag'; +import {CollisionFlag} from './flag/CollisionFlag'; +@final export default class LineValidator { private readonly flags: CollisionFlagMap; @@ -9,7 +10,19 @@ export default class LineValidator { this.flags = flags; } - hasLineOfSight(level: number, srcX: number, srcZ: number, destX: number, destZ: number, srcSize: number = 1, destWidth: number = 0, destHeight: number = 0, extraFlag: number = 0): boolean { + // prettier-ignore + @inline + hasLineOfSight( + level: i8, + srcX: i32, + srcZ: i32, + destX: i32, + destZ: i32, + srcSize: i8, + destWidth: i8, + destHeight: i8, + extraFlag: i32 + ): bool { return this.rayCast( level, srcX, @@ -29,7 +42,19 @@ export default class LineValidator { ); } - hasLineOfWalk(level: number, srcX: number, srcZ: number, destX: number, destZ: number, srcSize: number = 1, destWidth: number = 0, destHeight: number = 0, extraFlag: number = 0): boolean { + // prettier-ignore + @inline + hasLineOfWalk( + level: i8, + srcX: i32, + srcZ: i32, + destX: i32, + destZ: i32, + srcSize: i8, + destWidth: i8, + destHeight: i8, + extraFlag: i32 + ): bool { return this.rayCast( level, srcX, @@ -49,60 +74,62 @@ export default class LineValidator { ); } - rayCast( - level: number, - srcX: number, - srcZ: number, - destX: number, - destZ: number, - srcSize: number, - destWidth: number, - destHeight: number, - flagWest: number, - flagEast: number, - flagSouth: number, - flagNorth: number, - flagLoc: number, - flagProj: number, - los: boolean - ): boolean { - const startX: number = Line.coordinate(srcX, destX, srcSize); - const startZ: number = Line.coordinate(srcZ, destZ, srcSize); + // prettier-ignore + @inline + private rayCast( + level: i8, + srcX: i32, + srcZ: i32, + destX: i32, + destZ: i32, + srcSize: i8, + destWidth: i8, + destHeight: i8, + flagWest: i32, + flagEast: i32, + flagSouth: i32, + flagNorth: i32, + flagLoc: i32, + flagProj: i32, + los: bool + ): bool { + const startX: i32 = Line.coordinate(srcX, destX, srcSize); + const startZ: i32 = Line.coordinate(srcZ, destZ, srcSize); if (los && this.flags.isFlagged(startX, startZ, level, flagLoc)) { return false; } - const endX: number = Line.coordinate(destX, srcX, destWidth); - const endZ: number = Line.coordinate(destZ, srcZ, destHeight); + const endX: i32 = Line.coordinate(destX, srcX, destWidth); + const endZ: i32 = Line.coordinate(destZ, srcZ, destHeight); - if (startX === endX && startZ === endZ) { + if (startX == endX && startZ == endZ) { return true; } - const deltaX: number = endX - startX; - const deltaZ: number = endZ - startZ; - const absoluteDeltaX: number = Math.abs(deltaX); - const absoluteDeltaZ: number = Math.abs(deltaZ); + const deltaX: i32 = endX - startX; + const deltaZ: i32 = endZ - startZ; + const absoluteDeltaX: i32 = Math.abs(deltaX); + const absoluteDeltaZ: i32 = Math.abs(deltaZ); - const travelEast: boolean = deltaX >= 0; - const travelNorth: boolean = deltaZ >= 0; + const travelEast: bool = deltaX >= 0; + const travelNorth: bool = deltaZ >= 0; - let xFlags: number = travelEast ? flagWest : flagEast; - let zFlags: number = travelNorth ? flagSouth : flagNorth; + let xFlags: i32 = travelEast ? flagWest : flagEast; + let zFlags: i32 = travelNorth ? flagSouth : flagNorth; if (absoluteDeltaX > absoluteDeltaZ) { - const offsetX: number = travelEast ? 1 : -1; - const offsetZ: number = travelNorth ? 0 : -1; + const offsetX: i32 = travelEast ? 1 : -1; + const offsetZ: i32 = travelNorth ? 0 : -1; - let scaledZ: number = Line.scaleUp(startZ) + Line.HALF_TILE + offsetZ; - const tangent: number = Line.scaleUp(deltaZ) / absoluteDeltaX; + let scaledZ: i32 = Line.scaleUp(startZ) + Line.HALF_TILE + offsetZ; + const tangent: i32 = Line.scaleUp(deltaZ) / absoluteDeltaX; - let currX: number = startX; - while (currX !== endX) { + let currX: i32 = startX; + while (currX != endX) { currX += offsetX; - const currZ: number = Line.scaleDown(scaledZ); - if (los && currX === endX && currZ === endZ) { + const currZ: i32 = Line.scaleDown(scaledZ); + if (los && currX == endX && currZ == endZ) { xFlags = xFlags & ~flagProj; } if (this.flags.isFlagged(currX, currZ, level, xFlags)) { @@ -111,26 +138,26 @@ export default class LineValidator { scaledZ += tangent; - const nextZ: number = Line.scaleDown(scaledZ); - if (los && currX === endX && nextZ === endZ) { + const nextZ: i32 = Line.scaleDown(scaledZ); + if (los && currX == endX && nextZ == endZ) { zFlags = zFlags & ~flagProj; } - if (nextZ !== currZ && this.flags.isFlagged(currX, nextZ, level, zFlags)) { + if (nextZ != currZ && this.flags.isFlagged(currX, nextZ, level, zFlags)) { return false; } } } else { - const offsetX: number = travelEast ? 0 : -1; - const offsetZ: number = travelNorth ? 1 : -1; + const offsetX: i32 = travelEast ? 0 : -1; + const offsetZ: i32 = travelNorth ? 1 : -1; - let scaledX: number = Line.scaleUp(startX) + Line.HALF_TILE + offsetX; - const tangent: number = Line.scaleUp(deltaX) / absoluteDeltaZ; + let scaledX: i32 = Line.scaleUp(startX) + Line.HALF_TILE + offsetX; + const tangent: i32 = Line.scaleUp(deltaX) / absoluteDeltaZ; - let currZ: number = startZ; - while (currZ !== endZ) { + let currZ: i32 = startZ; + while (currZ != endZ) { currZ += offsetZ; - const currX: number = Line.scaleDown(scaledX); - if (los && currX === endX && currZ === endZ) { + const currX: i32 = Line.scaleDown(scaledX); + if (los && currX == endX && currZ == endZ) { zFlags = zFlags & ~flagProj; } if (this.flags.isFlagged(currX, currZ, level, zFlags)) { @@ -139,11 +166,11 @@ export default class LineValidator { scaledX += tangent; - const nextX: number = Line.scaleDown(scaledX); - if (los && nextX === endX && currZ === endZ) { + const nextX: i32 = Line.scaleDown(scaledX); + if (los && nextX == endX && currZ == endZ) { xFlags = xFlags & ~flagProj; } - if (nextX !== currX && this.flags.isFlagged(nextX, currZ, level, xFlags)) { + if (nextX != currX && this.flags.isFlagged(nextX, currZ, level, xFlags)) { return false; } } diff --git a/src/rsmod/LocAngle.ts b/src/rsmod/LocAngle.ts new file mode 100644 index 0000000..8ec2210 --- /dev/null +++ b/src/rsmod/LocAngle.ts @@ -0,0 +1,6 @@ +export enum LocAngle { + WEST = 0, + NORTH = 1, + EAST = 2, + SOUTH = 3 +} diff --git a/src/rsmod/LocLayer.ts b/src/rsmod/LocLayer.ts new file mode 100644 index 0000000..4bebdd9 --- /dev/null +++ b/src/rsmod/LocLayer.ts @@ -0,0 +1,6 @@ +export enum LocLayer { + WALL = 0, + WALL_DECOR = 1, + GROUND = 2, + GROUND_DECOR = 3 +} diff --git a/src/rsmod/LocShape.ts b/src/rsmod/LocShape.ts new file mode 100644 index 0000000..475c128 --- /dev/null +++ b/src/rsmod/LocShape.ts @@ -0,0 +1,25 @@ +export enum LocShape { + WALL_STRAIGHT = 0, + WALL_DIAGONAL_CORNER = 1, + WALL_L = 2, + WALL_SQUARE_CORNER = 3, + WALLDECOR_STRAIGHT_NOOFFSET = 4, + WALLDECOR_STRAIGHT_OFFSET = 5, + WALLDECOR_DIAGONAL_OFFSET = 6, + WALLDECOR_DIAGONAL_NOOFFSET = 7, + WALLDECOR_DIAGONAL_BOTH = 8, + WALL_DIAGONAL = 9, + CENTREPIECE_STRAIGHT = 10, + CENTREPIECE_DIAGONAL = 11, + ROOF_STRAIGHT = 12, + ROOF_DIAGONAL_WITH_ROOFEDGE = 13, + ROOF_DIAGONAL = 14, + ROOF_L_CONCAVE = 15, + ROOF_L_CONVEX = 16, + ROOF_FLAT = 17, + ROOFEDGE_STRAIGHT = 18, + ROOFEDGE_DIAGONAL_CORNER = 19, + ROOFEDGE_L = 20, + ROOFEDGE_SQUARE_CORNER = 21, + GROUND_DECOR = 22 +} diff --git a/src/rsmod/NaivePathFinder.ts b/src/rsmod/NaivePathFinder.ts index c931ae0..4a6631a 100644 --- a/src/rsmod/NaivePathFinder.ts +++ b/src/rsmod/NaivePathFinder.ts @@ -2,24 +2,38 @@ // https://gist.github.com/Z-Kris/fe476d75a51374f12dca999700f009f7 import StepValidator from './StepValidator'; -import CollisionStrategy from './collision/CollisionStrategy'; -import Route from './Route'; -import RouteCoordinates from './RouteCoordinates'; +import {CollisionStrategy} from './collision/CollisionStrategy'; +@final export default class NaivePathFinder { - private readonly stepValidator: StepValidator; - private readonly cardinals = [ + private static readonly DIRECTIONS: i32[][] = [ [-1, 0], // West [1, 0], // East [0, 1], // North [0, -1] // South ]; + private readonly stepValidator: StepValidator; + constructor(stepValidator: StepValidator) { this.stepValidator = stepValidator; } - findPath(level: number, srcX: number, srcZ: number, destX: number, destZ: number, srcWidth: number, srcHeight: number, destWidth: number, destHeight: number, blockAccessFlags: number, collision: CollisionStrategy): Route { + // prettier-ignore + @inline + findPath( + level: i8, + srcX: i32, + srcZ: i32, + destX: i32, + destZ: i32, + srcWidth: i8, + srcHeight: i8, + destWidth: i8, + destHeight: i8, + blockAccessFlags: i8, + collision: CollisionStrategy + ): StaticArray { if (!(srcX >= 0 && srcX <= 0x7fff && srcZ >= 0 && srcZ <= 0x7fff)) { throw new Error(`Failed requirement. srcX was: ${srcX}, srcZ was: ${srcZ}.`); } @@ -31,35 +45,36 @@ export default class NaivePathFinder { } // If we are intersecting at all, the path needs to try to move out of the way. if (this.intersects(srcX, srcZ, srcWidth, srcHeight, destX, destZ, destWidth, destHeight)) { - const dest: RouteCoordinates = this.cardinalDestination(level, srcX, srcZ); - return new Route([dest], false, true); + return this.cardinalDestination(level, srcX, srcZ); } - const dest: RouteCoordinates = this.naiveDestination(level, srcX, srcZ, srcWidth, srcHeight, destX, destZ, 1, 1); - if (this.isDiagonal(dest.x, dest.z, srcWidth, srcHeight, destX, destZ, destWidth, destHeight)) { - return new Route([dest], false, true); + const dest: StaticArray = this.naiveDestination(level, srcX, srcZ, srcWidth, srcHeight, destX, destZ, 1, 1); + const dx: i32 = dest[0] >> 14 & 0x3fff; + const dz: i32 = dest[0] & 0x3fff; + if (this.isDiagonal(dx, dz, srcWidth, srcHeight, destX, destZ, destWidth, destHeight)) { + return dest; } /* If we can interact from this coord(or overlap with the target), allow the pathfinder to exit. */ - if (this.intersects(dest.x, dest.z, srcWidth, srcHeight, destX, destZ, destWidth, destHeight)) { - return new Route([dest], false, true); + if (this.intersects(dx, dz, srcWidth, srcHeight, destX, destZ, destWidth, destHeight)) { + return dest; } - let currX: number = dest.x; - let currZ: number = dest.z; - while (currX !== destX && currZ !== destZ) { - const dx: number = Math.sign(destX - currX); - const dz: number = Math.sign(destZ - currZ); + let currX: i32 = dx; + let currZ: i32 = dz; + while (currX != destX && currZ != destZ) { + const dx: i8 = Math.sign(destX - currX); + const dz: i8 = Math.sign(destZ - currZ); if (this.stepValidator.canTravel(level, currX, currZ, dx, dz, srcWidth, blockAccessFlags, collision)) { currX += dx; currZ += dz; - } else if (dx !== 0 && this.stepValidator.canTravel(level, currX, currZ, dx, 0, srcWidth, blockAccessFlags, collision)) { + } else if (dx != 0 && this.stepValidator.canTravel(level, currX, currZ, dx, 0, srcWidth, blockAccessFlags, collision)) { currX += dx; - } else if (dz !== 0 && this.stepValidator.canTravel(level, currX, currZ, 0, dz, srcWidth, blockAccessFlags, collision)) { + } else if (dz != 0 && this.stepValidator.canTravel(level, currX, currZ, 0, dz, srcWidth, blockAccessFlags, collision)) { currZ += dz; } else { /* If we can't step anywhere, exit out, we've arrived. */ break; } } - return new Route([new RouteCoordinates(currX, currZ, level)], false, true); + return StaticArray.fromArray([((currZ) & 0x3fff) | (((currX) & 0x3fff) << 14) | ((level & 0x3) << 28)]); } /** @@ -73,30 +88,33 @@ export default class NaivePathFinder { * @param destWidth The end width on the X axis. * @param destHeight The end length on the Z axis. */ - intersects(srcX: number, srcZ: number, srcWidth: number, srcHeight: number, destX: number, destZ: number, destWidth: number, destHeight: number): boolean { - const srcHorizontal: number = srcX + srcWidth; - const srcVertical: number = srcZ + srcHeight; - const destHorizontal: number = destX + destWidth; - const destVertical: number = destZ + destHeight; + @inline + intersects(srcX: i32, srcZ: i32, srcWidth: i32, srcHeight: i32, destX: i32, destZ: i32, destWidth: i32, destHeight: i32): bool { + const srcHorizontal: i32 = srcX + srcWidth; + const srcVertical: i32 = srcZ + srcHeight; + const destHorizontal: i32 = destX + destWidth; + const destVertical: i32 = destZ + destHeight; return !(destX >= srcHorizontal || destHorizontal <= srcX || destZ >= srcVertical || destVertical <= srcZ); } - private isDiagonal(srcX: number, srcZ: number, srcWidth: number, srcHeight: number, destX: number, destZ: number, destWidth: number, destHeight: number): boolean { - if (srcX + srcWidth === destX && srcZ + srcHeight === destZ) { + @inline + private isDiagonal(srcX: i32, srcZ: i32, srcWidth: i32, srcHeight: i32, destX: i32, destZ: i32, destWidth: i32, destHeight: i32): bool { + if (srcX + srcWidth == destX && srcZ + srcHeight == destZ) { return true; } - if (srcX - 1 === destX + destWidth - 1 && srcZ - 1 === destZ + destHeight - 1) { + if (srcX - 1 == destX + destWidth - 1 && srcZ - 1 == destZ + destHeight - 1) { return true; } - if (srcX + srcWidth === destX && srcZ - 1 === destZ + destHeight - 1) { + if (srcX + srcWidth == destX && srcZ - 1 == destZ + destHeight - 1) { return true; } - return srcX - 1 === destX + destWidth - 1 && srcZ + srcHeight === destZ; + return srcX - 1 == destX + destWidth - 1 && srcZ + srcHeight == destZ; } - cardinalDestination(level: number, srcX: number, srcZ: number): RouteCoordinates { - const direction: number[] = this.cardinals[Math.floor(Math.random() * this.cardinals.length)]; - return new RouteCoordinates(srcX + direction[0], srcZ + direction[1], level); + @inline + private cardinalDestination(level: i32, srcX: i32, srcZ: i32): StaticArray { + const direction: i32[] = NaivePathFinder.DIRECTIONS[Math.floor(Math.random() * NaivePathFinder.DIRECTIONS.length)]; + return StaticArray.fromArray([((srcZ + direction[1]) & 0x3fff) | (((srcX + direction[0]) & 0x3fff) << 14) | ((level & 0x3) << 28)]); } /** @@ -120,68 +138,70 @@ export default class NaivePathFinder { * This method is equivalent to returning the last coordinate in a sequence of steps towards south-west when moving * ordinal then cardinally until entity side comes into contact with another. */ - naiveDestination(level: number, srcX: number, srcZ: number, srcWidth: number, srcHeight: number, destX: number, destZ: number, destWidth: number, destHeight: number): RouteCoordinates { - const diagonal: number = srcX - destX + (srcZ - destZ); - const anti: number = srcX - destX - (srcZ - destZ); - const southWestClockwise: boolean = anti < 0; - const northWestClockwise: boolean = diagonal >= destHeight - 1 - (srcWidth - 1); - const northEastClockwise: boolean = anti > srcWidth - srcHeight; - const southEastClockwise: boolean = diagonal <= destWidth - 1 - (srcHeight - 1); + @inline + private naiveDestination(level: i32, srcX: i32, srcZ: i32, srcWidth: i32, srcHeight: i32, destX: i32, destZ: i32, destWidth: i32, destHeight: i32): StaticArray { + const diagonal: i32 = srcX - destX + (srcZ - destZ); + const anti: i32 = srcX - destX - (srcZ - destZ); + const southWestClockwise: bool = anti < 0; + const northWestClockwise: bool = diagonal >= destHeight - 1 - (srcWidth - 1); + const northEastClockwise: bool = anti > srcWidth - srcHeight; + const southEastClockwise: bool = diagonal <= destWidth - 1 - (srcHeight - 1); - const target: RouteCoordinates = new RouteCoordinates(destX, destZ, level); if (southWestClockwise && !northWestClockwise) { // West - let offZ: number = 0; + let offZ: i32 = 0; if (diagonal >= -srcWidth) { offZ = this.coerceAtMost(diagonal + srcWidth, destHeight - 1); } else if (anti > -srcWidth) { offZ = -(srcWidth + anti); } - return target.translate(-srcWidth, offZ, 0); + return StaticArray.fromArray([((offZ + destZ) & 0x3fff) | (((-srcWidth + destX) & 0x3fff) << 14) | ((level & 0x3) << 28)]); } else if (northWestClockwise && !northEastClockwise) { // North - let offX: number = 0; + let offX: i32 = 0; if (anti >= -destHeight) { offX = this.coerceAtMost(anti + destHeight, destWidth - 1); } else if (diagonal < destHeight) { offX = this.coerceAtLeast(diagonal - destHeight, -(srcWidth - 1)); } - return target.translate(offX, destHeight, 0); + return StaticArray.fromArray([((destHeight + destZ) & 0x3fff) | (((offX + destX) & 0x3fff) << 14) | ((level & 0x3) << 28)]); } else if (northEastClockwise && !southEastClockwise) { // East - let offZ: number = 0; + let offZ: i32 = 0; if (anti <= destWidth) { offZ = destHeight - anti; } else if (diagonal < destWidth) { offZ = this.coerceAtLeast(diagonal - destWidth, -(srcHeight - 1)); } - return target.translate(destWidth, offZ, 0); + return StaticArray.fromArray([((offZ + destZ) & 0x3fff) | (((destWidth + destX) & 0x3fff) << 14) | ((level & 0x3) << 28)]); } else { if (!(southEastClockwise && !southWestClockwise)) { // South throw new Error(`Failed requirement. southEastClockwise was: ${southEastClockwise}, southWestClockwise was: ${southWestClockwise}.`); } - let offX: number = 0; + let offX: i32 = 0; if (diagonal > -srcHeight) { offX = this.coerceAtMost(diagonal + srcHeight, destWidth - 1); } else if (anti < srcHeight) { offX = this.coerceAtLeast(anti - srcHeight, -(srcHeight - 1)); } - return target.translate(offX, -srcHeight, 0); + return StaticArray.fromArray([((-srcHeight + destZ) & 0x3fff) | (((offX + destX) & 0x3fff) << 14) | ((level & 0x3) << 28)]); } } /** * Ensures that this value is not greater than the specified maximumValue. */ - private coerceAtMost(value: number, maximumValue: number): number { + @inline + private coerceAtMost(value: i32, maximumValue: i32): i32 { return value > maximumValue ? maximumValue : value; } /** * Ensures that this value is not less than the specified minimumValue. */ - private coerceAtLeast(value: number, minimumValue: number): number { + @inline + private coerceAtLeast(value: i32, minimumValue: i32): i32 { return value < minimumValue ? minimumValue : value; } } diff --git a/src/rsmod/PathFinder.ts b/src/rsmod/PathFinder.ts index bc9288c..f04af98 100644 --- a/src/rsmod/PathFinder.ts +++ b/src/rsmod/PathFinder.ts @@ -1,171 +1,174 @@ -// noinspection DuplicatedCode - import CollisionFlagMap from './collision/CollisionFlagMap'; -import CollisionStrategy from './collision/CollisionStrategy'; -import CollisionStrategies from './collision/CollisionStrategies'; -import Route from './Route'; +import {CollisionStrategy} from './collision/CollisionStrategy'; import DirectionFlag from './flag/DirectionFlag'; -import RouteCoordinates from './RouteCoordinates'; -import CollisionFlag from './flag/CollisionFlag'; import ReachStrategy from './reach/ReachStrategy'; +import {CollisionFlag} from './flag/CollisionFlag'; import RotationUtils from './utils/RotationUtils'; +@final export default class PathFinder { - private static readonly DEFAULT_SEARCH_MAP_SIZE: number = 128; - private static readonly DEFAULT_RING_BUFFER_SIZE: number = 4096; - private static readonly DEFAULT_DISTANCE_VALUE: number = 99_999_999; - private static readonly DEFAULT_SRC_DIRECTION_VALUE: number = 99; - private static readonly MAX_ALTERNATIVE_ROUTE_LOWEST_COST: number = 1000; - private static readonly MAX_ALTERNATIVE_ROUTE_SEEK_RANGE: number = 100; - private static readonly MAX_ALTERNATIVE_ROUTE_DISTANCE_FROM_DESTINATION: number = 10; + @inline private static readonly DEFAULT_SEARCH_MAP_SIZE: i32 = 128; + @inline private static readonly DEFAULT_RING_BUFFER_SIZE: i32 = 4096; + @inline private static readonly DEFAULT_DISTANCE_VALUE: i32 = 99_999_999; + @inline private static readonly DEFAULT_SRC_DIRECTION_VALUE: i32 = 99; + @inline private static readonly MAX_ALTERNATIVE_ROUTE_LOWEST_COST: i32 = 1000; + @inline private static readonly MAX_ALTERNATIVE_ROUTE_SEEK_RANGE: i32 = 100; + @inline private static readonly MAX_ALTERNATIVE_ROUTE_DISTANCE_FROM_DESTINATION: i32 = 10; + + private static readonly EMPTY: StaticArray = new StaticArray(0); private readonly flags: CollisionFlagMap; - private readonly searchMapSize: number; - private readonly ringBufferSize: number; - private readonly directions: Int32Array; - private readonly distances: Int32Array; - private readonly validLocalX: Int32Array; - private readonly validLocalZ: Int32Array; - - private currLocalX: number = 0; - private currLocalZ: number = 0; - private bufReaderIndex: number = 0; - private bufWriterIndex: number = 0; - - constructor(flags: CollisionFlagMap, searchMapSize: number = PathFinder.DEFAULT_SEARCH_MAP_SIZE, ringBufferSize: number = PathFinder.DEFAULT_RING_BUFFER_SIZE) { + private readonly searchMapSize: i32; + private readonly ringBufferSize: i32; + private readonly searchHalfMapSize: i32; + private readonly directions: StaticArray; + private readonly distances: StaticArray; + private readonly validLocalX: StaticArray; + private readonly validLocalZ: StaticArray; + + private currLocalX: i32 = 0; + private currLocalZ: i32 = 0; + private bufReaderIndex: i32 = 0; + private bufWriterIndex: i32 = 0; + + constructor(flags: CollisionFlagMap, searchMapSize: i32 = PathFinder.DEFAULT_SEARCH_MAP_SIZE, ringBufferSize: i32 = PathFinder.DEFAULT_RING_BUFFER_SIZE) { this.flags = flags; this.searchMapSize = searchMapSize; + this.searchHalfMapSize = searchMapSize / 2; this.ringBufferSize = ringBufferSize; - this.directions = new Int32Array(searchMapSize * searchMapSize); - this.distances = new Int32Array(searchMapSize * searchMapSize).fill(PathFinder.DEFAULT_DISTANCE_VALUE); - this.validLocalX = new Int32Array(ringBufferSize); - this.validLocalZ = new Int32Array(ringBufferSize); + this.directions = new StaticArray(searchMapSize * searchMapSize); + this.distances = new StaticArray(searchMapSize * searchMapSize).fill(PathFinder.DEFAULT_DISTANCE_VALUE); + this.validLocalX = new StaticArray(ringBufferSize); + this.validLocalZ = new StaticArray(ringBufferSize); } + // prettier-ignore + @inline findPath( - level: number, - srcX: number, - srcZ: number, - destX: number, - destZ: number, - srcSize: number = 1, - destWidth: number = 1, - destHeight: number = 1, - angle: number = 0, - shape: number = -1, - moveNear: boolean = true, - blockAccessFlags: number = 0, - maxWaypoints: number = 25, - collision: CollisionStrategy = CollisionStrategies.NORMAL - ): Route { + level: i8, + srcX: i32, + srcZ: i32, + destX: i32, + destZ: i32, + srcSize: i8, + destWidth: i8, + destHeight: i8, + angle: i8, + shape: i8, + moveNear: bool, + blockAccessFlags: i8, + maxWaypoints: i32, + collision: CollisionStrategy + ): StaticArray { if (!(srcX >= 0 && srcX <= 0x7fff && srcZ >= 0 && srcZ <= 0x7fff)) { - throw new Error(`Failed requirement. srcX was: ${srcX}, srcZ was: ${srcZ}.`); + throw new Error(`[findPath] Failed requirement. srcX was: ${srcX}, srcZ was: ${srcZ}.`); } if (!(destX >= 0 && destX <= 0x7fff && destZ >= 0 && destZ <= 0x7fff)) { - throw new Error(`Failed requirement. destX was: ${destX}, destZ was: ${destZ}.`); + throw new Error(`[findPath] Failed requirement. destX was: ${destX}, destZ was: ${destZ}.`); } if (!(level >= 0 && level <= 0x3)) { - throw new Error(`Failed requirement. level was: ${level}.`); + throw new Error(`[findPath] Failed requirement. level was: ${level}. must be 0-3.`); } this.reset(); - const baseX: number = srcX - this.searchMapSize / 2; - const baseZ: number = srcZ - this.searchMapSize / 2; - const localSrcX: number = srcX - baseX; - const localSrcZ: number = srcZ - baseZ; - const localDestX: number = destX - baseX; - const localDestZ: number = destZ - baseZ; + const baseX: i32 = srcX - this.searchHalfMapSize; + const baseZ: i32 = srcZ - this.searchHalfMapSize; + const localSrcX: i32 = srcX - baseX; + const localSrcZ: i32 = srcZ - baseZ; + const localDestX: i32 = destX - baseX; + const localDestZ: i32 = destZ - baseZ; this.appendDirection(localSrcX, localSrcZ, PathFinder.DEFAULT_SRC_DIRECTION_VALUE, 0); - let pathFound: boolean; - switch (srcSize) { - case 1: - pathFound = this.findPath1(baseX, baseZ, level, localDestX, localDestZ, destWidth, destHeight, srcSize, angle, shape, blockAccessFlags, collision); - break; - case 2: - pathFound = this.findPath2(baseX, baseZ, level, localDestX, localDestZ, destWidth, destHeight, srcSize, angle, shape, blockAccessFlags, collision); - break; - default: - pathFound = this.findPathN(baseX, baseZ, level, localDestX, localDestZ, destWidth, destHeight, srcSize, angle, shape, blockAccessFlags, collision); - break; + let pathFound: bool; + if (srcSize == 1) { + pathFound = this.findPath1(baseX, baseZ, level, localDestX, localDestZ, destWidth, destHeight, srcSize, angle, shape, blockAccessFlags, collision); + } else if (srcSize == 2) { + pathFound = this.findPath2(baseX, baseZ, level, localDestX, localDestZ, destWidth, destHeight, srcSize, angle, shape, blockAccessFlags, collision); + } else { + pathFound = this.findPathN(baseX, baseZ, level, localDestX, localDestZ, destWidth, destHeight, srcSize, angle, shape, blockAccessFlags, collision); } if (!pathFound) { if (!moveNear) { - return Route.FAILED; + return PathFinder.EMPTY; } - const foundApproachPoint: boolean = this.findClosestApproachPoint(localDestX, localDestZ, RotationUtils.rotate(angle, destWidth, destHeight), RotationUtils.rotate(angle, destHeight, destWidth)); + const foundApproachPoint: bool = this.findClosestApproachPoint(localDestX, localDestZ, RotationUtils.rotate(angle, destWidth, destHeight), RotationUtils.rotate(angle, destHeight, destWidth)); if (!foundApproachPoint) { - return Route.FAILED; + return PathFinder.EMPTY; } } - const waypoints: RouteCoordinates[] = []; - let nextDir: number = this.directions[this.localIndex(this.currLocalX, this.currLocalZ)]; - let currDir: number = -1; + const waypoints: i32[] = []; + let nextDir: i32 = unchecked(this.directions[this.localIndex(this.currLocalX, this.currLocalZ)]); + let currDir: i32 = -1; - for (let index: number = 0; index < this.directions.length; index++) { - if (this.currLocalX === localSrcX && this.currLocalZ === localSrcZ) { + for (let index: i32 = 0; index < this.directions.length; index++) { + if (this.currLocalX == localSrcX && this.currLocalZ == localSrcZ) { break; } - if (currDir !== nextDir) { + if (currDir != nextDir) { currDir = nextDir; if (waypoints.length >= maxWaypoints) { waypoints.pop(); } - const coords: RouteCoordinates = new RouteCoordinates(baseX + this.currLocalX, baseZ + this.currLocalZ, level); - waypoints.unshift(coords); + waypoints.unshift(((baseZ + this.currLocalZ) & 0x3fff) | (((baseX + this.currLocalX) & 0x3fff) << 14) | ((level & 0x3) << 28)); } - if ((currDir & DirectionFlag.EAST) !== 0) { + if ((currDir & DirectionFlag.EAST) != 0) { this.currLocalX++; - } else if ((currDir & DirectionFlag.WEST) !== 0) { + } else if ((currDir & DirectionFlag.WEST) != 0) { this.currLocalX--; } - if ((currDir & DirectionFlag.NORTH) !== 0) { + if ((currDir & DirectionFlag.NORTH) != 0) { this.currLocalZ++; - } else if ((currDir & DirectionFlag.SOUTH) !== 0) { + } else if ((currDir & DirectionFlag.SOUTH) != 0) { this.currLocalZ--; } - nextDir = this.directions[this.localIndex(this.currLocalX, this.currLocalZ)]; + nextDir = unchecked(this.directions[this.localIndex(this.currLocalX, this.currLocalZ)]); + } + const route: StaticArray = new StaticArray(waypoints.length); + for (let i: i32 = 0; i < waypoints.length; i++) { + unchecked(route[i] = waypoints[i]); } - return new Route(waypoints, !pathFound, true); + return route; } + // prettier-ignore + @inline private findPath1( - baseX: number, - baseZ: number, - level: number, - localDestX: number, - localDestZ: number, - destWidth: number, - destHeight: number, - srcSize: number, - angle: number, - shape: number, - blockAccessFlags: number, + baseX: i32, + baseZ: i32, + level: i8, + localDestX: i32, + localDestZ: i32, + destWidth: i8, + destHeight: i8, + srcSize: i8, + angle: i8, + shape: i8, + blockAccessFlags: i8, collision: CollisionStrategy - ): boolean { - let x: number; - let z: number; - let clipFlag: number; - let dirFlag: number; - const relativeSearchSize: number = this.searchMapSize - 1; - - while (this.bufWriterIndex !== this.bufReaderIndex) { - this.currLocalX = this.validLocalX[this.bufReaderIndex]; - this.currLocalZ = this.validLocalZ[this.bufReaderIndex]; + ): bool { + let x: i32; + let z: i32; + let clipFlag: i32; + let dirFlag: i32; + const relativeSearchSize: i32 = this.searchMapSize - 1; + + while (this.bufWriterIndex != this.bufReaderIndex) { + this.currLocalX = unchecked(this.validLocalX[this.bufReaderIndex]); + this.currLocalZ = unchecked(this.validLocalZ[this.bufReaderIndex]); this.bufReaderIndex = (this.bufReaderIndex + 1) & (this.ringBufferSize - 1); - const reached: boolean = ReachStrategy.reached(this.flags, level, this.currLocalX + baseX, this.currLocalZ + baseZ, localDestX + baseX, localDestZ + baseZ, destWidth, destHeight, srcSize, angle, shape, blockAccessFlags); + const reached: bool = ReachStrategy.reached(this.flags, level, this.currLocalX + baseX, this.currLocalZ + baseZ, localDestX + baseX, localDestZ + baseZ, destWidth, destHeight, srcSize, angle, shape, blockAccessFlags); if (reached) { return true; } - const nextDistance: number = this.distances[this.localIndex(this.currLocalX, this.currLocalZ)] + 1; + const nextDistance: i32 = unchecked(this.distances[this.localIndex(this.currLocalX, this.currLocalZ)]) + 1; /* east to west */ x = this.currLocalX - 1; z = this.currLocalZ; clipFlag = CollisionFlag.BLOCK_WEST; dirFlag = DirectionFlag.EAST; - if (this.currLocalX > 0 && this.directions[this.localIndex(x, z)] === 0 && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), clipFlag)) { + if (this.currLocalX > 0 && unchecked(this.directions[this.localIndex(x, z)]) == 0 && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), clipFlag)) { this.appendDirection(x, z, dirFlag, nextDistance); } @@ -174,7 +177,7 @@ export default class PathFinder { z = this.currLocalZ; clipFlag = CollisionFlag.BLOCK_EAST; dirFlag = DirectionFlag.WEST; - if (this.currLocalX < relativeSearchSize && this.directions[this.localIndex(x, z)] === 0 && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), clipFlag)) { + if (this.currLocalX < relativeSearchSize && unchecked(this.directions[this.localIndex(x, z)]) == 0 && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), clipFlag)) { this.appendDirection(x, z, dirFlag, nextDistance); } @@ -183,7 +186,7 @@ export default class PathFinder { z = this.currLocalZ - 1; clipFlag = CollisionFlag.BLOCK_SOUTH; dirFlag = DirectionFlag.NORTH; - if (this.currLocalZ > 0 && this.directions[this.localIndex(x, z)] === 0 && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), clipFlag)) { + if (this.currLocalZ > 0 && unchecked(this.directions[this.localIndex(x, z)]) == 0 && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), clipFlag)) { this.appendDirection(x, z, dirFlag, nextDistance); } @@ -192,7 +195,7 @@ export default class PathFinder { z = this.currLocalZ + 1; clipFlag = CollisionFlag.BLOCK_NORTH; dirFlag = DirectionFlag.SOUTH; - if (this.currLocalZ < relativeSearchSize && this.directions[this.localIndex(x, z)] === 0 && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), clipFlag)) { + if (this.currLocalZ < relativeSearchSize && unchecked(this.directions[this.localIndex(x, z)]) == 0 && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), clipFlag)) { this.appendDirection(x, z, dirFlag, nextDistance); } @@ -203,7 +206,7 @@ export default class PathFinder { if ( this.currLocalX > 0 && this.currLocalZ > 0 && - this.directions[this.localIndex(x, z)] === 0 && + unchecked(this.directions[this.localIndex(x, z)] == 0) && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), CollisionFlag.BLOCK_SOUTH_WEST) && collision.canMove(this.collisionFlag(baseX, baseZ, x, this.currLocalZ, level), CollisionFlag.BLOCK_WEST) && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX, z, level), CollisionFlag.BLOCK_SOUTH) @@ -218,7 +221,7 @@ export default class PathFinder { if ( this.currLocalX < relativeSearchSize && this.currLocalZ > 0 && - this.directions[this.localIndex(x, z)] === 0 && + unchecked(this.directions[this.localIndex(x, z)] == 0) && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), CollisionFlag.BLOCK_SOUTH_EAST) && collision.canMove(this.collisionFlag(baseX, baseZ, x, this.currLocalZ, level), CollisionFlag.BLOCK_EAST) && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX, z, level), CollisionFlag.BLOCK_SOUTH) @@ -233,7 +236,7 @@ export default class PathFinder { if ( this.currLocalX > 0 && this.currLocalZ < relativeSearchSize && - this.directions[this.localIndex(x, z)] === 0 && + unchecked(this.directions[this.localIndex(x, z)] == 0) && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), CollisionFlag.BLOCK_NORTH_WEST) && collision.canMove(this.collisionFlag(baseX, baseZ, x, this.currLocalZ, level), CollisionFlag.BLOCK_WEST) && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX, z, level), CollisionFlag.BLOCK_NORTH) @@ -248,7 +251,7 @@ export default class PathFinder { if ( this.currLocalX < relativeSearchSize && this.currLocalZ < relativeSearchSize && - this.directions[this.localIndex(x, z)] === 0 && + unchecked(this.directions[this.localIndex(x, z)] == 0) && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), CollisionFlag.BLOCK_NORTH_EAST) && collision.canMove(this.collisionFlag(baseX, baseZ, x, this.currLocalZ, level), CollisionFlag.BLOCK_EAST) && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX, z, level), CollisionFlag.BLOCK_NORTH) @@ -259,36 +262,38 @@ export default class PathFinder { return false; } + // prettier-ignore + @inline private findPath2( - baseX: number, - baseZ: number, - level: number, - localDestX: number, - localDestZ: number, - destWidth: number, - destHeight: number, - srcSize: number, - angle: number, - shape: number, - blockAccessFlags: number, + baseX: i32, + baseZ: i32, + level: i8, + localDestX: i32, + localDestZ: i32, + destWidth: i8, + destHeight: i8, + srcSize: i8, + angle: i8, + shape: i8, + blockAccessFlags: i8, collision: CollisionStrategy - ): boolean { - let x: number; - let z: number; - let dirFlag: number; - const relativeSearchSize: number = this.searchMapSize - 2; - - while (this.bufWriterIndex !== this.bufReaderIndex) { - this.currLocalX = this.validLocalX[this.bufReaderIndex]; - this.currLocalZ = this.validLocalZ[this.bufReaderIndex]; + ): bool { + let x: i32; + let z: i32; + let dirFlag: i32; + const relativeSearchSize: i32 = this.searchMapSize - 2; + + while (this.bufWriterIndex != this.bufReaderIndex) { + unchecked(this.currLocalX = this.validLocalX[this.bufReaderIndex]); + unchecked(this.currLocalZ = this.validLocalZ[this.bufReaderIndex]); this.bufReaderIndex = (this.bufReaderIndex + 1) & (this.ringBufferSize - 1); - const reached: boolean = ReachStrategy.reached(this.flags, level, this.currLocalX + baseX, this.currLocalZ + baseZ, localDestX + baseX, localDestZ + baseZ, destWidth, destHeight, srcSize, angle, shape, blockAccessFlags); + const reached: bool = ReachStrategy.reached(this.flags, level, this.currLocalX + baseX, this.currLocalZ + baseZ, localDestX + baseX, localDestZ + baseZ, destWidth, destHeight, srcSize, angle, shape, blockAccessFlags); if (reached) { return true; } - const nextDistance: number = this.distances[this.localIndex(this.currLocalX, this.currLocalZ)] + 1; + const nextDistance: i32 = unchecked(this.distances[this.localIndex(this.currLocalX, this.currLocalZ)]) + 1; /* east to west */ x = this.currLocalX - 1; @@ -296,7 +301,7 @@ export default class PathFinder { dirFlag = DirectionFlag.EAST; if ( this.currLocalX > 0 && - this.directions[this.localIndex(x, z)] === 0 && + unchecked(this.directions[this.localIndex(x, z)] == 0) && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), CollisionFlag.BLOCK_SOUTH_WEST) && collision.canMove(this.collisionFlag(baseX, baseZ, x, this.currLocalZ + 1, level), CollisionFlag.BLOCK_NORTH_WEST) ) { @@ -309,7 +314,7 @@ export default class PathFinder { dirFlag = DirectionFlag.WEST; if ( this.currLocalX < relativeSearchSize && - this.directions[this.localIndex(x, z)] === 0 && + unchecked(this.directions[this.localIndex(x, z)] == 0) && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + 2, z, level), CollisionFlag.BLOCK_SOUTH_EAST) && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + 2, this.currLocalZ + 1, level), CollisionFlag.BLOCK_NORTH_EAST) ) { @@ -322,7 +327,7 @@ export default class PathFinder { dirFlag = DirectionFlag.NORTH; if ( this.currLocalZ > 0 && - this.directions[this.localIndex(x, z)] === 0 && + unchecked(this.directions[this.localIndex(x, z)] == 0) && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), CollisionFlag.BLOCK_SOUTH_WEST) && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + 1, z, level), CollisionFlag.BLOCK_SOUTH_EAST) ) { @@ -335,7 +340,7 @@ export default class PathFinder { dirFlag = DirectionFlag.SOUTH; if ( this.currLocalZ < relativeSearchSize && - this.directions[this.localIndex(x, z)] === 0 && + unchecked(this.directions[this.localIndex(x, z)] == 0) && collision.canMove(this.collisionFlag(baseX, baseZ, x, this.currLocalZ + 2, level), CollisionFlag.BLOCK_NORTH_WEST) && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + 1, this.currLocalZ + 2, level), CollisionFlag.BLOCK_NORTH_EAST) ) { @@ -349,7 +354,7 @@ export default class PathFinder { if ( this.currLocalX > 0 && this.currLocalZ > 0 && - this.directions[this.localIndex(x, z)] === 0 && + unchecked(this.directions[this.localIndex(x, z)] == 0) && collision.canMove(this.collisionFlag(baseX, baseZ, x, this.currLocalZ, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST) && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), CollisionFlag.BLOCK_SOUTH_WEST) && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX, z, level), CollisionFlag.BLOCK_NORTH_EAST_AND_WEST) @@ -364,7 +369,7 @@ export default class PathFinder { if ( this.currLocalX < relativeSearchSize && this.currLocalZ > 0 && - this.directions[this.localIndex(x, z)] === 0 && + unchecked(this.directions[this.localIndex(x, z)] == 0) && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), CollisionFlag.BLOCK_NORTH_EAST_AND_WEST) && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + 2, z, level), CollisionFlag.BLOCK_SOUTH_EAST) && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + 2, this.currLocalZ, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST) @@ -379,7 +384,7 @@ export default class PathFinder { if ( this.currLocalX > 0 && this.currLocalZ < relativeSearchSize && - this.directions[this.localIndex(x, z)] === 0 && + unchecked(this.directions[this.localIndex(x, z)] == 0) && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST) && collision.canMove(this.collisionFlag(baseX, baseZ, x, this.currLocalZ + 2, level), CollisionFlag.BLOCK_NORTH_WEST) && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX, this.currLocalZ + 2, level), CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST) @@ -394,7 +399,7 @@ export default class PathFinder { if ( this.currLocalX < relativeSearchSize && this.currLocalZ < relativeSearchSize && - this.directions[this.localIndex(x, z)] === 0 && + unchecked(this.directions[this.localIndex(x, z)] == 0) && collision.canMove(this.collisionFlag(baseX, baseZ, x, this.currLocalZ + 2, level), CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST) && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + 2, this.currLocalZ + 2, level), CollisionFlag.BLOCK_NORTH_EAST) && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + 2, z, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST) @@ -405,36 +410,38 @@ export default class PathFinder { return false; } + // prettier-ignore + @inline private findPathN( - baseX: number, - baseZ: number, - level: number, - localDestX: number, - localDestZ: number, - destWidth: number, - destHeight: number, - srcSize: number, - angle: number, - shape: number, - blockAccessFlags: number, + baseX: i32, + baseZ: i32, + level: i8, + localDestX: i32, + localDestZ: i32, + destWidth: i8, + destHeight: i8, + srcSize: i8, + angle: i8, + shape: i8, + blockAccessFlags: i8, collision: CollisionStrategy - ): boolean { - let x: number; - let z: number; - let dirFlag: number; - const relativeSearchSize: number = this.searchMapSize - srcSize; - - while (this.bufWriterIndex !== this.bufReaderIndex) { - this.currLocalX = this.validLocalX[this.bufReaderIndex]; - this.currLocalZ = this.validLocalZ[this.bufReaderIndex]; + ): bool { + let x: i32; + let z: i32; + let dirFlag: i32; + const relativeSearchSize: i32 = this.searchMapSize - srcSize; + + while (this.bufWriterIndex != this.bufReaderIndex) { + unchecked(this.currLocalX = this.validLocalX[this.bufReaderIndex]); + unchecked(this.currLocalZ = this.validLocalZ[this.bufReaderIndex]); this.bufReaderIndex = (this.bufReaderIndex + 1) & (this.ringBufferSize - 1); - const reached: boolean = ReachStrategy.reached(this.flags, level, this.currLocalX + baseX, this.currLocalZ + baseZ, localDestX + baseX, localDestZ + baseZ, destWidth, destHeight, srcSize, angle, shape, blockAccessFlags); + const reached: bool = ReachStrategy.reached(this.flags, level, this.currLocalX + baseX, this.currLocalZ + baseZ, localDestX + baseX, localDestZ + baseZ, destWidth, destHeight, srcSize, angle, shape, blockAccessFlags); if (reached) { return true; } - const nextDistance: number = this.distances[this.localIndex(this.currLocalX, this.currLocalZ)] + 1; + const nextDistance: i32 = unchecked(this.distances[this.localIndex(this.currLocalX, this.currLocalZ)]) + 1; /* east to west */ x = this.currLocalX - 1; @@ -442,13 +449,13 @@ export default class PathFinder { dirFlag = DirectionFlag.EAST; if ( this.currLocalX > 0 && - this.directions[this.localIndex(x, z)] === 0 && + unchecked(this.directions[this.localIndex(x, z)]) == 0 && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), CollisionFlag.BLOCK_SOUTH_WEST) && collision.canMove(this.collisionFlag(baseX, baseZ, x, this.currLocalZ + srcSize - 1, level), CollisionFlag.BLOCK_NORTH_WEST) ) { - const clipFlag: number = CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST; - let blocked: boolean = false; - for (let index: number = 1; index < srcSize - 1; index++) { + const clipFlag: i32 = CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST; + let blocked: bool = false; + for (let index: i32 = 1; index < srcSize - 1; index++) { if (!collision.canMove(this.collisionFlag(baseX, baseZ, x, this.currLocalZ + index, level), clipFlag)) { blocked = true; break; @@ -465,13 +472,13 @@ export default class PathFinder { dirFlag = DirectionFlag.WEST; if ( this.currLocalX < relativeSearchSize && - this.directions[this.localIndex(x, z)] === 0 && + unchecked(this.directions[this.localIndex(x, z)]) == 0 && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + srcSize, z, level), CollisionFlag.BLOCK_SOUTH_EAST) && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + srcSize, this.currLocalZ + srcSize - 1, level), CollisionFlag.BLOCK_NORTH_EAST) ) { - const clipFlag: number = CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST; - let blocked: boolean = false; - for (let index: number = 1; index < srcSize - 1; index++) { + const clipFlag: i32 = CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST; + let blocked: bool = false; + for (let index: i32 = 1; index < srcSize - 1; index++) { if (!collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + srcSize, this.currLocalZ + index, level), clipFlag)) { blocked = true; break; @@ -488,13 +495,13 @@ export default class PathFinder { dirFlag = DirectionFlag.NORTH; if ( this.currLocalZ > 0 && - this.directions[this.localIndex(x, z)] === 0 && + unchecked(this.directions[this.localIndex(x, z)]) == 0 && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), CollisionFlag.BLOCK_SOUTH_WEST) && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + srcSize - 1, z, level), CollisionFlag.BLOCK_SOUTH_EAST) ) { - const clipFlag: number = CollisionFlag.BLOCK_NORTH_EAST_AND_WEST; - let blocked: boolean = false; - for (let index: number = 1; index < srcSize - 1; index++) { + const clipFlag: i32 = CollisionFlag.BLOCK_NORTH_EAST_AND_WEST; + let blocked: bool = false; + for (let index: i32 = 1; index < srcSize - 1; index++) { if (!collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + index, z, level), clipFlag)) { blocked = true; break; @@ -511,13 +518,13 @@ export default class PathFinder { dirFlag = DirectionFlag.SOUTH; if ( this.currLocalZ < relativeSearchSize && - this.directions[this.localIndex(x, z)] === 0 && + unchecked(this.directions[this.localIndex(x, z)]) == 0 && collision.canMove(this.collisionFlag(baseX, baseZ, x, this.currLocalZ + srcSize, level), CollisionFlag.BLOCK_NORTH_WEST) && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + srcSize - 1, this.currLocalZ + srcSize, level), CollisionFlag.BLOCK_NORTH_EAST) ) { - const clipFlag: number = CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST; - let blocked: boolean = false; - for (let index: number = 1; index < srcSize - 1; index++) { + const clipFlag: i32 = CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST; + let blocked: bool = false; + for (let index: i32 = 1; index < srcSize - 1; index++) { if (!collision.canMove(this.collisionFlag(baseX, baseZ, x + index, this.currLocalZ + srcSize, level), clipFlag)) { blocked = true; break; @@ -532,11 +539,11 @@ export default class PathFinder { x = this.currLocalX - 1; z = this.currLocalZ - 1; dirFlag = DirectionFlag.NORTH_EAST; - if (this.currLocalX > 0 && this.currLocalZ > 0 && this.directions[this.localIndex(x, z)] === 0 && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), CollisionFlag.BLOCK_SOUTH_WEST)) { - const clipFlag1: number = CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST; - const clipFlag2: number = CollisionFlag.BLOCK_NORTH_EAST_AND_WEST; - let blocked: boolean = false; - for (let index: number = 1; index < srcSize; index++) { + if (this.currLocalX > 0 && this.currLocalZ > 0 && unchecked(this.directions[this.localIndex(x, z)]) == 0 && collision.canMove(this.collisionFlag(baseX, baseZ, x, z, level), CollisionFlag.BLOCK_SOUTH_WEST)) { + const clipFlag1: i32 = CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST; + const clipFlag2: i32 = CollisionFlag.BLOCK_NORTH_EAST_AND_WEST; + let blocked: bool = false; + for (let index: i32 = 1; index < srcSize; index++) { if (!collision.canMove(this.collisionFlag(baseX, baseZ, x, this.currLocalZ + index - 1, level), clipFlag1) || !collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + index - 1, z, level), clipFlag2)) { blocked = true; break; @@ -551,11 +558,11 @@ export default class PathFinder { x = this.currLocalX + 1; z = this.currLocalZ - 1; dirFlag = DirectionFlag.NORTH_WEST; - if (this.currLocalX < relativeSearchSize && this.currLocalZ > 0 && this.directions[this.localIndex(x, z)] === 0 && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + srcSize, z, level), CollisionFlag.BLOCK_SOUTH_EAST)) { - const clipFlag1: number = CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST; - const clipFlag2: number = CollisionFlag.BLOCK_NORTH_EAST_AND_WEST; - let blocked: boolean = false; - for (let index: number = 1; index < srcSize; index++) { + if (this.currLocalX < relativeSearchSize && this.currLocalZ > 0 && unchecked(this.directions[this.localIndex(x, z)]) == 0 && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + srcSize, z, level), CollisionFlag.BLOCK_SOUTH_EAST)) { + const clipFlag1: i32 = CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST; + const clipFlag2: i32 = CollisionFlag.BLOCK_NORTH_EAST_AND_WEST; + let blocked: bool = false; + for (let index: i32 = 1; index < srcSize; index++) { if ( !collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + srcSize, this.currLocalZ + index - 1, level), clipFlag1) || !collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + index, z, level), clipFlag2) @@ -573,11 +580,11 @@ export default class PathFinder { x = this.currLocalX - 1; z = this.currLocalZ + 1; dirFlag = DirectionFlag.SOUTH_EAST; - if (this.currLocalX > 0 && this.currLocalZ < relativeSearchSize && this.directions[this.localIndex(x, z)] === 0 && collision.canMove(this.collisionFlag(baseX, baseZ, x, this.currLocalZ + srcSize, level), CollisionFlag.BLOCK_NORTH_WEST)) { - const clipFlag1: number = CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST; - const clipFlag2: number = CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST; - let blocked: boolean = false; - for (let index: number = 1; index < srcSize; index++) { + if (this.currLocalX > 0 && this.currLocalZ < relativeSearchSize && unchecked(this.directions[this.localIndex(x, z)]) == 0 && collision.canMove(this.collisionFlag(baseX, baseZ, x, this.currLocalZ + srcSize, level), CollisionFlag.BLOCK_NORTH_WEST)) { + const clipFlag1: i32 = CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST; + const clipFlag2: i32 = CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST; + let blocked: bool = false; + for (let index: i32 = 1; index < srcSize; index++) { if ( !collision.canMove(this.collisionFlag(baseX, baseZ, x, this.currLocalZ + index, level), clipFlag1) || !collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + index - 1, this.currLocalZ + srcSize, level), clipFlag2) @@ -598,13 +605,13 @@ export default class PathFinder { if ( this.currLocalX < relativeSearchSize && this.currLocalZ < relativeSearchSize && - this.directions[this.localIndex(x, z)] === 0 && + unchecked(this.directions[this.localIndex(x, z)]) == 0 && collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + srcSize, this.currLocalZ + srcSize, level), CollisionFlag.BLOCK_NORTH_EAST) ) { - const clipFlag1: number = CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST; - const clipFlag2: number = CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST; - let blocked: boolean = false; - for (let index: number = 1; index < srcSize; index++) { + const clipFlag1: i32 = CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST; + const clipFlag2: i32 = CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST; + let blocked: bool = false; + for (let index: i32 = 1; index < srcSize; index++) { if ( !collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + index, this.currLocalZ + srcSize, level), clipFlag1) || !collision.canMove(this.collisionFlag(baseX, baseZ, this.currLocalX + srcSize, this.currLocalZ + index, level), clipFlag2) @@ -621,58 +628,63 @@ export default class PathFinder { return false; } - private findClosestApproachPoint(localDestX: number, localDestZ: number, width: number, height: number): boolean { - let lowestCost: number = PathFinder.MAX_ALTERNATIVE_ROUTE_LOWEST_COST; - let maxAlternativePath: number = PathFinder.MAX_ALTERNATIVE_ROUTE_SEEK_RANGE; - const alternativeRouteRange: number = PathFinder.MAX_ALTERNATIVE_ROUTE_DISTANCE_FROM_DESTINATION; - for (let x: number = localDestX - alternativeRouteRange; x <= localDestX + alternativeRouteRange; x++) { - for (let z: number = localDestZ - alternativeRouteRange; z <= localDestZ + alternativeRouteRange; z++) { - if (!(x >= 0 && x < this.searchMapSize) || !(z >= 0 && z < this.searchMapSize) || this.distances[this.localIndex(x, z)] >= PathFinder.MAX_ALTERNATIVE_ROUTE_SEEK_RANGE) { + @inline + private findClosestApproachPoint(localDestX: i32, localDestZ: i32, width: i32, height: i32): bool { + let lowestCost: i32 = PathFinder.MAX_ALTERNATIVE_ROUTE_LOWEST_COST; + let maxAlternativePath: i32 = PathFinder.MAX_ALTERNATIVE_ROUTE_SEEK_RANGE; + const alternativeRouteRange: i32 = PathFinder.MAX_ALTERNATIVE_ROUTE_DISTANCE_FROM_DESTINATION; + for (let x: i32 = localDestX - alternativeRouteRange; x <= localDestX + alternativeRouteRange; x++) { + for (let z: i32 = localDestZ - alternativeRouteRange; z <= localDestZ + alternativeRouteRange; z++) { + if (!(x >= 0 && x < this.searchMapSize) || !(z >= 0 && z < this.searchMapSize) || unchecked(this.distances[this.localIndex(x, z)]) >= PathFinder.MAX_ALTERNATIVE_ROUTE_SEEK_RANGE) { continue; } - let dx: number = 0; + let dx: i32 = 0; if (x < localDestX) { dx = localDestX - x; } else if (x > localDestX + width - 1) { dx = x - (width + localDestX - 1); } - let dz: number = 0; + let dz: i32 = 0; if (z < localDestZ) { dz = localDestZ - z; } else if (z > localDestZ + height - 1) { dz = z - (height + localDestZ - 1); } - const cost: number = dx * dx + dz * dz; - if (cost < lowestCost || (cost === lowestCost && maxAlternativePath > this.distances[this.localIndex(x, z)])) { + const cost: i32 = dx * dx + dz * dz; + if (cost < lowestCost || (cost == lowestCost && maxAlternativePath > unchecked(this.distances[this.localIndex(x, z)]))) { this.currLocalX = x; this.currLocalZ = z; lowestCost = cost; - maxAlternativePath = this.distances[this.localIndex(x, z)]; + maxAlternativePath = unchecked(this.distances[this.localIndex(x, z)]); } } } - return lowestCost !== PathFinder.MAX_ALTERNATIVE_ROUTE_LOWEST_COST; + return lowestCost != PathFinder.MAX_ALTERNATIVE_ROUTE_LOWEST_COST; } - private localIndex(x: number, z: number): number { + @inline + private localIndex(x: i32, z: i32): i32 { return x * this.searchMapSize + z; } - private collisionFlag(baseX: number, baseZ: number, localX: number, localZ: number, level: number): number { + @inline + private collisionFlag(baseX: i32, baseZ: i32, localX: i32, localZ: i32, level: i32): i32 { return this.flags.get(baseX + localX, baseZ + localZ, level); } - private appendDirection(x: number, z: number, direction: number, distance: number): void { - const index: number = this.localIndex(x, z); - this.directions[index] = direction; - this.distances[index] = distance; - this.validLocalX[this.bufWriterIndex] = x; - this.validLocalZ[this.bufWriterIndex] = z; + @inline + private appendDirection(x: i32, z: i32, direction: i32, distance: i32): void { + const index: i32 = this.localIndex(x, z); + unchecked((this.directions[index] = direction)); + unchecked((this.distances[index] = distance)); + unchecked((this.validLocalX[this.bufWriterIndex] = x)); + unchecked((this.validLocalZ[this.bufWriterIndex] = z)); this.bufWriterIndex = (this.bufWriterIndex + 1) & (this.ringBufferSize - 1); } + @inline private reset(): void { this.directions.fill(0); this.distances.fill(PathFinder.DEFAULT_DISTANCE_VALUE); diff --git a/src/rsmod/RayCast.ts b/src/rsmod/RayCast.ts deleted file mode 100644 index 235745c..0000000 --- a/src/rsmod/RayCast.ts +++ /dev/null @@ -1,16 +0,0 @@ -import RouteCoordinates from './RouteCoordinates'; - -export default class RayCast { - static readonly FAILED: RayCast = new RayCast([], false, false); - static readonly EMPTY_SUCCESS: RayCast = new RayCast([], false, true); - - readonly coordinates: RouteCoordinates[]; - readonly alternative: boolean; - readonly success: boolean; - - constructor(coordinates: RouteCoordinates[], alternative: boolean, success: boolean) { - this.coordinates = coordinates; - this.alternative = alternative; - this.success = success; - } -} diff --git a/src/rsmod/Route.ts b/src/rsmod/Route.ts deleted file mode 100644 index 46f51a5..0000000 --- a/src/rsmod/Route.ts +++ /dev/null @@ -1,19 +0,0 @@ -import RouteCoordinates from './RouteCoordinates'; - -export default class Route { - static readonly FAILED: Route = new Route([], false, false); - - readonly waypoints: RouteCoordinates[]; - readonly alternative: boolean; - readonly success: boolean; - - constructor(waypoints: RouteCoordinates[], alternative: boolean, success: boolean) { - this.waypoints = waypoints; - this.alternative = alternative; - this.success = success; - } - - get failed(): boolean { - return !this.success; - } -} diff --git a/src/rsmod/RouteCoordinates.ts b/src/rsmod/RouteCoordinates.ts deleted file mode 100644 index be4e7be..0000000 --- a/src/rsmod/RouteCoordinates.ts +++ /dev/null @@ -1,28 +0,0 @@ -export default class RouteCoordinates { - private static readonly COORD_MASK: number = 0x3fff; - private static readonly LEVEL_MASK: number = 0x3; - private static readonly X_BITS: number = 14; - private static readonly LEVEL_BITS: number = 28; - - private readonly packed: number; - - constructor(x: number, z: number, level: number) { - this.packed = (z & RouteCoordinates.COORD_MASK) | ((x & RouteCoordinates.COORD_MASK) << RouteCoordinates.X_BITS) | ((level & RouteCoordinates.LEVEL_MASK) << RouteCoordinates.LEVEL_BITS); - } - - get x(): number { - return (this.packed >> RouteCoordinates.X_BITS) & RouteCoordinates.COORD_MASK; - } - - get z(): number { - return this.packed & RouteCoordinates.COORD_MASK; - } - - get level(): number { - return (this.packed >> RouteCoordinates.LEVEL_BITS) & RouteCoordinates.LEVEL_MASK; - } - - translate(offsetX: number, offsetZ: number, offsetLevel: number): RouteCoordinates { - return new RouteCoordinates(this.x + offsetX, this.z + offsetZ, this.level + offsetLevel); - } -} diff --git a/src/rsmod/StepValidator.ts b/src/rsmod/StepValidator.ts index 5690721..9d45a70 100644 --- a/src/rsmod/StepValidator.ts +++ b/src/rsmod/StepValidator.ts @@ -1,7 +1,8 @@ import CollisionFlagMap from './collision/CollisionFlagMap'; -import CollisionStrategy from './collision/CollisionStrategy'; -import CollisionFlag from './flag/CollisionFlag'; +import {CollisionStrategy} from './collision/CollisionStrategy'; +import {CollisionFlag} from './flag/CollisionFlag'; +@final export default class StepValidator { private readonly flags: CollisionFlagMap; @@ -9,23 +10,34 @@ export default class StepValidator { this.flags = flags; } - canTravel(level: number, x: number, z: number, offsetX: number, offsetZ: number, size: number, extraFlag: number, collision: CollisionStrategy): boolean { - let blocked: boolean; - if (offsetX === 0 && offsetZ === -1) { + // prettier-ignore + @inline + canTravel( + level: i8, + x: i32, + z: i32, + offsetX: i8, + offsetZ: i8, + size: i8, + extraFlag: i32, + collision: CollisionStrategy + ): bool { + let blocked: bool; + if (offsetX == 0 && offsetZ == -1) { blocked = this.isBlockedSouth(level, x, z, size, extraFlag, collision); - } else if (offsetX === 0 && offsetZ === 1) { + } else if (offsetX == 0 && offsetZ == 1) { blocked = this.isBlockedNorth(level, x, z, size, extraFlag, collision); - } else if (offsetX === -1 && offsetZ === 0) { + } else if (offsetX == -1 && offsetZ == 0) { blocked = this.isBlockedWest(level, x, z, size, extraFlag, collision); - } else if (offsetX === 1 && offsetZ === 0) { + } else if (offsetX == 1 && offsetZ == 0) { blocked = this.isBlockedEast(level, x, z, size, extraFlag, collision); - } else if (offsetX === -1 && offsetZ === -1) { + } else if (offsetX == -1 && offsetZ == -1) { blocked = this.isBlockedSouthWest(level, x, z, size, extraFlag, collision); - } else if (offsetX === -1 && offsetZ === 1) { + } else if (offsetX == -1 && offsetZ == 1) { blocked = this.isBlockedNorthWest(level, x, z, size, extraFlag, collision); - } else if (offsetX === 1 && offsetZ === -1) { + } else if (offsetX == 1 && offsetZ == -1) { blocked = this.isBlockedSouthEast(level, x, z, size, extraFlag, collision); - } else if (offsetX === 1 && offsetZ === 1) { + } else if (offsetX == 1 && offsetZ == 1) { blocked = this.isBlockedNorthEast(level, x, z, size, extraFlag, collision); } else { throw new Error(`Invalid offsets: offsetX was: ${offsetX}, offsetZ was: ${offsetZ}`); @@ -33,200 +45,200 @@ export default class StepValidator { return !blocked; } - isBlockedSouth(level: number, x: number, z: number, size: number, extraFlag: number, collision: CollisionStrategy): boolean { - switch (size) { - case 1: - return !collision.canMove(this.flags.get(x, z - 1, level), CollisionFlag.BLOCK_SOUTH | extraFlag); - case 2: - return !collision.canMove(this.flags.get(x, z - 1, level), CollisionFlag.BLOCK_SOUTH_WEST | extraFlag) || !collision.canMove(this.flags.get(x + 1, z - 1, level), CollisionFlag.BLOCK_SOUTH_EAST | extraFlag); - default: - if (!collision.canMove(this.flags.get(x, z - 1, level), CollisionFlag.BLOCK_SOUTH_WEST | extraFlag)) { - return true; - } else if (!collision.canMove(this.flags.get(x + size - 1, z - 1, level), CollisionFlag.BLOCK_SOUTH_EAST | extraFlag)) { + @inline + private isBlockedSouth(level: i32, x: i32, z: i32, size: i32, extraFlag: i32, collision: CollisionStrategy): bool { + if (size == 1) { + return !collision.canMove(this.flags.get(x, z - 1, level), CollisionFlag.BLOCK_SOUTH | extraFlag); + } else if (size == 2) { + return !collision.canMove(this.flags.get(x, z - 1, level), CollisionFlag.BLOCK_SOUTH_WEST | extraFlag) || !collision.canMove(this.flags.get(x + 1, z - 1, level), CollisionFlag.BLOCK_SOUTH_EAST | extraFlag); + } else { + if (!collision.canMove(this.flags.get(x, z - 1, level), CollisionFlag.BLOCK_SOUTH_WEST | extraFlag)) { + return true; + } else if (!collision.canMove(this.flags.get(x + size - 1, z - 1, level), CollisionFlag.BLOCK_SOUTH_EAST | extraFlag)) { + return true; + } + for (let midX: i32 = x + 1; midX < x + size - 1; midX++) { + if (!collision.canMove(this.flags.get(midX, z - 1, level), CollisionFlag.BLOCK_NORTH_EAST_AND_WEST | extraFlag)) { return true; } - for (let midX: number = x + 1; midX < x + size - 1; midX++) { - if (!collision.canMove(this.flags.get(midX, z - 1, level), CollisionFlag.BLOCK_NORTH_EAST_AND_WEST | extraFlag)) { - return true; - } - } - return false; + } + return false; } } - isBlockedNorth(level: number, x: number, z: number, size: number, extraFlag: number, collision: CollisionStrategy): boolean { - switch (size) { - case 1: - return !collision.canMove(this.flags.get(x, z + 1, level), CollisionFlag.BLOCK_NORTH | extraFlag); - case 2: - return !collision.canMove(this.flags.get(x, z + 2, level), CollisionFlag.BLOCK_NORTH_WEST | extraFlag) || !collision.canMove(this.flags.get(x + 1, z + 2, level), CollisionFlag.BLOCK_NORTH_EAST | extraFlag); - default: - if (!collision.canMove(this.flags.get(x, z + size, level), CollisionFlag.BLOCK_NORTH_WEST | extraFlag)) { - return true; - } else if (!collision.canMove(this.flags.get(x + size - 1, z + size, level), CollisionFlag.BLOCK_NORTH_EAST | extraFlag)) { + @inline + private isBlockedNorth(level: i32, x: i32, z: i32, size: i32, extraFlag: i32, collision: CollisionStrategy): bool { + if (size == 1) { + return !collision.canMove(this.flags.get(x, z + 1, level), CollisionFlag.BLOCK_NORTH | extraFlag); + } else if (size == 2) { + return !collision.canMove(this.flags.get(x, z + 2, level), CollisionFlag.BLOCK_NORTH_WEST | extraFlag) || !collision.canMove(this.flags.get(x + 1, z + 2, level), CollisionFlag.BLOCK_NORTH_EAST | extraFlag); + } else { + if (!collision.canMove(this.flags.get(x, z + size, level), CollisionFlag.BLOCK_NORTH_WEST | extraFlag)) { + return true; + } else if (!collision.canMove(this.flags.get(x + size - 1, z + size, level), CollisionFlag.BLOCK_NORTH_EAST | extraFlag)) { + return true; + } + for (let midX: i32 = x + 1; midX < x + size - 1; midX++) { + if (!collision.canMove(this.flags.get(midX, z + size, level), CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST | extraFlag)) { return true; } - for (let midX: number = x + 1; midX < x + size - 1; midX++) { - if (!collision.canMove(this.flags.get(midX, z + size, level), CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST | extraFlag)) { - return true; - } - } - return false; + } + return false; } } - isBlockedWest(level: number, x: number, z: number, size: number, extraFlag: number, collision: CollisionStrategy): boolean { - switch (size) { - case 1: - return !collision.canMove(this.flags.get(x - 1, z, level), CollisionFlag.BLOCK_WEST | extraFlag); - case 2: - return !collision.canMove(this.flags.get(x - 1, z, level), CollisionFlag.BLOCK_SOUTH_WEST | extraFlag) || !collision.canMove(this.flags.get(x - 1, z + 1, level), CollisionFlag.BLOCK_NORTH_WEST | extraFlag); - default: - if (!collision.canMove(this.flags.get(x - 1, z, level), CollisionFlag.BLOCK_SOUTH_WEST | extraFlag)) { - return true; - } else if (!collision.canMove(this.flags.get(x - 1, z + size - 1, level), CollisionFlag.BLOCK_NORTH_WEST | extraFlag)) { + @inline + private isBlockedWest(level: i32, x: i32, z: i32, size: i32, extraFlag: i32, collision: CollisionStrategy): bool { + if (size == 1) { + return !collision.canMove(this.flags.get(x - 1, z, level), CollisionFlag.BLOCK_WEST | extraFlag); + } else if (size == 2) { + return !collision.canMove(this.flags.get(x - 1, z, level), CollisionFlag.BLOCK_SOUTH_WEST | extraFlag) || !collision.canMove(this.flags.get(x - 1, z + 1, level), CollisionFlag.BLOCK_NORTH_WEST | extraFlag); + } else { + if (!collision.canMove(this.flags.get(x - 1, z, level), CollisionFlag.BLOCK_SOUTH_WEST | extraFlag)) { + return true; + } else if (!collision.canMove(this.flags.get(x - 1, z + size - 1, level), CollisionFlag.BLOCK_NORTH_WEST | extraFlag)) { + return true; + } + for (let midZ: i32 = z + 1; midZ < z + size - 1; midZ++) { + if (!collision.canMove(this.flags.get(x - 1, midZ, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST | extraFlag)) { return true; } - for (let midZ: number = z + 1; midZ < z + size - 1; midZ++) { - if (!collision.canMove(this.flags.get(x - 1, midZ, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST | extraFlag)) { - return true; - } - } - return false; + } + return false; } } - isBlockedEast(level: number, x: number, z: number, size: number, extraFlag: number, collision: CollisionStrategy): boolean { - switch (size) { - case 1: - return !collision.canMove(this.flags.get(x + 1, z, level), CollisionFlag.BLOCK_EAST | extraFlag); - case 2: - return !collision.canMove(this.flags.get(x + 2, z, level), CollisionFlag.BLOCK_SOUTH_EAST | extraFlag) || !collision.canMove(this.flags.get(x + 2, z + 1, level), CollisionFlag.BLOCK_NORTH_EAST | extraFlag); - default: - if (!collision.canMove(this.flags.get(x + size, z, level), CollisionFlag.BLOCK_SOUTH_EAST | extraFlag)) { - return true; - } else if (!collision.canMove(this.flags.get(x + size, z + size - 1, level), CollisionFlag.BLOCK_NORTH_EAST | extraFlag)) { + @inline + private isBlockedEast(level: i32, x: i32, z: i32, size: i32, extraFlag: i32, collision: CollisionStrategy): bool { + if (size == 1) { + return !collision.canMove(this.flags.get(x + 1, z, level), CollisionFlag.BLOCK_EAST | extraFlag); + } else if (size == 2) { + return !collision.canMove(this.flags.get(x + 2, z, level), CollisionFlag.BLOCK_SOUTH_EAST | extraFlag) || !collision.canMove(this.flags.get(x + 2, z + 1, level), CollisionFlag.BLOCK_NORTH_EAST | extraFlag); + } else { + if (!collision.canMove(this.flags.get(x + size, z, level), CollisionFlag.BLOCK_SOUTH_EAST | extraFlag)) { + return true; + } else if (!collision.canMove(this.flags.get(x + size, z + size - 1, level), CollisionFlag.BLOCK_NORTH_EAST | extraFlag)) { + return true; + } + for (let midZ: i32 = z + 1; midZ < z + size - 1; midZ++) { + if (!collision.canMove(this.flags.get(x + size, midZ, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST | extraFlag)) { return true; } - for (let midZ: number = z + 1; midZ < z + size - 1; midZ++) { - if (!collision.canMove(this.flags.get(x + size, midZ, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST | extraFlag)) { - return true; - } - } - return false; + } + return false; } } - isBlockedSouthWest(level: number, x: number, z: number, size: number, extraFlag: number, collision: CollisionStrategy): boolean { - switch (size) { - case 1: - return ( - !collision.canMove(this.flags.get(x - 1, z - 1, level), CollisionFlag.BLOCK_SOUTH_WEST | extraFlag) || - !collision.canMove(this.flags.get(x - 1, z, level), CollisionFlag.BLOCK_WEST | extraFlag) || - !collision.canMove(this.flags.get(x, z - 1, level), CollisionFlag.BLOCK_SOUTH | extraFlag) - ); - case 2: - return ( - !collision.canMove(this.flags.get(x - 1, z, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST | extraFlag) || - !collision.canMove(this.flags.get(x - 1, z - 1, level), CollisionFlag.BLOCK_SOUTH_WEST | extraFlag) || - !collision.canMove(this.flags.get(x, z - 1, level), CollisionFlag.BLOCK_NORTH_EAST_AND_WEST | extraFlag) - ); - default: - if (!collision.canMove(this.flags.get(x - 1, z - 1, level), CollisionFlag.BLOCK_SOUTH_WEST | extraFlag)) { + @inline + private isBlockedSouthWest(level: i32, x: i32, z: i32, size: i32, extraFlag: i32, collision: CollisionStrategy): bool { + if (size == 1) { + return ( + !collision.canMove(this.flags.get(x - 1, z - 1, level), CollisionFlag.BLOCK_SOUTH_WEST | extraFlag) || + !collision.canMove(this.flags.get(x - 1, z, level), CollisionFlag.BLOCK_WEST | extraFlag) || + !collision.canMove(this.flags.get(x, z - 1, level), CollisionFlag.BLOCK_SOUTH | extraFlag) + ); + } else if (size == 2) { + return ( + !collision.canMove(this.flags.get(x - 1, z, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST | extraFlag) || + !collision.canMove(this.flags.get(x - 1, z - 1, level), CollisionFlag.BLOCK_SOUTH_WEST | extraFlag) || + !collision.canMove(this.flags.get(x, z - 1, level), CollisionFlag.BLOCK_NORTH_EAST_AND_WEST | extraFlag) + ); + } else { + if (!collision.canMove(this.flags.get(x - 1, z - 1, level), CollisionFlag.BLOCK_SOUTH_WEST | extraFlag)) { + return true; + } + for (let mid: i32 = 1; mid < size; mid++) { + if (!collision.canMove(this.flags.get(x - 1, z + mid - 1, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST | extraFlag)) { + return true; + } else if (!collision.canMove(this.flags.get(x + mid - 1, z - 1, level), CollisionFlag.BLOCK_NORTH_EAST_AND_WEST | extraFlag)) { return true; } - for (let mid: number = 1; mid < size; mid++) { - if (!collision.canMove(this.flags.get(x - 1, z + mid - 1, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST | extraFlag)) { - return true; - } else if (!collision.canMove(this.flags.get(x + mid - 1, z - 1, level), CollisionFlag.BLOCK_NORTH_EAST_AND_WEST | extraFlag)) { - return true; - } - } - return false; + } + return false; } } - isBlockedNorthWest(level: number, x: number, z: number, size: number, extraFlag: number, collision: CollisionStrategy): boolean { - switch (size) { - case 1: - return ( - !collision.canMove(this.flags.get(x - 1, z + 1, level), CollisionFlag.BLOCK_NORTH_WEST | extraFlag) || - !collision.canMove(this.flags.get(x - 1, z, level), CollisionFlag.BLOCK_WEST | extraFlag) || - !collision.canMove(this.flags.get(x, z + 1, level), CollisionFlag.BLOCK_NORTH | extraFlag) - ); - case 2: - return ( - !collision.canMove(this.flags.get(x - 1, z + 1, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST | extraFlag) || - !collision.canMove(this.flags.get(x - 1, z + 2, level), CollisionFlag.BLOCK_NORTH_WEST | extraFlag) || - !collision.canMove(this.flags.get(x, z + 2, level), CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST | extraFlag) - ); - default: - if (!collision.canMove(this.flags.get(x - 1, z + size, level), CollisionFlag.BLOCK_NORTH_WEST | extraFlag)) { + @inline + private isBlockedNorthWest(level: i32, x: i32, z: i32, size: i32, extraFlag: i32, collision: CollisionStrategy): bool { + if (size == 1) { + return ( + !collision.canMove(this.flags.get(x - 1, z + 1, level), CollisionFlag.BLOCK_NORTH_WEST | extraFlag) || + !collision.canMove(this.flags.get(x - 1, z, level), CollisionFlag.BLOCK_WEST | extraFlag) || + !collision.canMove(this.flags.get(x, z + 1, level), CollisionFlag.BLOCK_NORTH | extraFlag) + ); + } else if (size == 2) { + return ( + !collision.canMove(this.flags.get(x - 1, z + 1, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST | extraFlag) || + !collision.canMove(this.flags.get(x - 1, z + 2, level), CollisionFlag.BLOCK_NORTH_WEST | extraFlag) || + !collision.canMove(this.flags.get(x, z + 2, level), CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST | extraFlag) + ); + } else { + if (!collision.canMove(this.flags.get(x - 1, z + size, level), CollisionFlag.BLOCK_NORTH_WEST | extraFlag)) { + return true; + } + for (let mid: i32 = 1; mid < size; mid++) { + if (!collision.canMove(this.flags.get(x - 1, z + mid, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST | extraFlag)) { + return true; + } else if (!collision.canMove(this.flags.get(x + mid - 1, z + size, level), CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST | extraFlag)) { return true; } - for (let mid: number = 1; mid < size; mid++) { - if (!collision.canMove(this.flags.get(x - 1, z + mid, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_EAST | extraFlag)) { - return true; - } else if (!collision.canMove(this.flags.get(x + mid - 1, z + size, level), CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST | extraFlag)) { - return true; - } - } - return false; + } + return false; } } - isBlockedSouthEast(level: number, x: number, z: number, size: number, extraFlag: number, collision: CollisionStrategy): boolean { - switch (size) { - case 1: - return ( - !collision.canMove(this.flags.get(x + 1, z - 1, level), CollisionFlag.BLOCK_SOUTH_EAST | extraFlag) || - !collision.canMove(this.flags.get(x + 1, z, level), CollisionFlag.BLOCK_EAST | extraFlag) || - !collision.canMove(this.flags.get(x, z - 1, level), CollisionFlag.BLOCK_SOUTH | extraFlag) - ); - case 2: - return ( - !collision.canMove(this.flags.get(x + 1, z - 1, level), CollisionFlag.BLOCK_NORTH_EAST_AND_WEST | extraFlag) || - !collision.canMove(this.flags.get(x + 2, z - 1, level), CollisionFlag.BLOCK_SOUTH_EAST | extraFlag) || - !collision.canMove(this.flags.get(x + 2, z, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST | extraFlag) - ); - default: - for (let mid: number = 1; mid < size; mid++) { - if (!collision.canMove(this.flags.get(x + size, z + mid - 1, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST | extraFlag)) { - return true; - } else if (!collision.canMove(this.flags.get(x + mid, z - 1, level), CollisionFlag.BLOCK_NORTH_EAST_AND_WEST | extraFlag)) { - return true; - } + @inline + private isBlockedSouthEast(level: i32, x: i32, z: i32, size: i32, extraFlag: i32, collision: CollisionStrategy): bool { + if (size == 1) { + return ( + !collision.canMove(this.flags.get(x + 1, z - 1, level), CollisionFlag.BLOCK_SOUTH_EAST | extraFlag) || + !collision.canMove(this.flags.get(x + 1, z, level), CollisionFlag.BLOCK_EAST | extraFlag) || + !collision.canMove(this.flags.get(x, z - 1, level), CollisionFlag.BLOCK_SOUTH | extraFlag) + ); + } else if (size == 2) { + return ( + !collision.canMove(this.flags.get(x + 1, z - 1, level), CollisionFlag.BLOCK_NORTH_EAST_AND_WEST | extraFlag) || + !collision.canMove(this.flags.get(x + 2, z - 1, level), CollisionFlag.BLOCK_SOUTH_EAST | extraFlag) || + !collision.canMove(this.flags.get(x + 2, z, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST | extraFlag) + ); + } else { + for (let mid: i32 = 1; mid < size; mid++) { + if (!collision.canMove(this.flags.get(x + size, z + mid - 1, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST | extraFlag)) { + return true; + } else if (!collision.canMove(this.flags.get(x + mid, z - 1, level), CollisionFlag.BLOCK_NORTH_EAST_AND_WEST | extraFlag)) { + return true; } - return false; + } + return false; } } - isBlockedNorthEast(level: number, x: number, z: number, size: number, extraFlag: number, collision: CollisionStrategy): boolean { - switch (size) { - case 1: - return ( - !collision.canMove(this.flags.get(x + 1, z + 1, level), CollisionFlag.BLOCK_NORTH_EAST | extraFlag) || - !collision.canMove(this.flags.get(x + 1, z, level), CollisionFlag.BLOCK_EAST | extraFlag) || - !collision.canMove(this.flags.get(x, z + 1, level), CollisionFlag.BLOCK_NORTH | extraFlag) - ); - case 2: - return ( - !collision.canMove(this.flags.get(x + 1, z + 2, level), CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST | extraFlag) || - !collision.canMove(this.flags.get(x + 2, z + 2, level), CollisionFlag.BLOCK_NORTH_EAST | extraFlag) || - !collision.canMove(this.flags.get(x + 2, z + 1, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST | extraFlag) - ); - default: - if (!collision.canMove(this.flags.get(x + size, z + size, level), CollisionFlag.BLOCK_NORTH_EAST | extraFlag)) { + @inline + private isBlockedNorthEast(level: i32, x: i32, z: i32, size: i32, extraFlag: i32, collision: CollisionStrategy): bool { + if (size == 1) { + return ( + !collision.canMove(this.flags.get(x + 1, z + 1, level), CollisionFlag.BLOCK_NORTH_EAST | extraFlag) || + !collision.canMove(this.flags.get(x + 1, z, level), CollisionFlag.BLOCK_EAST | extraFlag) || + !collision.canMove(this.flags.get(x, z + 1, level), CollisionFlag.BLOCK_NORTH | extraFlag) + ); + } else if (size == 2) { + return ( + !collision.canMove(this.flags.get(x + 1, z + 2, level), CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST | extraFlag) || + !collision.canMove(this.flags.get(x + 2, z + 2, level), CollisionFlag.BLOCK_NORTH_EAST | extraFlag) || + !collision.canMove(this.flags.get(x + 2, z + 1, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST | extraFlag) + ); + } else { + if (!collision.canMove(this.flags.get(x + size, z + size, level), CollisionFlag.BLOCK_NORTH_EAST | extraFlag)) { + return true; + } + for (let mid: i32 = 1; mid < size; mid++) { + if (!collision.canMove(this.flags.get(x + mid, z + size, level), CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST | extraFlag)) { + return true; + } else if (!collision.canMove(this.flags.get(x + size, z + mid, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST | extraFlag)) { return true; } - for (let mid: number = 1; mid < size; mid++) { - if (!collision.canMove(this.flags.get(x + mid, z + size, level), CollisionFlag.BLOCK_SOUTH_EAST_AND_WEST | extraFlag)) { - return true; - } else if (!collision.canMove(this.flags.get(x + size, z + mid, level), CollisionFlag.BLOCK_NORTH_AND_SOUTH_WEST | extraFlag)) { - return true; - } - } - return false; + } + return false; } } } diff --git a/src/rsmod/collision/CollisionFlagMap.ts b/src/rsmod/collision/CollisionFlagMap.ts index 272031e..e89e90b 100644 --- a/src/rsmod/collision/CollisionFlagMap.ts +++ b/src/rsmod/collision/CollisionFlagMap.ts @@ -1,71 +1,84 @@ -import CollisionFlag from '../flag/CollisionFlag'; +import {CollisionFlag} from '../flag/CollisionFlag'; +@final export default class CollisionFlagMap { - // 256x256 mapsquares (room for instances): 2048 * 2048 * 4 = ((256 * 256) * 64) * 4 - // 60x160 mapsquares (we don't support instances): ((60 * 160) * 64) * 4 - private static readonly TOTAL_ZONE_COUNT: number = 60 * 160 * 64 * 4; - private static readonly ZONE_TILE_COUNT: number = 8 * 8; + @inline static readonly ZONE_TILE_COUNT: i32 = 8 * 8; + @inline static readonly TOTAL_ZONE_COUNT: i32 = 256 * 256 * 4 * CollisionFlagMap.ZONE_TILE_COUNT; - private static tileIndex(x: number, z: number): number { - return (x & 0x7) | ((z & 0x7) << 3); + @inline + static zoneIndex(x: i32, z: i32, level: i32): i32 { + return ((x >> 3) & 0x7ff) | (((z >> 3) & 0x7ff) << 11) | ((level & 0x3) << 22); } - private static zoneIndex(x: number, z: number, level: number): number { - return ((x >> 3) & 0x7ff) | (((z >> 3) & 0x7ff) << 11) | ((level & 0x3) << 22); + @inline + static tileIndex(x: i32, z: i32): i32 { + return (x & 0x7) | ((z & 0x7) << 3); } - flags: Array = new Array(CollisionFlagMap.TOTAL_ZONE_COUNT); + private readonly flags: StaticArray | null> = new StaticArray(CollisionFlagMap.TOTAL_ZONE_COUNT); - get(absoluteX: number, absoluteZ: number, level: number): number { - const zoneIndex: number = CollisionFlagMap.zoneIndex(absoluteX, absoluteZ, level); - const tileIndex: number = CollisionFlagMap.tileIndex(absoluteX, absoluteZ); - return this.flags?.[zoneIndex]?.[tileIndex] ?? CollisionFlag.NULL; + get(absoluteX: i32, absoluteZ: i32, level: i32): i32 { + const tileIndex: i32 = CollisionFlagMap.tileIndex(absoluteX, absoluteZ); + const flags: StaticArray | null = unchecked(this.flags[CollisionFlagMap.zoneIndex(absoluteX, absoluteZ, level)]); + if (flags == null) { + return CollisionFlag.NULL; + } + if (flags.length <= tileIndex) { + return CollisionFlag.NULL; + } + return unchecked(flags[tileIndex]); } - set(absoluteX: number, absoluteZ: number, level: number, mask: number): void { - const zoneIndex: number = CollisionFlagMap.zoneIndex(absoluteX, absoluteZ, level); - const tileIndex: number = CollisionFlagMap.tileIndex(absoluteX, absoluteZ); - const tiles: Int32Array = this.flags[zoneIndex] ?? this.allocateIfAbsent(absoluteX, absoluteZ, level); - tiles[tileIndex] = mask; + set(absoluteX: i32, absoluteZ: i32, level: i32, mask: i32): void { + const tileIndex: i32 = CollisionFlagMap.tileIndex(absoluteX, absoluteZ); + let tiles: StaticArray | null = unchecked(this.flags[CollisionFlagMap.zoneIndex(absoluteX, absoluteZ, level)]); + if (tiles == null) { + tiles = this.allocateIfAbsent(absoluteX, absoluteZ, level); + } + unchecked((tiles[tileIndex] = mask)); } - add(absoluteX: number, absoluteZ: number, level: number, mask: number): void { - const zoneIndex: number = CollisionFlagMap.zoneIndex(absoluteX, absoluteZ, level); - const tileIndex: number = CollisionFlagMap.tileIndex(absoluteX, absoluteZ); - const currentFlags: number = this.flags?.[zoneIndex]?.[tileIndex] ?? CollisionFlag.OPEN; + add(absoluteX: i32, absoluteZ: i32, level: i32, mask: i32): void { + const tileIndex: i32 = CollisionFlagMap.tileIndex(absoluteX, absoluteZ); + const flags: StaticArray | null = unchecked(this.flags[CollisionFlagMap.zoneIndex(absoluteX, absoluteZ, level)]); + let currentFlags: i32 = CollisionFlag.OPEN; + if (flags != null && tileIndex < flags.length) { + unchecked((currentFlags = flags[tileIndex])); + } this.set(absoluteX, absoluteZ, level, currentFlags | mask); } - remove(absoluteX: number, absoluteZ: number, level: number, mask: number): void { - const zoneIndex: number = CollisionFlagMap.zoneIndex(absoluteX, absoluteZ, level); - const tileIndex: number = CollisionFlagMap.tileIndex(absoluteX, absoluteZ); - const currentFlags: number = this.flags?.[zoneIndex]?.[tileIndex] ?? CollisionFlag.OPEN; + remove(absoluteX: i32, absoluteZ: i32, level: i32, mask: i32): void { + const tileIndex: i32 = CollisionFlagMap.tileIndex(absoluteX, absoluteZ); + const flags: StaticArray | null = unchecked(this.flags[CollisionFlagMap.zoneIndex(absoluteX, absoluteZ, level)]); + let currentFlags: i32 = CollisionFlag.OPEN; + if (flags != null && tileIndex < flags.length) { + unchecked((currentFlags = flags[tileIndex])); + } this.set(absoluteX, absoluteZ, level, currentFlags & ~mask); } - allocateIfAbsent(absoluteX: number, absoluteZ: number, level: number): Int32Array { - const zoneIndex: number = CollisionFlagMap.zoneIndex(absoluteX, absoluteZ, level); - const existingFlags: Int32Array | null = this.flags[zoneIndex]; + allocateIfAbsent(absoluteX: i32, absoluteZ: i32, level: i32): StaticArray { + const zoneIndex: i32 = CollisionFlagMap.zoneIndex(absoluteX, absoluteZ, level); + const existingFlags: StaticArray | null = unchecked(this.flags[zoneIndex]); if (existingFlags != null) { return existingFlags; } - const tileFlags: Int32Array = new Int32Array(CollisionFlagMap.ZONE_TILE_COUNT); - this.flags[zoneIndex] = tileFlags; + const tileFlags: StaticArray = new StaticArray(CollisionFlagMap.ZONE_TILE_COUNT); + unchecked((this.flags[zoneIndex] = tileFlags)); return tileFlags; } - deallocateIfPresent(absoluteX: number, absoluteZ: number, level: number): void { - const zoneIndex: number = CollisionFlagMap.zoneIndex(absoluteX, absoluteZ, level); - this.flags[zoneIndex] = null; + deallocateIfPresent(absoluteX: i32, absoluteZ: i32, level: i32): void { + unchecked((this.flags[CollisionFlagMap.zoneIndex(absoluteX, absoluteZ, level)] = null)); } - isZoneAllocated(absoluteX: number, absoluteZ: number, level: number): boolean { - const zoneIndex: number = CollisionFlagMap.zoneIndex(absoluteX, absoluteZ, level); - return this.flags[zoneIndex] != null; + isZoneAllocated(absoluteX: i32, absoluteZ: i32, level: i32): bool { + return unchecked(this.flags[CollisionFlagMap.zoneIndex(absoluteX, absoluteZ, level)] != null); } - isFlagged(x: number, z: number, level: number, flags: number): boolean { - return (this.get(x, z, level) & flags) !== CollisionFlag.OPEN; + isFlagged(x: i32, z: i32, level: i32, masks: i32): bool { + return (this.get(x, z, level) & masks) != CollisionFlag.OPEN; } } diff --git a/src/rsmod/collision/CollisionStrategies.ts b/src/rsmod/collision/CollisionStrategies.ts index 12210ca..d426407 100644 --- a/src/rsmod/collision/CollisionStrategies.ts +++ b/src/rsmod/collision/CollisionStrategies.ts @@ -1,33 +1,43 @@ -import CollisionStrategy from './CollisionStrategy'; -import CollisionFlag from '../flag/CollisionFlag'; +import {CollisionStrategy} from './CollisionStrategy'; +import {CollisionFlag} from '../flag/CollisionFlag'; +@final class Normal implements CollisionStrategy { - canMove(tileFlag: number, blockFlag: number): boolean { - return (tileFlag & blockFlag) === CollisionFlag.OPEN; + @inline + canMove(tileFlag: i32, blockFlag: i32): bool { + return (tileFlag & blockFlag) == CollisionFlag.OPEN; } } +@final class Blocked implements CollisionStrategy { - canMove(tileFlag: number, blockFlag: number): boolean { - const flag: number = blockFlag & ~CollisionFlag.FLOOR; - return (tileFlag & flag) === 0 && (tileFlag & CollisionFlag.FLOOR) !== CollisionFlag.OPEN; + @inline + canMove(tileFlag: i32, blockFlag: i32): bool { + const flag: i32 = blockFlag & ~CollisionFlag.FLOOR; + return (tileFlag & flag) == 0 && (tileFlag & CollisionFlag.FLOOR) != CollisionFlag.OPEN; } } +@final class Indoors implements CollisionStrategy { - canMove(tileFlag: number, blockFlag: number): boolean { - return (tileFlag & blockFlag) === 0 && (tileFlag & CollisionFlag.ROOF) !== CollisionFlag.OPEN; + @inline + canMove(tileFlag: i32, blockFlag: i32): bool { + return (tileFlag & blockFlag) == 0 && (tileFlag & CollisionFlag.ROOF) != CollisionFlag.OPEN; } } +@final class Outdoors implements CollisionStrategy { - canMove(tileFlag: number, blockFlag: number): boolean { - return (tileFlag & (blockFlag | CollisionFlag.ROOF)) === CollisionFlag.OPEN; + @inline + canMove(tileFlag: i32, blockFlag: i32): bool { + return (tileFlag & (blockFlag | CollisionFlag.ROOF)) == CollisionFlag.OPEN; } } +@final class LineOfSight implements CollisionStrategy { - private static readonly BLOCK_MOVEMENT: number = + @inline + private static readonly BLOCK_MOVEMENT: i32 = CollisionFlag.WALL_NORTH_WEST | CollisionFlag.WALL_NORTH | CollisionFlag.WALL_NORTH_EAST | @@ -38,7 +48,8 @@ class LineOfSight implements CollisionStrategy { CollisionFlag.WALL_WEST | CollisionFlag.LOC; - private static readonly BLOCK_ROUTE: number = + @inline + private static readonly BLOCK_ROUTE: i32 = CollisionFlag.WALL_NORTH_WEST_ROUTE_BLOCKER | CollisionFlag.WALL_NORTH_ROUTE_BLOCKER | CollisionFlag.WALL_NORTH_EAST_ROUTE_BLOCKER | @@ -49,14 +60,16 @@ class LineOfSight implements CollisionStrategy { CollisionFlag.WALL_WEST_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER; - canMove(tileFlag: number, blockFlag: number): boolean { - const movementFlags: number = (blockFlag & LineOfSight.BLOCK_MOVEMENT) << 9; - const routeFlags: number = (blockFlag & LineOfSight.BLOCK_ROUTE) >> 13; - const finalBlockFlag: number = movementFlags | routeFlags; - return (tileFlag & finalBlockFlag) === CollisionFlag.OPEN; + @inline + canMove(tileFlag: i32, blockFlag: i32): bool { + const movementFlags: i32 = (blockFlag & LineOfSight.BLOCK_MOVEMENT) << 9; + const routeFlags: i32 = (blockFlag & LineOfSight.BLOCK_ROUTE) >> 13; + const finalBlockFlag: i32 = movementFlags | routeFlags; + return (tileFlag & finalBlockFlag) == CollisionFlag.OPEN; } } +@final export default class CollisionStrategies { static NORMAL: CollisionStrategy = new Normal(); static BLOCKED: CollisionStrategy = new Blocked(); diff --git a/src/rsmod/collision/CollisionStrategy.ts b/src/rsmod/collision/CollisionStrategy.ts index 3ac9e54..ea20f5c 100644 --- a/src/rsmod/collision/CollisionStrategy.ts +++ b/src/rsmod/collision/CollisionStrategy.ts @@ -1,5 +1,11 @@ -interface CollisionStrategy { - canMove(tileFlag: number, blockFlag: number): boolean; +export enum CollisionType { + NORMAL = 0, + BLOCKED = 1, + INDOORS = 2, + OUTDOORS = 3, + LINE_OF_SIGHT = 4 } -export default CollisionStrategy; +export interface CollisionStrategy { + canMove(tileFlag: i32, blockFlag: i32): bool; +} diff --git a/src/rsmod/flag/BlockAccessFlag.ts b/src/rsmod/flag/BlockAccessFlag.ts index 6020416..8113692 100644 --- a/src/rsmod/flag/BlockAccessFlag.ts +++ b/src/rsmod/flag/BlockAccessFlag.ts @@ -1,6 +1,7 @@ +@final export default class BlockAccessFlag { - static readonly BLOCK_NORTH: number = 0x1; - static readonly BLOCK_EAST: number = 0x2; - static readonly BLOCK_SOUTH: number = 0x4; - static readonly BLOCK_WEST: number = 0x8; + @inline static readonly BLOCK_NORTH: i8 = 0x1; + @inline static readonly BLOCK_EAST: i8 = 0x2; + @inline static readonly BLOCK_SOUTH: i8 = 0x4; + @inline static readonly BLOCK_WEST: i8 = 0x8; } diff --git a/src/rsmod/flag/CollisionFlag.ts b/src/rsmod/flag/CollisionFlag.ts index e04f448..8284ff8 100644 --- a/src/rsmod/flag/CollisionFlag.ts +++ b/src/rsmod/flag/CollisionFlag.ts @@ -1,25 +1,25 @@ -export default class CollisionFlag { - static readonly NULL: number = 0xffffffff; // -1 - static readonly OPEN: number = 0x0; - static readonly WALL_NORTH_WEST: number = 0x1; - static readonly WALL_NORTH: number = 0x2; - static readonly WALL_NORTH_EAST: number = 0x4; - static readonly WALL_EAST: number = 0x8; - static readonly WALL_SOUTH_EAST: number = 0x10; - static readonly WALL_SOUTH: number = 0x20; - static readonly WALL_SOUTH_WEST: number = 0x40; - static readonly WALL_WEST: number = 0x80; - static readonly LOC: number = 0x100; - static readonly WALL_NORTH_WEST_PROJ_BLOCKER: number = 0x200; - static readonly WALL_NORTH_PROJ_BLOCKER: number = 0x400; - static readonly WALL_NORTH_EAST_PROJ_BLOCKER: number = 0x800; - static readonly WALL_EAST_PROJ_BLOCKER: number = 0x1000; - static readonly WALL_SOUTH_EAST_PROJ_BLOCKER: number = 0x2000; - static readonly WALL_SOUTH_PROJ_BLOCKER: number = 0x4000; - static readonly WALL_SOUTH_WEST_PROJ_BLOCKER: number = 0x8000; - static readonly WALL_WEST_PROJ_BLOCKER: number = 0x10000; - static readonly LOC_PROJ_BLOCKER: number = 0x20000; - static readonly FLOOR_DECORATION: number = 0x40000; +export enum CollisionFlag { + NULL = -1, + OPEN = 0x0, + WALL_NORTH_WEST = 0x1, + WALL_NORTH = 0x2, + WALL_NORTH_EAST = 0x4, + WALL_EAST = 0x8, + WALL_SOUTH_EAST = 0x10, + WALL_SOUTH = 0x20, + WALL_SOUTH_WEST = 0x40, + WALL_WEST = 0x80, + LOC = 0x100, + WALL_NORTH_WEST_PROJ_BLOCKER = 0x200, + WALL_NORTH_PROJ_BLOCKER = 0x400, + WALL_NORTH_EAST_PROJ_BLOCKER = 0x800, + WALL_EAST_PROJ_BLOCKER = 0x1000, + WALL_SOUTH_EAST_PROJ_BLOCKER = 0x2000, + WALL_SOUTH_PROJ_BLOCKER = 0x4000, + WALL_SOUTH_WEST_PROJ_BLOCKER = 0x8000, + WALL_WEST_PROJ_BLOCKER = 0x10000, + LOC_PROJ_BLOCKER = 0x20000, + FLOOR_DECORATION = 0x40000, /** * Custom flag dedicated to blocking NPCs. @@ -27,7 +27,7 @@ export default class CollisionFlag { * The pathfinder takes the flag as a custom option, so you may use any other flag, this just defines * a reliable constant to use */ - static readonly NPC: number = 0x80000; + NPC = 0x80000, /** * Custom flag dedicated to blocking players, projectiles as well as NPCs. @@ -35,83 +35,79 @@ export default class CollisionFlag { * prevents NPCs, as there is a separate flag option for it. * This flag is similar to the one above, except it's strictly for NPCs. */ - static readonly PLAYER: number = 0x100000; + PLAYER = 0x100000, - static readonly FLOOR: number = 0x200000; - static readonly WALL_NORTH_WEST_ROUTE_BLOCKER: number = 0x400000; - static readonly WALL_NORTH_ROUTE_BLOCKER: number = 0x800000; - static readonly WALL_NORTH_EAST_ROUTE_BLOCKER: number = 0x1000000; - static readonly WALL_EAST_ROUTE_BLOCKER: number = 0x2000000; - static readonly WALL_SOUTH_EAST_ROUTE_BLOCKER: number = 0x4000000; - static readonly WALL_SOUTH_ROUTE_BLOCKER: number = 0x8000000; - static readonly WALL_SOUTH_WEST_ROUTE_BLOCKER: number = 0x10000000; - static readonly WALL_WEST_ROUTE_BLOCKER: number = 0x20000000; - static readonly LOC_ROUTE_BLOCKER: number = 0x40000000; + FLOOR = 0x200000, + WALL_NORTH_WEST_ROUTE_BLOCKER = 0x400000, + WALL_NORTH_ROUTE_BLOCKER = 0x800000, + WALL_NORTH_EAST_ROUTE_BLOCKER = 0x1000000, + WALL_EAST_ROUTE_BLOCKER = 0x2000000, + WALL_SOUTH_EAST_ROUTE_BLOCKER = 0x4000000, + WALL_SOUTH_ROUTE_BLOCKER = 0x8000000, + WALL_SOUTH_WEST_ROUTE_BLOCKER = 0x10000000, + WALL_WEST_ROUTE_BLOCKER = 0x20000000, + LOC_ROUTE_BLOCKER = 0x40000000, /** * Roof flag, used to bind NPCs to not leave the buildings they spawn in. This is a custom flag. */ - static readonly ROOF: number = 0x80000000; + ROOF = 0x80000000, /* A shorthand combination of both the floor flags. */ - static readonly FLOOR_BLOCKED: number = CollisionFlag.FLOOR | CollisionFlag.FLOOR_DECORATION; + FLOOR_BLOCKED = CollisionFlag.FLOOR | CollisionFlag.FLOOR_DECORATION, - static readonly WALK_BLOCKED: number = CollisionFlag.LOC | CollisionFlag.FLOOR_BLOCKED; + WALK_BLOCKED = CollisionFlag.LOC | CollisionFlag.FLOOR_BLOCKED, /* Mixed masks of the above flags */ - static readonly BLOCK_WEST: number = CollisionFlag.WALL_EAST | CollisionFlag.WALK_BLOCKED; - static readonly BLOCK_EAST: number = CollisionFlag.WALL_WEST | CollisionFlag.WALK_BLOCKED; - static readonly BLOCK_SOUTH: number = CollisionFlag.WALL_NORTH | CollisionFlag.WALK_BLOCKED; - static readonly BLOCK_NORTH: number = CollisionFlag.WALL_SOUTH | CollisionFlag.WALK_BLOCKED; + BLOCK_WEST = CollisionFlag.WALL_EAST | CollisionFlag.WALK_BLOCKED, + BLOCK_EAST = CollisionFlag.WALL_WEST | CollisionFlag.WALK_BLOCKED, + BLOCK_SOUTH = CollisionFlag.WALL_NORTH | CollisionFlag.WALK_BLOCKED, + BLOCK_NORTH = CollisionFlag.WALL_SOUTH | CollisionFlag.WALK_BLOCKED, - static readonly BLOCK_SOUTH_WEST: number = CollisionFlag.WALL_NORTH | CollisionFlag.WALL_NORTH_EAST | CollisionFlag.WALL_EAST | CollisionFlag.WALK_BLOCKED; - static readonly BLOCK_SOUTH_EAST: number = CollisionFlag.WALL_NORTH_WEST | CollisionFlag.WALL_NORTH | CollisionFlag.WALL_WEST | CollisionFlag.WALK_BLOCKED; - static readonly BLOCK_NORTH_WEST: number = CollisionFlag.WALL_EAST | CollisionFlag.WALL_SOUTH_EAST | CollisionFlag.WALL_SOUTH | CollisionFlag.WALK_BLOCKED; - static readonly BLOCK_NORTH_EAST: number = CollisionFlag.WALL_SOUTH | CollisionFlag.WALL_SOUTH_WEST | CollisionFlag.WALL_WEST | CollisionFlag.WALK_BLOCKED; - static readonly BLOCK_NORTH_AND_SOUTH_EAST: number = CollisionFlag.WALL_NORTH | CollisionFlag.WALL_NORTH_EAST | CollisionFlag.WALL_EAST | CollisionFlag.WALL_SOUTH_EAST | CollisionFlag.WALL_SOUTH | CollisionFlag.WALK_BLOCKED; - static readonly BLOCK_NORTH_AND_SOUTH_WEST: number = CollisionFlag.WALL_NORTH_WEST | CollisionFlag.WALL_NORTH | CollisionFlag.WALL_SOUTH | CollisionFlag.WALL_SOUTH_WEST | CollisionFlag.WALL_WEST | CollisionFlag.WALK_BLOCKED; - static readonly BLOCK_NORTH_EAST_AND_WEST: number = CollisionFlag.WALL_NORTH_WEST | CollisionFlag.WALL_NORTH | CollisionFlag.WALL_NORTH_EAST | CollisionFlag.WALL_EAST | CollisionFlag.WALL_WEST | CollisionFlag.WALK_BLOCKED; - static readonly BLOCK_SOUTH_EAST_AND_WEST: number = CollisionFlag.WALL_EAST | CollisionFlag.WALL_SOUTH_EAST | CollisionFlag.WALL_SOUTH | CollisionFlag.WALL_SOUTH_WEST | CollisionFlag.WALL_WEST | CollisionFlag.WALK_BLOCKED; + BLOCK_SOUTH_WEST = CollisionFlag.WALL_NORTH | CollisionFlag.WALL_NORTH_EAST | CollisionFlag.WALL_EAST | CollisionFlag.WALK_BLOCKED, + BLOCK_SOUTH_EAST = CollisionFlag.WALL_NORTH_WEST | CollisionFlag.WALL_NORTH | CollisionFlag.WALL_WEST | CollisionFlag.WALK_BLOCKED, + BLOCK_NORTH_WEST = CollisionFlag.WALL_EAST | CollisionFlag.WALL_SOUTH_EAST | CollisionFlag.WALL_SOUTH | CollisionFlag.WALK_BLOCKED, + BLOCK_NORTH_EAST = CollisionFlag.WALL_SOUTH | CollisionFlag.WALL_SOUTH_WEST | CollisionFlag.WALL_WEST | CollisionFlag.WALK_BLOCKED, + BLOCK_NORTH_AND_SOUTH_EAST = CollisionFlag.WALL_NORTH | CollisionFlag.WALL_NORTH_EAST | CollisionFlag.WALL_EAST | CollisionFlag.WALL_SOUTH_EAST | CollisionFlag.WALL_SOUTH | CollisionFlag.WALK_BLOCKED, + BLOCK_NORTH_AND_SOUTH_WEST = CollisionFlag.WALL_NORTH_WEST | CollisionFlag.WALL_NORTH | CollisionFlag.WALL_SOUTH | CollisionFlag.WALL_SOUTH_WEST | CollisionFlag.WALL_WEST | CollisionFlag.WALK_BLOCKED, + BLOCK_NORTH_EAST_AND_WEST = CollisionFlag.WALL_NORTH_WEST | CollisionFlag.WALL_NORTH | CollisionFlag.WALL_NORTH_EAST | CollisionFlag.WALL_EAST | CollisionFlag.WALL_WEST | CollisionFlag.WALK_BLOCKED, + BLOCK_SOUTH_EAST_AND_WEST = CollisionFlag.WALL_EAST | CollisionFlag.WALL_SOUTH_EAST | CollisionFlag.WALL_SOUTH | CollisionFlag.WALL_SOUTH_WEST | CollisionFlag.WALL_WEST | CollisionFlag.WALK_BLOCKED, /* Route blocker flags. These are used in ~550+ clients to generate paths through bankers and such. */ - static readonly BLOCK_WEST_ROUTE_BLOCKER: number = CollisionFlag.WALL_EAST_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | CollisionFlag.FLOOR_BLOCKED; - static readonly BLOCK_EAST_ROUTE_BLOCKER: number = CollisionFlag.WALL_WEST_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | CollisionFlag.FLOOR_BLOCKED; - static readonly BLOCK_SOUTH_ROUTE_BLOCKER: number = CollisionFlag.WALL_NORTH_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | CollisionFlag.FLOOR_BLOCKED; - static readonly BLOCK_NORTH_ROUTE_BLOCKER: number = CollisionFlag.WALL_SOUTH_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | CollisionFlag.FLOOR_BLOCKED; - static readonly BLOCK_SOUTH_WEST_ROUTE_BLOCKER: number = CollisionFlag.WALL_NORTH_ROUTE_BLOCKER | CollisionFlag.WALL_NORTH_EAST_ROUTE_BLOCKER | CollisionFlag.WALL_EAST_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | CollisionFlag.FLOOR_BLOCKED; - static readonly BLOCK_SOUTH_EAST_ROUTE_BLOCKER: number = CollisionFlag.WALL_NORTH_WEST_ROUTE_BLOCKER | CollisionFlag.WALL_NORTH_ROUTE_BLOCKER | CollisionFlag.WALL_WEST_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | CollisionFlag.FLOOR_BLOCKED; - static readonly BLOCK_NORTH_WEST_ROUTE_BLOCKER: number = CollisionFlag.WALL_EAST_ROUTE_BLOCKER | CollisionFlag.WALL_SOUTH_EAST_ROUTE_BLOCKER | CollisionFlag.WALL_SOUTH_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | CollisionFlag.FLOOR_BLOCKED; - static readonly BLOCK_NORTH_EAST_ROUTE_BLOCKER: number = CollisionFlag.WALL_SOUTH_ROUTE_BLOCKER | CollisionFlag.WALL_SOUTH_WEST_ROUTE_BLOCKER | CollisionFlag.WALL_WEST_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | CollisionFlag.FLOOR_BLOCKED; - static readonly BLOCK_NORTH_AND_SOUTH_EAST_ROUTE_BLOCKER: number = - CollisionFlag.WALL_NORTH_ROUTE_BLOCKER | + BLOCK_WEST_ROUTE_BLOCKER = CollisionFlag.WALL_EAST_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | CollisionFlag.FLOOR_BLOCKED, + BLOCK_EAST_ROUTE_BLOCKER = CollisionFlag.WALL_WEST_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | CollisionFlag.FLOOR_BLOCKED, + BLOCK_SOUTH_ROUTE_BLOCKER = CollisionFlag.WALL_NORTH_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | CollisionFlag.FLOOR_BLOCKED, + BLOCK_NORTH_ROUTE_BLOCKER = CollisionFlag.WALL_SOUTH_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | CollisionFlag.FLOOR_BLOCKED, + BLOCK_SOUTH_WEST_ROUTE_BLOCKER = CollisionFlag.WALL_NORTH_ROUTE_BLOCKER | CollisionFlag.WALL_NORTH_EAST_ROUTE_BLOCKER | CollisionFlag.WALL_EAST_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | CollisionFlag.FLOOR_BLOCKED, + BLOCK_SOUTH_EAST_ROUTE_BLOCKER = CollisionFlag.WALL_NORTH_WEST_ROUTE_BLOCKER | CollisionFlag.WALL_NORTH_ROUTE_BLOCKER | CollisionFlag.WALL_WEST_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | CollisionFlag.FLOOR_BLOCKED, + BLOCK_NORTH_WEST_ROUTE_BLOCKER = CollisionFlag.WALL_EAST_ROUTE_BLOCKER | CollisionFlag.WALL_SOUTH_EAST_ROUTE_BLOCKER | CollisionFlag.WALL_SOUTH_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | CollisionFlag.FLOOR_BLOCKED, + BLOCK_NORTH_EAST_ROUTE_BLOCKER = CollisionFlag.WALL_SOUTH_ROUTE_BLOCKER | CollisionFlag.WALL_SOUTH_WEST_ROUTE_BLOCKER | CollisionFlag.WALL_WEST_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | CollisionFlag.FLOOR_BLOCKED, + BLOCK_NORTH_AND_SOUTH_EAST_ROUTE_BLOCKER = CollisionFlag.WALL_NORTH_ROUTE_BLOCKER | CollisionFlag.WALL_NORTH_EAST_ROUTE_BLOCKER | CollisionFlag.WALL_EAST_ROUTE_BLOCKER | CollisionFlag.WALL_SOUTH_EAST_ROUTE_BLOCKER | CollisionFlag.WALL_SOUTH_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | - CollisionFlag.FLOOR_BLOCKED; - static readonly BLOCK_NORTH_AND_SOUTH_WEST_ROUTE_BLOCKER: number = - CollisionFlag.WALL_NORTH_WEST_ROUTE_BLOCKER | + CollisionFlag.FLOOR_BLOCKED, + BLOCK_NORTH_AND_SOUTH_WEST_ROUTE_BLOCKER = CollisionFlag.WALL_NORTH_WEST_ROUTE_BLOCKER | CollisionFlag.WALL_NORTH_ROUTE_BLOCKER | CollisionFlag.WALL_SOUTH_ROUTE_BLOCKER | CollisionFlag.WALL_SOUTH_WEST_ROUTE_BLOCKER | CollisionFlag.WALL_WEST_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | - CollisionFlag.FLOOR_BLOCKED; - static readonly BLOCK_NORTH_EAST_AND_WEST_ROUTE_BLOCKER: number = - CollisionFlag.WALL_NORTH_WEST_ROUTE_BLOCKER | + CollisionFlag.FLOOR_BLOCKED, + BLOCK_NORTH_EAST_AND_WEST_ROUTE_BLOCKER = CollisionFlag.WALL_NORTH_WEST_ROUTE_BLOCKER | CollisionFlag.WALL_NORTH_ROUTE_BLOCKER | CollisionFlag.WALL_NORTH_EAST_ROUTE_BLOCKER | CollisionFlag.WALL_EAST_ROUTE_BLOCKER | CollisionFlag.WALL_WEST_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | - CollisionFlag.FLOOR_BLOCKED; - static readonly BLOCK_SOUTH_EAST_AND_WEST_ROUTE_BLOCKER: number = - CollisionFlag.WALL_EAST_ROUTE_BLOCKER | + CollisionFlag.FLOOR_BLOCKED, + BLOCK_SOUTH_EAST_AND_WEST_ROUTE_BLOCKER = CollisionFlag.WALL_EAST_ROUTE_BLOCKER | CollisionFlag.WALL_SOUTH_EAST_ROUTE_BLOCKER | CollisionFlag.WALL_SOUTH_ROUTE_BLOCKER | CollisionFlag.WALL_SOUTH_WEST_ROUTE_BLOCKER | CollisionFlag.WALL_WEST_ROUTE_BLOCKER | CollisionFlag.LOC_ROUTE_BLOCKER | - CollisionFlag.FLOOR_BLOCKED; + CollisionFlag.FLOOR_BLOCKED } diff --git a/src/rsmod/flag/DirectionFlag.ts b/src/rsmod/flag/DirectionFlag.ts index 8adbe8c..f9140f9 100644 --- a/src/rsmod/flag/DirectionFlag.ts +++ b/src/rsmod/flag/DirectionFlag.ts @@ -1,11 +1,12 @@ +@final export default class DirectionFlag { - static readonly NORTH: number = 0x1; - static readonly EAST: number = 0x2; - static readonly SOUTH: number = 0x4; - static readonly WEST: number = 0x8; + @inline static readonly NORTH: i8 = 0x1; + @inline static readonly EAST: i8 = 0x2; + @inline static readonly SOUTH: i8 = 0x4; + @inline static readonly WEST: i8 = 0x8; - static readonly SOUTH_WEST: number = DirectionFlag.WEST | DirectionFlag.SOUTH; - static readonly NORTH_WEST: number = DirectionFlag.WEST | DirectionFlag.NORTH; - static readonly SOUTH_EAST: number = DirectionFlag.EAST | DirectionFlag.SOUTH; - static readonly NORTH_EAST: number = DirectionFlag.EAST | DirectionFlag.NORTH; + @inline static readonly SOUTH_WEST: i8 = DirectionFlag.WEST | DirectionFlag.SOUTH; + @inline static readonly NORTH_WEST: i8 = DirectionFlag.WEST | DirectionFlag.NORTH; + @inline static readonly SOUTH_EAST: i8 = DirectionFlag.EAST | DirectionFlag.SOUTH; + @inline static readonly NORTH_EAST: i8 = DirectionFlag.EAST | DirectionFlag.NORTH; } diff --git a/src/rsmod/reach/ReachStrategy.ts b/src/rsmod/reach/ReachStrategy.ts index e4bacda..eef6556 100644 --- a/src/rsmod/reach/ReachStrategy.ts +++ b/src/rsmod/reach/ReachStrategy.ts @@ -1,72 +1,77 @@ -// noinspection DuplicatedCode - import CollisionFlagMap from '../collision/CollisionFlagMap'; import RotationUtils from '../utils/RotationUtils'; import RectangleBoundaryUtils from './RectangleBoundaryUtils'; -import CollisionFlag from '../flag/CollisionFlag'; +import {CollisionFlag} from '../flag/CollisionFlag'; +import {LocShape} from '../LocShape'; +import {LocAngle} from '../LocAngle'; +@final export default class ReachStrategy { - static readonly WALL_STRATEGY: number = 0; - static readonly WALL_DECOR_STRATEGY: number = 1; - static readonly RECTANGLE_STRATEGY: number = 2; - static readonly NO_STRATEGY: number = 3; - static readonly RECTANGLE_EXCLUSIVE_STRATEGY: number = 4; + @inline private static readonly WALL_STRATEGY: i8 = 0; + @inline private static readonly WALL_DECOR_STRATEGY: i8 = 1; + @inline private static readonly RECTANGLE_STRATEGY: i8 = 2; + @inline private static readonly NO_STRATEGY: i8 = 3; + @inline private static readonly RECTANGLE_EXCLUSIVE_STRATEGY: i8 = 4; - static exitStrategy(locShape: number): number { - if (locShape === -2) { + @inline + private static exitStrategy(locShape: i8): i8 { + if (locShape == -2) { return this.RECTANGLE_EXCLUSIVE_STRATEGY; - } else if (locShape === -1) { + } else if (locShape == -1) { return this.NO_STRATEGY; - } else if ((locShape >= 0 && locShape <= 3) || locShape === 9) { + } else if ((locShape >= 0 && locShape <= 3) || locShape == 9) { return this.WALL_STRATEGY; } else if (locShape < 9) { return this.WALL_DECOR_STRATEGY; - } else if ((locShape >= 10 && locShape <= 11) || locShape === 22) { + } else if ((locShape >= 10 && locShape <= 11) || locShape == 22) { return this.RECTANGLE_STRATEGY; } return this.NO_STRATEGY; } - static alteredRotation(angle: number, shape: number): number { - return shape === 7 ? (angle + 2) & 0x3 : angle; + @inline + private static alteredRotation(angle: i8, shape: i8): i8 { + return shape == 7 ? (angle + 2) & 0x3 : angle; } + // prettier-ignore + @inline static reached( flags: CollisionFlagMap, - level: number, - srcX: number, - srcZ: number, - destX: number, - destZ: number, - destWidth: number, - destHeight: number, - srcSize: number, - angle: number = 0, - shape: number = -1, - blockAccessFlags: number = 0 - ): boolean { - const exitStrategy: number = this.exitStrategy(shape); - if (exitStrategy !== this.RECTANGLE_EXCLUSIVE_STRATEGY && srcX === destX && srcZ === destZ) { + level: i8, + srcX: i32, + srcZ: i32, + destX: i32, + destZ: i32, + destWidth: i8, + destHeight: i8, + srcSize: i8, + angle: i8 = 0, + shape: i8 = -1, + blockAccessFlags: i8 = 0 + ): bool { + const exitStrategy: i8 = this.exitStrategy(shape); + if (exitStrategy != this.RECTANGLE_EXCLUSIVE_STRATEGY && srcX == destX && srcZ == destZ) { return true; } - switch (exitStrategy) { - case this.WALL_STRATEGY: - return this.reachWall(flags, level, srcX, srcZ, destX, destZ, srcSize, shape, angle); - case this.WALL_DECOR_STRATEGY: - return this.reachWallDecor(flags, level, srcX, srcZ, destX, destZ, srcSize, shape, angle); - case this.RECTANGLE_STRATEGY: - return this.reachRectangle(flags, level, srcX, srcZ, destX, destZ, srcSize, destWidth, destHeight, angle, blockAccessFlags); - case this.RECTANGLE_EXCLUSIVE_STRATEGY: - return this.reachExclusiveRectangle(flags, level, srcX, srcZ, destX, destZ, srcSize, destWidth, destHeight, angle, blockAccessFlags); + if (exitStrategy == this.WALL_STRATEGY) { + return this.reachWall(flags, level, srcX, srcZ, destX, destZ, srcSize, shape, angle); + } else if (exitStrategy == this.WALL_DECOR_STRATEGY) { + return this.reachWallDecor(flags, level, srcX, srcZ, destX, destZ, srcSize, shape, angle); + } else if (exitStrategy == this.RECTANGLE_STRATEGY) { + return this.reachRectangle(flags, level, srcX, srcZ, destX, destZ, srcSize, destWidth, destHeight, angle, blockAccessFlags); + } else if (exitStrategy == this.RECTANGLE_EXCLUSIVE_STRATEGY) { + return this.reachExclusiveRectangle(flags, level, srcX, srcZ, destX, destZ, srcSize, destWidth, destHeight, angle, blockAccessFlags); } return false; } - static reachRectangle(flags: CollisionFlagMap, level: number, srcX: number, srcZ: number, destX: number, destZ: number, srcSize: number, destWidth: number, destHeight: number, angle: number = 0, blockAccessFlags: number = 0): boolean { - const rotatedWidth: number = RotationUtils.rotate(angle, destWidth, destHeight); - const rotatedHeight: number = RotationUtils.rotate(angle, destHeight, destWidth); - const rotatedBlockAccess: number = RotationUtils.rotateFlags(angle, blockAccessFlags); - const collides: boolean = RectangleBoundaryUtils.collides(srcX, srcZ, destX, destZ, srcSize, srcSize, rotatedWidth, rotatedHeight); + @inline + private static reachRectangle(flags: CollisionFlagMap, level: i32, srcX: i32, srcZ: i32, destX: i32, destZ: i32, srcSize: i8, destWidth: i8, destHeight: i8, angle: i8 = 0, blockAccessFlags: i8 = 0): bool { + const rotatedWidth: i32 = RotationUtils.rotate(angle, destWidth, destHeight); + const rotatedHeight: i32 = RotationUtils.rotate(angle, destHeight, destWidth); + const rotatedBlockAccess: i32 = RotationUtils.rotateFlags(angle, blockAccessFlags); + const collides: bool = RectangleBoundaryUtils.collides(srcX, srcZ, destX, destZ, srcSize, srcSize, rotatedWidth, rotatedHeight); if (srcSize > 1) { return collides || RectangleBoundaryUtils.reachRectangleN(flags, level, srcX, srcZ, destX, destZ, srcSize, srcSize, rotatedWidth, rotatedHeight, rotatedBlockAccess); @@ -74,11 +79,12 @@ export default class ReachStrategy { return collides || RectangleBoundaryUtils.reachRectangle1(flags, level, srcX, srcZ, destX, destZ, rotatedWidth, rotatedHeight, rotatedBlockAccess); } - static reachExclusiveRectangle(flags: CollisionFlagMap, level: number, srcX: number, srcZ: number, destX: number, destZ: number, srcSize: number, destWidth: number, destHeight: number, angle: number = 0, blockAccessFlags: number = 0): boolean { - const rotatedWidth: number = RotationUtils.rotate(angle, destWidth, destHeight); - const rotatedHeight: number = RotationUtils.rotate(angle, destHeight, destWidth); - const rotatedBlockAccess: number = RotationUtils.rotateFlags(angle, blockAccessFlags); - const collides: boolean = RectangleBoundaryUtils.collides(srcX, srcZ, destX, destZ, srcSize, srcSize, rotatedWidth, rotatedHeight); + @inline + private static reachExclusiveRectangle(flags: CollisionFlagMap, level: i32, srcX: i32, srcZ: i32, destX: i32, destZ: i32, srcSize: i8, destWidth: i8, destHeight: i8, angle: i8 = 0, blockAccessFlags: i8 = 0): bool { + const rotatedWidth: i32 = RotationUtils.rotate(angle, destWidth, destHeight); + const rotatedHeight: i32 = RotationUtils.rotate(angle, destHeight, destWidth); + const rotatedBlockAccess: i32 = RotationUtils.rotateFlags(angle, blockAccessFlags); + const collides: bool = RectangleBoundaryUtils.collides(srcX, srcZ, destX, destZ, srcSize, srcSize, rotatedWidth, rotatedHeight); if (srcSize > 1) { return !collides && RectangleBoundaryUtils.reachRectangleN(flags, level, srcX, srcZ, destX, destZ, srcSize, srcSize, rotatedWidth, rotatedHeight, rotatedBlockAccess); @@ -86,124 +92,127 @@ export default class ReachStrategy { return !collides && RectangleBoundaryUtils.reachRectangle1(flags, level, srcX, srcZ, destX, destZ, rotatedWidth, rotatedHeight, rotatedBlockAccess); } - static reachWall(flags: CollisionFlagMap, level: number, srcX: number, srcZ: number, destX: number, destZ: number, srcSize: number, shape: number, angle: number): boolean { - if (srcSize === 1 && srcX === destX && srcZ === destZ) { + @inline + private static reachWall(flags: CollisionFlagMap, level: i32, srcX: i32, srcZ: i32, destX: i32, destZ: i32, srcSize: i8, shape: i8, angle: i8): bool { + if (srcSize == 1 && srcX == destX && srcZ == destZ) { return true; - } else if (srcSize !== 1 && destX >= srcX && srcSize + srcX - 1 >= destX && destZ >= srcZ && srcSize + srcZ - 1 >= destZ) { + } else if (srcSize != 1 && destX >= srcX && srcSize + srcX - 1 >= destX && destZ >= srcZ && srcSize + srcZ - 1 >= destZ) { return true; - } else if (srcSize === 1) { + } else if (srcSize == 1) { return this.reachWall1(flags, level, srcX, srcZ, destX, destZ, shape, angle); } return this.reachWallN(flags, level, srcX, srcZ, destX, destZ, srcSize, shape, angle); } - static reachWallDecor(flags: CollisionFlagMap, level: number, srcX: number, srcZ: number, destX: number, destZ: number, srcSize: number, shape: number, angle: number): boolean { - if (srcSize === 1 && srcX === destX && srcZ === destZ) { + @inline + private static reachWallDecor(flags: CollisionFlagMap, level: i32, srcX: i32, srcZ: i32, destX: i32, destZ: i32, srcSize: i8, shape: i8, angle: i8): bool { + if (srcSize == 1 && srcX == destX && srcZ == destZ) { return true; - } else if (srcSize !== 1 && destX >= srcX && srcSize + srcX - 1 >= destX && destZ >= srcZ && srcSize + srcZ - 1 >= destZ) { + } else if (srcSize != 1 && destX >= srcX && srcSize + srcX - 1 >= destX && destZ >= srcZ && srcSize + srcZ - 1 >= destZ) { return true; - } else if (srcSize === 1) { + } else if (srcSize == 1) { return this.reachWallDecor1(flags, level, srcX, srcZ, destX, destZ, shape, angle); } return this.reachWallDecorN(flags, level, srcX, srcZ, destX, destZ, srcSize, shape, angle); } - static reachWall1(flags: CollisionFlagMap, level: number, srcX: number, srcZ: number, destX: number, destZ: number, shape: number, angle: number): boolean { - const collisionFlags: number = flags.get(srcX, srcZ, level); - if (shape === 0) { - if (angle === 0) { - if (srcX === destX - 1 && srcZ === destZ) { + @inline + private static reachWall1(flags: CollisionFlagMap, level: i32, srcX: i32, srcZ: i32, destX: i32, destZ: i32, shape: i8, angle: i8): bool { + const collisionFlags: i32 = flags.get(srcX, srcZ, level); + if (shape == LocShape.WALL_STRAIGHT) { + if (angle == LocAngle.WEST) { + if (srcX == destX - 1 && srcZ == destZ) { return true; - } else if (srcX === destX && srcZ === destZ + 1 && (collisionFlags & CollisionFlag.BLOCK_NORTH) === CollisionFlag.OPEN) { + } else if (srcX == destX && srcZ == destZ + 1 && (collisionFlags & CollisionFlag.BLOCK_NORTH) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX && srcZ === destZ - 1 && (collisionFlags & CollisionFlag.BLOCK_SOUTH) === CollisionFlag.OPEN) { + } else if (srcX == destX && srcZ == destZ - 1 && (collisionFlags & CollisionFlag.BLOCK_SOUTH) == CollisionFlag.OPEN) { return true; } return false; - } else if (angle === 1) { - if (srcX === destX && srcZ === destZ + 1) { + } else if (angle == LocAngle.NORTH) { + if (srcX == destX && srcZ == destZ + 1) { return true; - } else if (srcX === destX - 1 && srcZ === destZ && (collisionFlags & CollisionFlag.BLOCK_WEST) === CollisionFlag.OPEN) { + } else if (srcX == destX - 1 && srcZ == destZ && (collisionFlags & CollisionFlag.BLOCK_WEST) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX + 1 && srcZ === destZ && (collisionFlags & CollisionFlag.BLOCK_EAST) === CollisionFlag.OPEN) { + } else if (srcX == destX + 1 && srcZ == destZ && (collisionFlags & CollisionFlag.BLOCK_EAST) == CollisionFlag.OPEN) { return true; } return false; - } else if (angle === 2) { - if (srcX === destX + 1 && srcZ === destZ) { + } else if (angle == LocAngle.EAST) { + if (srcX == destX + 1 && srcZ == destZ) { return true; - } else if (srcX === destX && srcZ === destZ + 1 && (collisionFlags & CollisionFlag.BLOCK_NORTH) === CollisionFlag.OPEN) { + } else if (srcX == destX && srcZ == destZ + 1 && (collisionFlags & CollisionFlag.BLOCK_NORTH) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX && srcZ === destZ - 1 && (collisionFlags & CollisionFlag.BLOCK_SOUTH) === CollisionFlag.OPEN) { + } else if (srcX == destX && srcZ == destZ - 1 && (collisionFlags & CollisionFlag.BLOCK_SOUTH) == CollisionFlag.OPEN) { return true; } return false; - } else if (angle === 3) { - if (srcX === destX && srcZ === destZ - 1) { + } else if (angle == LocAngle.SOUTH) { + if (srcX == destX && srcZ == destZ - 1) { return true; - } else if (srcX === destX - 1 && srcZ === destZ && (collisionFlags & CollisionFlag.BLOCK_WEST) === CollisionFlag.OPEN) { + } else if (srcX == destX - 1 && srcZ == destZ && (collisionFlags & CollisionFlag.BLOCK_WEST) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX + 1 && srcZ === destZ && (collisionFlags & CollisionFlag.BLOCK_EAST) === CollisionFlag.OPEN) { + } else if (srcX == destX + 1 && srcZ == destZ && (collisionFlags & CollisionFlag.BLOCK_EAST) == CollisionFlag.OPEN) { return true; } return false; } return false; - } else if (shape === 2) { - if (angle === 0) { - if (srcX === destX - 1 && srcZ === destZ) { + } else if (shape == LocShape.WALL_L) { + if (angle == LocAngle.WEST) { + if (srcX == destX - 1 && srcZ == destZ) { return true; - } else if (srcX === destX && srcZ === destZ + 1) { + } else if (srcX == destX && srcZ == destZ + 1) { return true; - } else if (srcX === destX + 1 && srcZ === destZ && (collisionFlags & CollisionFlag.BLOCK_EAST) === CollisionFlag.OPEN) { + } else if (srcX == destX + 1 && srcZ == destZ && (collisionFlags & CollisionFlag.BLOCK_EAST) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX && srcZ === destZ - 1 && (collisionFlags & CollisionFlag.BLOCK_SOUTH) === CollisionFlag.OPEN) { + } else if (srcX == destX && srcZ == destZ - 1 && (collisionFlags & CollisionFlag.BLOCK_SOUTH) == CollisionFlag.OPEN) { return true; } return false; - } else if (angle === 1) { - if (srcX === destX - 1 && srcZ === destZ && (collisionFlags & CollisionFlag.BLOCK_WEST) === CollisionFlag.OPEN) { + } else if (angle == LocAngle.NORTH) { + if (srcX == destX - 1 && srcZ == destZ && (collisionFlags & CollisionFlag.BLOCK_WEST) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX && srcZ === destZ + 1) { + } else if (srcX == destX && srcZ == destZ + 1) { return true; - } else if (srcX === destX + 1 && srcZ === destZ) { + } else if (srcX == destX + 1 && srcZ == destZ) { return true; - } else if (srcX === destX && srcZ === destZ - 1 && (collisionFlags & CollisionFlag.BLOCK_SOUTH) === CollisionFlag.OPEN) { + } else if (srcX == destX && srcZ == destZ - 1 && (collisionFlags & CollisionFlag.BLOCK_SOUTH) == CollisionFlag.OPEN) { return true; } return false; - } else if (angle === 2) { - if (srcX === destX - 1 && srcZ === destZ && (collisionFlags & CollisionFlag.BLOCK_WEST) === CollisionFlag.OPEN) { + } else if (angle == LocAngle.EAST) { + if (srcX == destX - 1 && srcZ == destZ && (collisionFlags & CollisionFlag.BLOCK_WEST) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX && srcZ === destZ + 1 && (collisionFlags & CollisionFlag.BLOCK_NORTH) === CollisionFlag.OPEN) { + } else if (srcX == destX && srcZ == destZ + 1 && (collisionFlags & CollisionFlag.BLOCK_NORTH) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX + 1 && srcZ === destZ) { + } else if (srcX == destX + 1 && srcZ == destZ) { return true; - } else if (srcX === destX && srcZ === destZ - 1) { + } else if (srcX == destX && srcZ == destZ - 1) { return true; } return false; - } else if (angle === 3) { - if (srcX === destX - 1 && srcZ === destZ) { + } else if (angle == LocAngle.SOUTH) { + if (srcX == destX - 1 && srcZ == destZ) { return true; - } else if (srcX === destX && srcZ === destZ + 1 && (collisionFlags & CollisionFlag.BLOCK_NORTH) === CollisionFlag.OPEN) { + } else if (srcX == destX && srcZ == destZ + 1 && (collisionFlags & CollisionFlag.BLOCK_NORTH) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX + 1 && srcZ === destZ && (collisionFlags & CollisionFlag.BLOCK_EAST) === CollisionFlag.OPEN) { + } else if (srcX == destX + 1 && srcZ == destZ && (collisionFlags & CollisionFlag.BLOCK_EAST) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX && srcZ === destZ - 1) { + } else if (srcX == destX && srcZ == destZ - 1) { return true; } return false; } return false; - } else if (shape === 9) { - if (srcX === destX && srcZ === destZ + 1 && (collisionFlags & CollisionFlag.WALL_SOUTH) === CollisionFlag.OPEN) { + } else if (shape == LocShape.WALL_DIAGONAL) { + if (srcX == destX && srcZ == destZ + 1 && (collisionFlags & CollisionFlag.WALL_SOUTH) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX && srcZ === destZ - 1 && (collisionFlags & CollisionFlag.WALL_NORTH) === CollisionFlag.OPEN) { + } else if (srcX == destX && srcZ == destZ - 1 && (collisionFlags & CollisionFlag.WALL_NORTH) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX - 1 && srcZ === destZ && (collisionFlags & CollisionFlag.WALL_EAST) === CollisionFlag.OPEN) { + } else if (srcX == destX - 1 && srcZ == destZ && (collisionFlags & CollisionFlag.WALL_EAST) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX + 1 && srcZ === destZ && (collisionFlags & CollisionFlag.WALL_WEST) === CollisionFlag.OPEN) { + } else if (srcX == destX + 1 && srcZ == destZ && (collisionFlags & CollisionFlag.WALL_WEST) == CollisionFlag.OPEN) { return true; } return false; @@ -211,104 +220,105 @@ export default class ReachStrategy { return false; } - static reachWallN(flags: CollisionFlagMap, level: number, srcX: number, srcZ: number, destX: number, destZ: number, srcSize: number, shape: number, angle: number): boolean { - const collisionFlags: number = flags.get(srcX, srcZ, level); - const east: number = srcX + srcSize - 1; - const north: number = srcZ + srcSize - 1; - if (shape === 0) { - if (angle === 0) { - if (srcX === destX - srcSize && srcZ <= destZ && north >= destZ) { + @inline + private static reachWallN(flags: CollisionFlagMap, level: i32, srcX: i32, srcZ: i32, destX: i32, destZ: i32, srcSize: i8, shape: i8, angle: i8): bool { + const collisionFlags: i32 = flags.get(srcX, srcZ, level); + const east: i32 = srcX + srcSize - 1; + const north: i32 = srcZ + srcSize - 1; + if (shape == LocShape.WALL_STRAIGHT) { + if (angle == LocAngle.WEST) { + if (srcX == destX - srcSize && srcZ <= destZ && north >= destZ) { return true; - } else if (destX >= srcX && destX <= east && srcZ === destZ + 1 && (collisionFlags & CollisionFlag.BLOCK_NORTH) === CollisionFlag.OPEN) { + } else if (destX >= srcX && destX <= east && srcZ == destZ + 1 && (collisionFlags & CollisionFlag.BLOCK_NORTH) == CollisionFlag.OPEN) { return true; - } else if (destX >= srcX && destX <= east && srcZ === destZ - srcSize && (collisionFlags & CollisionFlag.BLOCK_SOUTH) === CollisionFlag.OPEN) { + } else if (destX >= srcX && destX <= east && srcZ == destZ - srcSize && (collisionFlags & CollisionFlag.BLOCK_SOUTH) == CollisionFlag.OPEN) { return true; } return false; - } else if (angle === 1) { - if (destX >= srcX && destX <= east && srcZ === destZ + 1) { + } else if (angle == LocAngle.NORTH) { + if (destX >= srcX && destX <= east && srcZ == destZ + 1) { return true; - } else if (srcX === destX - srcSize && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_WEST) === CollisionFlag.OPEN) { + } else if (srcX == destX - srcSize && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_WEST) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX + 1 && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_EAST) === CollisionFlag.OPEN) { + } else if (srcX == destX + 1 && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_EAST) == CollisionFlag.OPEN) { return true; } return false; - } else if (angle === 2) { - if (srcX === destX + 1 && srcZ <= destZ && north >= destZ) { + } else if (angle == LocAngle.EAST) { + if (srcX == destX + 1 && srcZ <= destZ && north >= destZ) { return true; - } else if (destX >= srcX && destX <= east && srcZ === destZ + 1 && (collisionFlags & CollisionFlag.BLOCK_NORTH) === CollisionFlag.OPEN) { + } else if (destX >= srcX && destX <= east && srcZ == destZ + 1 && (collisionFlags & CollisionFlag.BLOCK_NORTH) == CollisionFlag.OPEN) { return true; - } else if (destX >= srcX && destX <= east && srcZ === destZ - srcSize && (collisionFlags & CollisionFlag.BLOCK_SOUTH) === CollisionFlag.OPEN) { + } else if (destX >= srcX && destX <= east && srcZ == destZ - srcSize && (collisionFlags & CollisionFlag.BLOCK_SOUTH) == CollisionFlag.OPEN) { return true; } return false; - } else if (angle === 3) { - if (destX >= srcX && destX <= east && srcZ === destZ - srcSize) { + } else if (angle == LocAngle.SOUTH) { + if (destX >= srcX && destX <= east && srcZ == destZ - srcSize) { return true; - } else if (srcX === destX - srcSize && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_WEST) === CollisionFlag.OPEN) { + } else if (srcX == destX - srcSize && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_WEST) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX + 1 && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_EAST) === CollisionFlag.OPEN) { + } else if (srcX == destX + 1 && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_EAST) == CollisionFlag.OPEN) { return true; } return false; } return false; - } else if (shape === 2) { - if (angle === 0) { - if (srcX === destX - srcSize && srcZ <= destZ && north >= destZ) { + } else if (shape == LocShape.WALL_L) { + if (angle == LocAngle.WEST) { + if (srcX == destX - srcSize && srcZ <= destZ && north >= destZ) { return true; - } else if (destX >= srcX && destX <= east && srcZ === destZ + 1) { + } else if (destX >= srcX && destX <= east && srcZ == destZ + 1) { return true; - } else if (srcX === destX + 1 && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_EAST) === CollisionFlag.OPEN) { + } else if (srcX == destX + 1 && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_EAST) == CollisionFlag.OPEN) { return true; - } else if (destX >= srcX && destX <= east && srcZ === destZ - srcSize && (collisionFlags & CollisionFlag.BLOCK_SOUTH) === CollisionFlag.OPEN) { + } else if (destX >= srcX && destX <= east && srcZ == destZ - srcSize && (collisionFlags & CollisionFlag.BLOCK_SOUTH) == CollisionFlag.OPEN) { return true; } return false; - } else if (angle === 1) { - if (srcX === destX - srcSize && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_WEST) === CollisionFlag.OPEN) { + } else if (angle == LocAngle.NORTH) { + if (srcX == destX - srcSize && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_WEST) == CollisionFlag.OPEN) { return true; - } else if (destX >= srcX && destX <= east && srcZ === destZ + 1) { + } else if (destX >= srcX && destX <= east && srcZ == destZ + 1) { return true; - } else if (srcX === destX + 1 && srcZ <= destZ && north >= destZ) { + } else if (srcX == destX + 1 && srcZ <= destZ && north >= destZ) { return true; - } else if (destX >= srcX && destX <= east && srcZ === destZ - srcSize && (collisionFlags & CollisionFlag.BLOCK_SOUTH) === CollisionFlag.OPEN) { + } else if (destX >= srcX && destX <= east && srcZ == destZ - srcSize && (collisionFlags & CollisionFlag.BLOCK_SOUTH) == CollisionFlag.OPEN) { return true; } return false; - } else if (angle === 2) { - if (srcX === destX - srcSize && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_WEST) === CollisionFlag.OPEN) { + } else if (angle == LocAngle.EAST) { + if (srcX == destX - srcSize && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_WEST) == CollisionFlag.OPEN) { return true; - } else if (destX >= srcX && destX <= east && srcZ === destZ + 1 && (collisionFlags & CollisionFlag.BLOCK_NORTH) === CollisionFlag.OPEN) { + } else if (destX >= srcX && destX <= east && srcZ == destZ + 1 && (collisionFlags & CollisionFlag.BLOCK_NORTH) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX + 1 && srcZ <= destZ && north >= destZ) { + } else if (srcX == destX + 1 && srcZ <= destZ && north >= destZ) { return true; - } else if (destX >= srcX && destX <= east && srcZ === destZ - srcSize) { + } else if (destX >= srcX && destX <= east && srcZ == destZ - srcSize) { return true; } return false; - } else if (angle === 3) { - if (srcX === destX - srcSize && srcZ <= destZ && north >= destZ) { + } else if (angle == LocAngle.SOUTH) { + if (srcX == destX - srcSize && srcZ <= destZ && north >= destZ) { return true; - } else if (destX >= srcX && destX <= east && srcZ === destZ + 1 && (collisionFlags & CollisionFlag.BLOCK_NORTH) === CollisionFlag.OPEN) { + } else if (destX >= srcX && destX <= east && srcZ == destZ + 1 && (collisionFlags & CollisionFlag.BLOCK_NORTH) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX + 1 && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_EAST) === CollisionFlag.OPEN) { + } else if (srcX == destX + 1 && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_EAST) == CollisionFlag.OPEN) { return true; - } else if (destX >= srcX && destX <= east && srcZ === destZ - srcSize) { + } else if (destX >= srcX && destX <= east && srcZ == destZ - srcSize) { return true; } return false; } return false; - } else if (shape === 9) { - if (destX >= srcX && destX <= east && srcZ === destZ + 1 && (collisionFlags & CollisionFlag.BLOCK_NORTH) === CollisionFlag.OPEN) { + } else if (shape == LocShape.WALL_DIAGONAL) { + if (destX >= srcX && destX <= east && srcZ == destZ + 1 && (collisionFlags & CollisionFlag.BLOCK_NORTH) == CollisionFlag.OPEN) { return true; - } else if (destX >= srcX && destX <= east && srcZ === destZ - srcSize && (collisionFlags & CollisionFlag.BLOCK_SOUTH) === CollisionFlag.OPEN) { + } else if (destX >= srcX && destX <= east && srcZ == destZ - srcSize && (collisionFlags & CollisionFlag.BLOCK_SOUTH) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX - srcSize && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_WEST) === CollisionFlag.OPEN) { + } else if (srcX == destX - srcSize && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_WEST) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX + 1 && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_EAST) === CollisionFlag.OPEN) { + } else if (srcX == destX + 1 && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.BLOCK_EAST) == CollisionFlag.OPEN) { return true; } return false; @@ -316,47 +326,48 @@ export default class ReachStrategy { return false; } - static reachWallDecor1(flags: CollisionFlagMap, level: number, srcX: number, srcZ: number, destX: number, destZ: number, shape: number, angle: number): boolean { - const collisionFlags: number = flags.get(srcX, srcZ, level); - if (shape === 6 || shape === 7) { - const number: number = this.alteredRotation(angle, shape); - if (number === 0) { - if (srcX === destX + 1 && srcZ === destZ && (collisionFlags & CollisionFlag.WALL_WEST) === CollisionFlag.OPEN) { + @inline + private static reachWallDecor1(flags: CollisionFlagMap, level: i32, srcX: i32, srcZ: i32, destX: i32, destZ: i32, shape: i8, angle: i8): bool { + const collisionFlags: i32 = flags.get(srcX, srcZ, level); + if (shape == LocShape.WALLDECOR_DIAGONAL_OFFSET || shape == LocShape.WALLDECOR_DIAGONAL_NOOFFSET) { + const alteredAngle: i32 = this.alteredRotation(angle, shape); + if (alteredAngle == LocAngle.WEST) { + if (srcX == destX + 1 && srcZ == destZ && (collisionFlags & CollisionFlag.WALL_WEST) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX && srcZ === destZ - 1 && (collisionFlags & CollisionFlag.WALL_NORTH) === CollisionFlag.OPEN) { + } else if (srcX == destX && srcZ == destZ - 1 && (collisionFlags & CollisionFlag.WALL_NORTH) == CollisionFlag.OPEN) { return true; } return false; - } else if (number === 1) { - if (srcX === destX - 1 && srcZ === destZ && (collisionFlags & CollisionFlag.WALL_EAST) === CollisionFlag.OPEN) { + } else if (alteredAngle == LocAngle.NORTH) { + if (srcX == destX - 1 && srcZ == destZ && (collisionFlags & CollisionFlag.WALL_EAST) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX && srcZ === destZ - 1 && (collisionFlags & CollisionFlag.WALL_NORTH) === CollisionFlag.OPEN) { + } else if (srcX == destX && srcZ == destZ - 1 && (collisionFlags & CollisionFlag.WALL_NORTH) == CollisionFlag.OPEN) { return true; } return false; - } else if (number === 2) { - if (srcX === destX - 1 && srcZ === destZ && (collisionFlags & CollisionFlag.WALL_EAST) === CollisionFlag.OPEN) { + } else if (alteredAngle == LocAngle.EAST) { + if (srcX == destX - 1 && srcZ == destZ && (collisionFlags & CollisionFlag.WALL_EAST) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX && srcZ === destZ + 1 && (collisionFlags & CollisionFlag.WALL_SOUTH) === CollisionFlag.OPEN) { + } else if (srcX == destX && srcZ == destZ + 1 && (collisionFlags & CollisionFlag.WALL_SOUTH) == CollisionFlag.OPEN) { return true; } return false; - } else if (number === 3) { - if (srcX === destX + 1 && srcZ === destZ && (collisionFlags & CollisionFlag.WALL_WEST) === CollisionFlag.OPEN) { + } else if (alteredAngle == LocAngle.SOUTH) { + if (srcX == destX + 1 && srcZ == destZ && (collisionFlags & CollisionFlag.WALL_WEST) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX && srcZ === destZ + 1 && (collisionFlags & CollisionFlag.WALL_SOUTH) === CollisionFlag.OPEN) { + } else if (srcX == destX && srcZ == destZ + 1 && (collisionFlags & CollisionFlag.WALL_SOUTH) == CollisionFlag.OPEN) { return true; } } return false; - } else if (shape === 8) { - if (srcX === destX && srcZ === destZ + 1 && (collisionFlags & CollisionFlag.WALL_SOUTH) === CollisionFlag.OPEN) { + } else if (shape == LocShape.WALLDECOR_DIAGONAL_BOTH) { + if (srcX == destX && srcZ == destZ + 1 && (collisionFlags & CollisionFlag.WALL_SOUTH) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX && srcZ === destZ - 1 && (collisionFlags & CollisionFlag.WALL_NORTH) === CollisionFlag.OPEN) { + } else if (srcX == destX && srcZ == destZ - 1 && (collisionFlags & CollisionFlag.WALL_NORTH) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX - 1 && srcZ === destZ && (collisionFlags & CollisionFlag.WALL_EAST) === CollisionFlag.OPEN) { + } else if (srcX == destX - 1 && srcZ == destZ && (collisionFlags & CollisionFlag.WALL_EAST) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX + 1 && srcZ === destZ && (collisionFlags & CollisionFlag.WALL_WEST) === CollisionFlag.OPEN) { + } else if (srcX == destX + 1 && srcZ == destZ && (collisionFlags & CollisionFlag.WALL_WEST) == CollisionFlag.OPEN) { return true; } return false; @@ -364,50 +375,51 @@ export default class ReachStrategy { return false; } - static reachWallDecorN(flags: CollisionFlagMap, level: number, srcX: number, srcZ: number, destX: number, destZ: number, srcSize: number, shape: number, angle: number): boolean { - const collisionFlags: number = flags.get(srcX, srcZ, level); - const east: number = srcX + srcSize - 1; - const north: number = srcZ + srcSize - 1; - if (shape === 6 || shape === 7) { - const number: number = this.alteredRotation(angle, shape); - if (number === 0) { - if (srcX === destX + 1 && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.WALL_WEST) === CollisionFlag.OPEN) { - return true; - } else if (srcX <= destX && srcZ === destZ - srcSize && east >= destX && (collisionFlags & CollisionFlag.WALL_NORTH) === CollisionFlag.OPEN) { + @inline + private static reachWallDecorN(flags: CollisionFlagMap, level: i32, srcX: i32, srcZ: i32, destX: i32, destZ: i32, srcSize: i8, shape: i8, angle: i8): bool { + const collisionFlags: i32 = flags.get(srcX, srcZ, level); + const east: i32 = srcX + srcSize - 1; + const north: i32 = srcZ + srcSize - 1; + if (shape == LocShape.WALLDECOR_DIAGONAL_OFFSET || shape == LocShape.WALLDECOR_DIAGONAL_NOOFFSET) { + const alteredAngle: i32 = this.alteredRotation(angle, shape); + if (alteredAngle == LocAngle.WEST) { + if (srcX == destX + 1 && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.WALL_WEST) == CollisionFlag.OPEN) { + return true; + } else if (srcX <= destX && srcZ == destZ - srcSize && east >= destX && (collisionFlags & CollisionFlag.WALL_NORTH) == CollisionFlag.OPEN) { return true; } return false; - } else if (number === 1) { - if (srcX === destX - srcSize && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.WALL_EAST) === CollisionFlag.OPEN) { + } else if (alteredAngle == LocAngle.NORTH) { + if (srcX == destX - srcSize && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.WALL_EAST) == CollisionFlag.OPEN) { return true; - } else if (srcX <= destX && srcZ === destZ - srcSize && east >= destX && (collisionFlags & CollisionFlag.WALL_NORTH) === CollisionFlag.OPEN) { + } else if (srcX <= destX && srcZ == destZ - srcSize && east >= destX && (collisionFlags & CollisionFlag.WALL_NORTH) == CollisionFlag.OPEN) { return true; } return false; - } else if (number === 2) { - if (srcX === destX - srcSize && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.WALL_EAST) === CollisionFlag.OPEN) { + } else if (alteredAngle == LocAngle.EAST) { + if (srcX == destX - srcSize && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.WALL_EAST) == CollisionFlag.OPEN) { return true; - } else if (srcX <= destX && srcZ === destZ + 1 && east >= destX && (collisionFlags & CollisionFlag.WALL_SOUTH) === CollisionFlag.OPEN) { + } else if (srcX <= destX && srcZ == destZ + 1 && east >= destX && (collisionFlags & CollisionFlag.WALL_SOUTH) == CollisionFlag.OPEN) { return true; } return false; - } else if (number === 3) { - if (srcX === destX + 1 && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.WALL_WEST) === CollisionFlag.OPEN) { + } else if (alteredAngle == LocAngle.SOUTH) { + if (srcX == destX + 1 && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.WALL_WEST) == CollisionFlag.OPEN) { return true; - } else if (srcX <= destX && srcZ === destZ + 1 && east >= destX && (collisionFlags & CollisionFlag.WALL_SOUTH) === CollisionFlag.OPEN) { + } else if (srcX <= destX && srcZ == destZ + 1 && east >= destX && (collisionFlags & CollisionFlag.WALL_SOUTH) == CollisionFlag.OPEN) { return true; } return false; } return false; - } else if (shape === 8) { - if (srcX <= destX && srcZ === destZ + 1 && east >= destX && (collisionFlags & CollisionFlag.WALL_SOUTH) === 0) { + } else if (shape == LocShape.WALLDECOR_DIAGONAL_BOTH) { + if (srcX <= destX && srcZ == destZ + 1 && east >= destX && (collisionFlags & CollisionFlag.WALL_SOUTH) == 0) { return true; - } else if (srcX <= destX && srcZ === destZ - srcSize && east >= destX && (collisionFlags & CollisionFlag.WALL_NORTH) === CollisionFlag.OPEN) { + } else if (srcX <= destX && srcZ == destZ - srcSize && east >= destX && (collisionFlags & CollisionFlag.WALL_NORTH) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX - srcSize && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.WALL_EAST) === CollisionFlag.OPEN) { + } else if (srcX == destX - srcSize && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.WALL_EAST) == CollisionFlag.OPEN) { return true; - } else if (srcX === destX + 1 && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.WALL_WEST) === CollisionFlag.OPEN) { + } else if (srcX == destX + 1 && srcZ <= destZ && north >= destZ && (collisionFlags & CollisionFlag.WALL_WEST) == CollisionFlag.OPEN) { return true; } return false; diff --git a/src/rsmod/reach/RectangleBoundaryUtils.ts b/src/rsmod/reach/RectangleBoundaryUtils.ts index 7e7f6ef..39316c4 100644 --- a/src/rsmod/reach/RectangleBoundaryUtils.ts +++ b/src/rsmod/reach/RectangleBoundaryUtils.ts @@ -1,66 +1,70 @@ import CollisionFlagMap from '../collision/CollisionFlagMap'; +import {CollisionFlag} from '../flag/CollisionFlag'; import BlockAccessFlag from '../flag/BlockAccessFlag'; -import CollisionFlag from '../flag/CollisionFlag'; +@final export default class RectangleBoundaryUtils { - static collides(srcX: number, srcZ: number, destX: number, destZ: number, srcWidth: number, srcHeight: number, destWidth: number, destHeight: number): boolean { + @inline + static collides(srcX: i32, srcZ: i32, destX: i32, destZ: i32, srcWidth: i32, srcHeight: i32, destWidth: i32, destHeight: i32): bool { return srcX >= destX + destWidth || srcX + srcWidth <= destX ? false : srcZ < destZ + destHeight && destZ < srcHeight + srcZ; } - static reachRectangle1(flags: CollisionFlagMap, level: number, srcX: number, srcZ: number, destX: number, destZ: number, destWidth: number, destHeight: number, blockAccessFlags: number): boolean { - const east: number = destX + destWidth - 1; - const north: number = destZ + destHeight - 1; + @inline + static reachRectangle1(flags: CollisionFlagMap, level: i32, srcX: i32, srcZ: i32, destX: i32, destZ: i32, destWidth: i32, destHeight: i32, blockAccessFlags: i32): bool { + const east: i32 = destX + destWidth - 1; + const north: i32 = destZ + destHeight - 1; - if (srcX === destX - 1 && srcZ >= destZ && srcZ <= north && (flags.get(srcX, srcZ, level) & CollisionFlag.WALL_EAST) === 0 && (blockAccessFlags & BlockAccessFlag.BLOCK_WEST) === 0) { + if (srcX == destX - 1 && srcZ >= destZ && srcZ <= north && (flags.get(srcX, srcZ, level) & CollisionFlag.WALL_EAST) == 0 && (blockAccessFlags & BlockAccessFlag.BLOCK_WEST) == 0) { return true; } - if (srcX === east + 1 && srcZ >= destZ && srcZ <= north && (flags.get(srcX, srcZ, level) & CollisionFlag.WALL_WEST) === 0 && (blockAccessFlags & BlockAccessFlag.BLOCK_EAST) === 0) { + if (srcX == east + 1 && srcZ >= destZ && srcZ <= north && (flags.get(srcX, srcZ, level) & CollisionFlag.WALL_WEST) == 0 && (blockAccessFlags & BlockAccessFlag.BLOCK_EAST) == 0) { return true; } - if (srcZ + 1 === destZ && srcX >= destX && srcX <= east && (flags.get(srcX, srcZ, level) & CollisionFlag.WALL_NORTH) === 0 && (blockAccessFlags & BlockAccessFlag.BLOCK_SOUTH) === 0) { + if (srcZ + 1 == destZ && srcX >= destX && srcX <= east && (flags.get(srcX, srcZ, level) & CollisionFlag.WALL_NORTH) == 0 && (blockAccessFlags & BlockAccessFlag.BLOCK_SOUTH) == 0) { return true; } - return srcZ === north + 1 && srcX >= destX && srcX <= east && (flags.get(srcX, srcZ, level) & CollisionFlag.WALL_SOUTH) === 0 && (blockAccessFlags & BlockAccessFlag.BLOCK_NORTH) === 0; + return srcZ == north + 1 && srcX >= destX && srcX <= east && (flags.get(srcX, srcZ, level) & CollisionFlag.WALL_SOUTH) == 0 && (blockAccessFlags & BlockAccessFlag.BLOCK_NORTH) == 0; } - static reachRectangleN(flags: CollisionFlagMap, level: number, srcX: number, srcZ: number, destX: number, destZ: number, srcWidth: number, srcHeight: number, destWidth: number, destHeight: number, blockAccessFlags: number): boolean { - const srcEast: number = srcX + srcWidth; - const srcNorth: number = srcHeight + srcZ; - const destEast: number = destWidth + destX; - const destNorth: number = destHeight + destZ; + @inline + static reachRectangleN(flags: CollisionFlagMap, level: i32, srcX: i32, srcZ: i32, destX: i32, destZ: i32, srcWidth: i32, srcHeight: i32, destWidth: i32, destHeight: i32, blockAccessFlags: i32): bool { + const srcEast: i32 = srcX + srcWidth; + const srcNorth: i32 = srcHeight + srcZ; + const destEast: i32 = destWidth + destX; + const destNorth: i32 = destHeight + destZ; - if (destEast === srcX && (blockAccessFlags & BlockAccessFlag.BLOCK_EAST) === CollisionFlag.OPEN) { - const fromZ: number = Math.max(srcZ, destZ); - const toZ: number = Math.min(srcNorth, destNorth); - for (let sideZ: number = fromZ; sideZ < toZ; sideZ++) { - if ((flags.get(destEast - 1, sideZ, level) & CollisionFlag.WALL_EAST) === CollisionFlag.OPEN) { + if (destEast == srcX && (blockAccessFlags & BlockAccessFlag.BLOCK_EAST) == CollisionFlag.OPEN) { + const fromZ: i32 = Math.max(srcZ, destZ); + const toZ: i32 = Math.min(srcNorth, destNorth); + for (let sideZ: i32 = fromZ; sideZ < toZ; sideZ++) { + if ((flags.get(destEast - 1, sideZ, level) & CollisionFlag.WALL_EAST) == CollisionFlag.OPEN) { return true; } } - } else if (srcEast === destX && (blockAccessFlags & BlockAccessFlag.BLOCK_WEST) === CollisionFlag.OPEN) { - const fromZ: number = Math.max(srcZ, destZ); - const toZ: number = Math.min(srcNorth, destNorth); - for (let sideZ: number = fromZ; sideZ < toZ; sideZ++) { - if ((flags.get(destX, sideZ, level) & CollisionFlag.WALL_WEST) === CollisionFlag.OPEN) { + } else if (srcEast == destX && (blockAccessFlags & BlockAccessFlag.BLOCK_WEST) == CollisionFlag.OPEN) { + const fromZ: i32 = Math.max(srcZ, destZ); + const toZ: i32 = Math.min(srcNorth, destNorth); + for (let sideZ: i32 = fromZ; sideZ < toZ; sideZ++) { + if ((flags.get(destX, sideZ, level) & CollisionFlag.WALL_WEST) == CollisionFlag.OPEN) { return true; } } - } else if (srcZ === destNorth && (blockAccessFlags & BlockAccessFlag.BLOCK_NORTH) === CollisionFlag.OPEN) { - const fromX: number = Math.max(srcX, destX); - const toX: number = Math.min(srcEast, destEast); - for (let sideX: number = fromX; sideX < toX; sideX++) { - if ((flags.get(sideX, destNorth - 1, level) & CollisionFlag.WALL_NORTH) === CollisionFlag.OPEN) { + } else if (srcZ == destNorth && (blockAccessFlags & BlockAccessFlag.BLOCK_NORTH) == CollisionFlag.OPEN) { + const fromX: i32 = Math.max(srcX, destX); + const toX: i32 = Math.min(srcEast, destEast); + for (let sideX: i32 = fromX; sideX < toX; sideX++) { + if ((flags.get(sideX, destNorth - 1, level) & CollisionFlag.WALL_NORTH) == CollisionFlag.OPEN) { return true; } } - } else if (destZ === srcNorth && (blockAccessFlags & BlockAccessFlag.BLOCK_SOUTH) === CollisionFlag.OPEN) { - const fromX: number = Math.max(srcX, destX); - const toX: number = Math.min(srcEast, destEast); - for (let sideX: number = fromX; sideX < toX; sideX++) { - if ((flags.get(sideX, destZ, level) & CollisionFlag.WALL_SOUTH) === CollisionFlag.OPEN) { + } else if (destZ == srcNorth && (blockAccessFlags & BlockAccessFlag.BLOCK_SOUTH) == CollisionFlag.OPEN) { + const fromX: i32 = Math.max(srcX, destX); + const toX: i32 = Math.min(srcEast, destEast); + for (let sideX: i32 = fromX; sideX < toX; sideX++) { + if ((flags.get(sideX, destZ, level) & CollisionFlag.WALL_SOUTH) == CollisionFlag.OPEN) { return true; } } diff --git a/src/rsmod/utils/RotationUtils.ts b/src/rsmod/utils/RotationUtils.ts index ec5bb0b..ab40345 100644 --- a/src/rsmod/utils/RotationUtils.ts +++ b/src/rsmod/utils/RotationUtils.ts @@ -1,9 +1,12 @@ +@final export default class RotationUtils { - static rotate(angle: number, dimensionA: number, dimensionB: number): number { - return (angle & 0x1) !== 0 ? dimensionB : dimensionA; + @inline + static rotate(angle: i8, dimensionA: i8, dimensionB: i8): i8 { + return (angle & 0x1) != 0 ? dimensionB : dimensionA; } - static rotateFlags(angle: number, blockAccessFlags: number): number { - return angle === 0 ? blockAccessFlags : ((blockAccessFlags << angle) & 0xf) | (blockAccessFlags >> (4 - angle)); + @inline + static rotateFlags(angle: i8, blockAccessFlags: i8): i8 { + return angle == 0 ? blockAccessFlags : ((blockAccessFlags << angle) & 0xf) | (blockAccessFlags >> (4 - angle)); } } diff --git a/src/tsconfig.json b/src/tsconfig.json new file mode 100644 index 0000000..e28fcf2 --- /dev/null +++ b/src/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "assemblyscript/std/assembly.json", + "include": [ + "./**/*.ts" + ] +} \ No newline at end of file diff --git a/test/rsmod/LinePathFinder.test.ts b/test/rsmod/LinePathFinder.test.ts deleted file mode 100644 index 6384774..0000000 --- a/test/rsmod/LinePathFinder.test.ts +++ /dev/null @@ -1,224 +0,0 @@ -import CollisionFlagMap from '../../src/rsmod/collision/CollisionFlagMap'; -import CollisionFlag from '../../src/rsmod/flag/CollisionFlag'; -import LinePathFinder from '../../src/rsmod/LinePathFinder'; - -function buildCollisionMap(x1: number, z1: number, x2: number, z2: number) { - const map = new CollisionFlagMap(); - for (let level = 0; level < 4; level++) { - for (let z = Math.min(z1, z2); z <= Math.max(z1, z2); z++) { - for (let x = Math.min(x1, x2); x <= Math.max(x1, x2); x++) { - map.allocateIfAbsent(x, z, level); - } - } - } - return map; -} - -describe('LinePathFinder', () => { - const srcX = 3200; - const srcZ = 3200; - - const args = [ - [ 0, -1 ], - [ 0, 1 ], - [ -1, 0 ], - [ 1, 0 ] - ]; - - const flags = [ - CollisionFlag.OPEN, - CollisionFlag.FLOOR, - CollisionFlag.FLOOR_DECORATION, - CollisionFlag.FLOOR | CollisionFlag.FLOOR_DECORATION - ]; - - const extraFlags = [ - CollisionFlag.PLAYER, - CollisionFlag.NPC, - CollisionFlag.PLAYER | CollisionFlag.NPC - ]; - - describe('line of walk', () => { - test('test same tile has line of walk', () => { - const map = new CollisionFlagMap(); - map.allocateIfAbsent(srcX, srcZ, 0); - - const pf = new LinePathFinder(map); - const rayCast = pf.lineOfWalk(0, srcX, srcZ, srcX, srcZ); - - expect(rayCast.success).toBeTruthy(); - }); - - describe('with flags', () => { - test('test partial line of walk', () => { - const map = new CollisionFlagMap(); - map.set(3200, 3205, 0, CollisionFlag.LOC); - - const pf = new LinePathFinder(map); - const rayCast = pf.lineOfWalk(0, srcX, srcZ, 3200, 3207); - - expect(rayCast.coordinates.length).toBe(4); - expect(rayCast.success).toBeFalsy(); - expect(rayCast.alternative).toBeTruthy(); - }); - - test.each(args)('test clear line of walk', (dirX, dirZ) => { - const destX = srcX + (dirX * 3); - const destZ = srcZ + (dirZ * 3); - - const map = buildCollisionMap(srcX, srcZ, destX, destZ); - - for (let level = 0; level < 4; level++) { - map.allocateIfAbsent(srcX + dirX, srcZ + dirZ, level); - - const pf = new LinePathFinder(map); - const rayCast = pf.lineOfWalk(level, srcX, srcZ, destX, destZ); - - expect(rayCast.coordinates.length).not.toBe(0); - expect(rayCast.success).toBeTruthy(); - expect(rayCast.alternative).toBeFalsy(); - } - }); - - test.each(args)('test loc blocking', (dirX, dirZ) => { - const destX = srcX + (dirX * 3); - const destZ = srcZ + (dirZ * 3); - - const map = buildCollisionMap(srcX, srcZ, destX, destZ); - - for (let level = 0; level < 4; level++) { - map.set(srcX + dirX, srcZ + dirZ, level, CollisionFlag.LOC); - - const pf = new LinePathFinder(map); - const rayCast = pf.lineOfWalk(level, srcX, srcZ, destX, destZ); - - expect(rayCast.success).toBeFalsy(); - } - }); - - test.each(args)('test extra flag blocking', (dirX, dirZ) => { - const destX = srcX + (dirX * 3); - const destZ = srcZ + (dirZ * 3); - - const map = buildCollisionMap(srcX, srcZ, destX, destZ); - - for (let level = 0; level < 4; level++) { - for (const flag of extraFlags) { - map.set(srcX + dirX, srcZ + dirZ, level, flag); - - const pf = new LinePathFinder(map); - const rayCast = pf.lineOfWalk(level, srcX, srcZ, destX, destZ, 1, 0, 0, flag); - - expect(rayCast.success).toBeFalsy(); - } - } - }); - }); - }); - - describe('line of sight', () => { - test('test on top of loc fails line of sight', () => { - const map = new CollisionFlagMap(); - map.add(srcX, srcZ, 0, CollisionFlag.LOC); - - const pf = new LinePathFinder(map); - const rayCast = pf.lineOfSight(0, srcX, srcZ, 3200, 3201); - - expect(rayCast.coordinates.length).toBe(0); - expect(rayCast.success).toBeFalsy(); - expect(rayCast.alternative).toBeFalsy(); - }); - - test('test on top of extra flag fails line of sight', () => { - const map = new CollisionFlagMap(); - map.add(srcX, srcZ, 0, CollisionFlag.PLAYER); - - const pf = new LinePathFinder(map); - const rayCast = pf.lineOfSight(0, srcX, srcZ, 3200, 3201, 1, 0, 0, CollisionFlag.PLAYER); - - expect(rayCast.coordinates.length).toBe(0); - expect(rayCast.success).toBeFalsy(); - expect(rayCast.alternative).toBeFalsy(); - }); - - test('test same tile has line of sight', () => { - const map = new CollisionFlagMap(); - map.allocateIfAbsent(srcX, srcZ, 0); - - const pf = new LinePathFinder(map); - const rayCast = pf.lineOfSight(0, srcX, srcZ, srcX, srcZ); - - expect(rayCast.coordinates.length).toBe(0); - expect(rayCast.success).toBeTruthy(); - expect(rayCast.alternative).toBeFalsy(); - }); - - describe('with flags', () => { - test('test partial line of sight', () => { - const map = new CollisionFlagMap(); - map.set(3200, 3205, 0, CollisionFlag.LOC_PROJ_BLOCKER); - - const pf = new LinePathFinder(map); - const rayCast = pf.lineOfSight(0, srcX, srcZ, 3200, 3207); - - expect(rayCast.coordinates.length).toBe(4); - expect(rayCast.success).toBeFalsy(); - expect(rayCast.alternative).toBeTruthy(); - }); - - test.each(args)('test valid line of sight', (dirX, dirZ) => { - const destX = srcX + (dirX * 3); - const destZ = srcZ + (dirZ * 3); - - const map = buildCollisionMap(srcX, srcZ, destX, destZ); - - for (let level = 0; level < 4; level++) { - for (const flag of flags) { - map.set(srcX + dirX, srcZ + dirZ, level, flag); - - const pf = new LinePathFinder(map); - const rayCast = pf.lineOfSight(level, srcX, srcZ, destX, destZ); - - expect(rayCast.coordinates.length).not.toBe(0); - expect(rayCast.success).toBeTruthy(); - expect(rayCast.alternative).toBeFalsy(); - } - } - }); - - test.each(args)('test loc blocking', (dirX, dirZ) => { - const destX = srcX + (dirX * 3); - const destZ = srcZ + (dirZ * 3); - - const map = buildCollisionMap(srcX, srcZ, destX, destZ); - - for (let level = 0; level < 4; level++) { - map.set(srcX +dirX, srcZ + dirZ, level, CollisionFlag.LOC_PROJ_BLOCKER); - - const pf = new LinePathFinder(map); - const rayCast = pf.lineOfSight(level, srcX, srcZ, destX, destZ); - - expect(rayCast.success).toBeFalsy(); - } - }); - - test.each(args)('test extra flag blocking', (dirX, dirZ) => { - const destX = srcX + (dirX * 3); - const destZ = srcZ + (dirZ * 3); - - const map = buildCollisionMap(srcX, srcZ, destX, destZ); - - for (let level = 0; level < 4; level++) { - for (const flag of extraFlags) { - map.set(srcX + dirX, srcZ + dirZ, level, flag); - - const pf = new LinePathFinder(map); - const rayCast = pf.lineOfSight(level, srcX, srcZ, destX, destZ, 1, 0, 0, flag); - - expect(rayCast.success).toBeFalsy(); - } - } - }); - }); - }); -}); \ No newline at end of file diff --git a/test/rsmod/LineValidator.test.ts b/test/rsmod/LineValidator.test.ts deleted file mode 100644 index 8d00e9a..0000000 --- a/test/rsmod/LineValidator.test.ts +++ /dev/null @@ -1,210 +0,0 @@ -import CollisionFlagMap from '../../src/rsmod/collision/CollisionFlagMap'; -import CollisionFlag from '../../src/rsmod/flag/CollisionFlag'; -import LineValidator from '../../src/rsmod/LineValidator'; - -function buildCollisionMap(x1: number, z1: number, x2: number, z2: number) { - const map = new CollisionFlagMap(); - for (let level = 0; level < 4; level++) { - for (let z = Math.min(z1, z2); z <= Math.max(z1, z2); z++) { - for (let x = Math.min(x1, x2); x <= Math.max(x1, x2); x++) { - map.allocateIfAbsent(x, z, level); - } - } - } - return map; -} - -describe('LineValidator', () => { - const srcX = 3200; - const srcZ = 3200; - - const args = [ - [ 0, -1 ], - [ 0, 1 ], - [ -1, 0 ], - [ 1, 0 ] - ]; - - const flags = [ - CollisionFlag.OPEN, - CollisionFlag.FLOOR, - CollisionFlag.FLOOR_DECORATION, - CollisionFlag.FLOOR | CollisionFlag.FLOOR_DECORATION - ]; - - const extraFlags = [ - CollisionFlag.PLAYER, - CollisionFlag.NPC, - CollisionFlag.PLAYER | CollisionFlag.NPC - ]; - - describe('line of walk', () => { - test('test same tile has line of walk', () => { - const map = new CollisionFlagMap(); - map.allocateIfAbsent(srcX, srcZ, 0); - - const pf = new LineValidator(map); - const low = pf.hasLineOfWalk(0, srcX, srcZ, srcX, srcZ); - - expect(low).toBeTruthy(); - }); - - describe('with flags', () => { - test('test partial line of walk', () => { - const map = new CollisionFlagMap(); - map.set(3200, 3205, 0, CollisionFlag.LOC); - - const pf = new LineValidator(map); - const low = pf.hasLineOfWalk(0, srcX, srcZ, 3200, 3207); - - expect(low).toBeFalsy(); - }); - - test.each(args)('test clear line of walk', (dirX, dirZ) => { - const destX = srcX + (dirX * 3); - const destZ = srcZ + (dirZ * 3); - - const map = buildCollisionMap(srcX, srcZ, destX, destZ); - - for (let level = 0; level < 4; level++) { - map.allocateIfAbsent(srcX + dirX, srcZ + dirZ, level); - - const pf = new LineValidator(map); - const low = pf.hasLineOfWalk(level, srcX, srcZ, destX, destZ); - - expect(low).toBeTruthy(); - } - }); - - test.each(args)('test loc blocking', (dirX, dirZ) => { - const destX = srcX + (dirX * 3); - const destZ = srcZ + (dirZ * 3); - - const map = buildCollisionMap(srcX, srcZ, destX, destZ); - - for (let level = 0; level < 4; level++) { - map.set(srcX + dirX, srcZ + dirZ, level, CollisionFlag.LOC); - - const pf = new LineValidator(map); - const low = pf.hasLineOfWalk(level, srcX, srcZ, destX, destZ); - - expect(low).toBeFalsy(); - } - }); - - test.each(args)('test extra flag blocking', (dirX, dirZ) => { - const destX = srcX + (dirX * 3); - const destZ = srcZ + (dirZ * 3); - - const map = buildCollisionMap(srcX, srcZ, destX, destZ); - - for (let level = 0; level < 4; level++) { - for (const flag of extraFlags) { - map.set(srcX + dirX, srcZ + dirZ, level, flag); - - const pf = new LineValidator(map); - const low = pf.hasLineOfWalk(level, srcX, srcZ, destX, destZ, 1, 0, 0, flag); - - expect(low).toBeFalsy(); - } - } - }); - }); - }); - - describe('line of sight', () => { - test('test on top of loc fails line of sight', () => { - const map = new CollisionFlagMap(); - map.add(srcX, srcZ, 0, CollisionFlag.LOC); - - const pf = new LineValidator(map); - const los = pf.hasLineOfSight(0, srcX, srcZ, 3200, 3201); - - expect(los).toBeFalsy(); - }); - - test('test on top of extra flag fails line of sight', () => { - const map = new CollisionFlagMap(); - map.add(srcX, srcZ, 0, CollisionFlag.PLAYER); - - const pf = new LineValidator(map); - const los = pf.hasLineOfSight(0, srcX, srcZ, 3200, 3201, 1, 0, 0, CollisionFlag.PLAYER); - - expect(los).toBeFalsy(); - }); - - test('test same tile has line of sight', () => { - const map = new CollisionFlagMap(); - map.allocateIfAbsent(srcX, srcZ, 0); - - const pf = new LineValidator(map); - const los = pf.hasLineOfSight(0, srcX, srcZ, srcX, srcZ); - - expect(los).toBeTruthy(); - }); - - describe('with flags', () => { - test('test partial line of sight', () => { - const map = new CollisionFlagMap(); - map.set(3200, 3205, 0, CollisionFlag.LOC_PROJ_BLOCKER); - - const pf = new LineValidator(map); - const los = pf.hasLineOfSight(0, srcX, srcZ, 3200, 3207); - - expect(los).toBeFalsy(); - }); - - test.each(args)('test valid line of sight', (dirX, dirZ) => { - const destX = srcX + (dirX * 3); - const destZ = srcZ + (dirZ * 3); - - const map = buildCollisionMap(srcX, srcZ, destX, destZ); - - for (let level = 0; level < 4; level++) { - for (const flag of flags) { - map.set(srcX + dirX, srcZ + dirZ, level, flag); - - const pf = new LineValidator(map); - const los = pf.hasLineOfSight(level, srcX, srcZ, destX, destZ); - - expect(los).toBeTruthy(); - } - } - }); - - test.each(args)('test loc blocking', (dirX, dirZ) => { - const destX = srcX + (dirX * 3); - const destZ = srcZ + (dirZ * 3); - - const map = buildCollisionMap(srcX, srcZ, destX, destZ); - - for (let level = 0; level < 4; level++) { - map.set(srcX + dirX, srcZ + dirZ, level, CollisionFlag.LOC_PROJ_BLOCKER); - - const pf = new LineValidator(map); - const los = pf.hasLineOfSight(level, srcX, srcZ, destX, destZ); - - expect(los).toBeFalsy(); - } - }); - - test.each(args)('test extra flag blocking', (dirX, dirZ) => { - const destX = srcX + (dirX * 3); - const destZ = srcZ + (dirZ * 3); - - const map = buildCollisionMap(srcX, srcZ, destX, destZ); - - for (let level = 0; level < 4; level++) { - for (const flag of extraFlags) { - map.set(srcX + dirX, srcZ + dirZ, level, flag); - - const pf = new LineValidator(map); - const los = pf.hasLineOfSight(level, srcX, srcZ, destX, destZ, 1, 0, 0, flag); - - expect(los).toBeFalsy(); - } - } - }); - }); - }); -}); \ No newline at end of file diff --git a/test/rsmod/NaivePathFinder.test.ts b/test/rsmod/NaivePathFinder.test.ts deleted file mode 100644 index 78b7ae5..0000000 --- a/test/rsmod/NaivePathFinder.test.ts +++ /dev/null @@ -1,46 +0,0 @@ -import NaivePathFinder from '../../src/rsmod/NaivePathFinder'; -import StepValidator from '../../src/rsmod/StepValidator'; -import CollisionFlagMap from '../../src/rsmod/collision/CollisionFlagMap'; - -describe('NaivePathFinder', () => { - test('test intersects size 1', () => { - const map = new CollisionFlagMap(); - const sv = new StepValidator(map); - const pf = new NaivePathFinder(sv); - - expect(pf.intersects(3222, 3222, 1, 1, 3222, 3222, 1, 1)).toBeTruthy(); - expect(pf.intersects(3222, 3222, 1, 1, 3223, 3223, 1, 1)).toBeFalsy(); - - expect(pf.intersects(3222, 3222, 2, 2, 3222, 3222, 1, 1)).toBeTruthy(); - expect(pf.intersects(3222, 3222, 2, 2, 3223, 3223, 1, 1)).toBeTruthy(); - expect(pf.intersects(3222, 3222, 2, 2, 3224, 3224, 1, 1)).toBeFalsy(); - - expect(pf.intersects(3222, 3222, 3, 3, 3222, 3222, 1, 1)).toBeTruthy(); - expect(pf.intersects(3222, 3222, 3, 3, 3223, 3223, 1, 1)).toBeTruthy(); - expect(pf.intersects(3222, 3222, 3, 3, 3224, 3224, 1, 1)).toBeTruthy(); - expect(pf.intersects(3222, 3222, 3, 3, 3225, 3225, 1, 1)).toBeFalsy(); - }); - - test('test intersects size 2', () => { - const map = new CollisionFlagMap(); - const sv = new StepValidator(map); - const pf = new NaivePathFinder(sv); - - expect(pf.intersects(3222, 3222, 1, 1, 3222, 3222, 2, 2)).toBeTruthy(); - expect(pf.intersects(3222, 3222, 1, 1, 3223, 3223, 2, 2)).toBeFalsy(); - - expect(pf.intersects(3222, 3222, 2, 2, 3222, 3222, 2, 2)).toBeTruthy(); - expect(pf.intersects(3222, 3222, 2, 2, 3223, 3223, 2, 2)).toBeTruthy(); - expect(pf.intersects(3222, 3222, 2, 2, 3224, 3224, 2, 2)).toBeFalsy(); - - expect(pf.intersects(3222, 3222, 3, 3, 3222, 3222, 2, 2)).toBeTruthy(); - expect(pf.intersects(3222, 3222, 3, 3, 3223, 3223, 2, 2)).toBeTruthy(); - expect(pf.intersects(3222, 3222, 3, 3, 3224, 3224, 2, 2)).toBeTruthy(); - expect(pf.intersects(3222, 3222, 3, 3, 3225, 3225, 2, 2)).toBeFalsy(); - - expect(pf.intersects(3222, 3222, 1, 1, 3221, 3221, 2, 2)).toBeTruthy(); - expect(pf.intersects(3222, 3222, 1, 1, 3220, 3220, 2, 2)).toBeFalsy(); - expect(pf.intersects(3222, 3222, 1, 1, 3222, 3221, 2, 2)).toBeTruthy(); - expect(pf.intersects(3222, 3222, 1, 1, 3222, 3220, 2, 2)).toBeFalsy(); - }); -}); \ No newline at end of file diff --git a/test/rsmod/PathFinder.test.ts b/test/rsmod/PathFinder.test.ts deleted file mode 100644 index 08d8824..0000000 --- a/test/rsmod/PathFinder.test.ts +++ /dev/null @@ -1,143 +0,0 @@ -import PathFinder from '../../src/rsmod/PathFinder'; -import CollisionFlagMap from '../../src/rsmod/collision/CollisionFlagMap'; -import CollisionFlag from '../../src/rsmod/flag/CollisionFlag'; - -function buildCollisionMap(x1: number, z1: number, x2: number, z2: number) { - const map = new CollisionFlagMap(); - for (let level = 0; level < 4; level++) { - for (let z = Math.min(z1, z2); z <= Math.max(z1, z2); z++) { - for (let x = Math.min(x1, x2); x <= Math.max(x1, x2); x++) { - map.allocateIfAbsent(x, z, level); - } - } - } - return map; -} - -function flag(map: CollisionFlagMap, baseX: number, baseZ: number, width: number, height: number, mask: number) { - for (let level = 0; level < 4; level++) { - for (let z = 0; z < height; z++) { - for (let x = 0; x < width; x++) { - map.set(baseX + x, baseZ + z, level, mask); - } - } - } -} - -describe('PathFinder', () => { - test('route coordinates match level input', () => { - const srcX = 3200, srcZ = 3200; - const destX = 3201, destZ = 3200; - - const map = buildCollisionMap(srcX, srcZ, destX, destZ); - const pathFinder = new PathFinder(map); - - let route = pathFinder.findPath(0, srcX, srcZ, destX, destZ); - expect(route.success).toBeTruthy(); - route.waypoints.forEach(routePoint => { - expect(routePoint.level).toBe(0); - }); - - route = pathFinder.findPath(1, srcX, srcZ, destX, destZ); - expect(route.success).toBeTruthy(); - route.waypoints.forEach(routePoint => { - expect(routePoint.level).toBe(1); - }); - - route = pathFinder.findPath(2, srcX, srcZ, destX, destZ); - expect(route.success).toBeTruthy(); - route.waypoints.forEach(routePoint => { - expect(routePoint.level).toBe(2); - }); - - route = pathFinder.findPath(3, srcX, srcZ, destX, destZ); - expect(route.success).toBeTruthy(); - route.waypoints.forEach(routePoint => { - expect(routePoint.level).toBe(3); - }); - }); - - test('surrounded by objects allow move near', () => { - const srcX = 3200, srcZ = 3200; - const destX = 3205, destZ = 3200; - - const map = buildCollisionMap(srcX, srcZ, destX, destZ); - flag(map, srcX - 1, srcZ - 1, 3, 3, CollisionFlag.LOC); - map.set(srcX, srcZ, 0, CollisionFlag.OPEN); // Remove collision flag from source tile - - const pathFinder = new PathFinder(map); - const route = pathFinder.findPath(0, srcX, srcZ, destX, destZ); - expect(route.alternative).toBeTruthy(); - expect(route.waypoints).toHaveLength(0); - }); - - test('surrounded by objects no move near', () => { - const srcX = 3200, srcZ = 3200; - const destX = 3205, destZ = 3200; - - const map = buildCollisionMap(srcX, srcZ, destX, destZ); - flag(map, srcX - 1, srcZ - 1, 3, 3, CollisionFlag.LOC); - map.set(srcX, srcZ, 0, CollisionFlag.OPEN); // Remove collision flag from source tile - - const pathFinder = new PathFinder(map); - const route = pathFinder.findPath(0, srcX, srcZ, destX, destZ, 1, 1, 1, 0, -1, false); - expect(route.failed).toBeTruthy(); - expect(route.waypoints).toHaveLength(0); - }); - - test('single exit point', () => { - const srcX = 3200, srcZ = 3200; - const destX = 3200, destZ = 3205; - - const map = buildCollisionMap(srcX, srcZ, destX, destZ); - flag(map, srcX - 1, srcZ - 1, 3, 3, CollisionFlag.LOC); - map.set(srcX, srcZ, 0, CollisionFlag.OPEN); // Remove collision flag from source tile - map.set(srcX, srcZ - 1, 0, CollisionFlag.OPEN); // Remove collision flag from tile south of source tile. - - const pathFinder = new PathFinder(map); - const route = pathFinder.findPath(0, srcX, srcZ, destX, destZ); - expect(route.success).toBeTruthy(); - expect(route.waypoints).toHaveLength(4); - - expect(route.waypoints[0].x).toEqual(3200); - expect(route.waypoints[0].z).toEqual(3198); - - expect(route.waypoints[1].x).toEqual(3198); - expect(route.waypoints[1].z).toEqual(3198); - - expect(route.waypoints[2].x).toEqual(3198); - expect(route.waypoints[2].z).toEqual(3203); - - expect(route.waypoints[3].x).toEqual(destX); - expect(route.waypoints[3].z).toEqual(destZ); - }); - - test('standing on closest approach point', () => { - const srcX = 3200, srcZ = 3200; - const objX = 3200, objZ = 3201; - - const map = buildCollisionMap(srcX, srcZ, objX, objZ); - const pathFinder = new PathFinder(map); - map.add(objX, objZ, 0, CollisionFlag.WALL_NORTH | CollisionFlag.WALL_SOUTH | CollisionFlag.WALL_WEST | CollisionFlag.WALL_EAST); - - const route = pathFinder.findPath(0, srcX, srcZ, objX, objZ); - expect(route.success).toBeTruthy(); - expect(route.alternative).toBeTruthy(); - expect(route.waypoints).toHaveLength(0); - }); - - test('find path any size', () => { - for (let size = 1; size <= 3; size++) { - const srcX = 3200, srcZ = 3200; - const objX = 3200, objZ = 3210 + size; - - const map = buildCollisionMap(srcX, srcZ, objX, objZ); - map.set(srcX, srcZ + 1, 0, CollisionFlag.LOC); - const pathFinder = new PathFinder(map); - - const route = pathFinder.findPath(0, srcX, srcZ, objX, objZ, size); - expect(route.success).toBeTruthy(); - expect(route.alternative).toBeFalsy(); - } - }); -}); diff --git a/test/rsmod/StepValidator.test.ts b/test/rsmod/StepValidator.test.ts deleted file mode 100644 index cf6900f..0000000 --- a/test/rsmod/StepValidator.test.ts +++ /dev/null @@ -1,268 +0,0 @@ -import StepValidator from '../../src/rsmod/StepValidator'; -import CollisionFlag from '../../src/rsmod/flag/CollisionFlag'; -import CollisionStrategies from '../../src/rsmod/collision/CollisionStrategies'; -import CollisionFlagMap from '../../src/rsmod/collision/CollisionFlagMap'; - -function buildCollisionMap(x1: number, z1: number, x2: number, z2: number) { - const map = new CollisionFlagMap(); - for (let level = 0; level < 4; level++) { - for (let z = Math.min(z1, z2); z <= Math.max(z1, z2); z++) { - for (let x = Math.min(x1, x2); x <= Math.max(x1, x2); x++) { - map.allocateIfAbsent(x, z, level); - } - } - } - return map; -} - -function buildCollisionMapWithFlag(x1: number, z1: number, x2: number, z2: number, mask: number) { - const map = new CollisionFlagMap(); - for (let level = 0; level < 4; level++) { - for (let z = Math.min(z1, z2); z <= Math.max(z1, z2); z++) { - for (let x = Math.min(x1, x2); x <= Math.max(x1, x2); x++) { - map.set(x, z, level, mask); - } - } - } - return map; -} - -describe('StepValidator', () => { - const srcX = 3200; - const srcZ = 3200; - - const args = [ - [ 1, 0, -1 ], - [ 1, 0, 1 ], - [ 1, -1, 0 ], - [ 1, 1, 0 ], - [ 1, -1, -1 ], - [ 1, -1, 1 ], - [ 1, 1, -1 ], - [ 1, 1, 1 ], - [ 2, 0, -1 ], - [ 2, 0, 1 ], - [ 2, -1, 0 ], - [ 2, 1, 0 ], - [ 2, -1, -1 ], - [ 2, -1, 1 ], - [ 2, 1, -1 ], - [ 2, 1, 1 ], - [ 3, 0, -1 ], - [ 3, 0, 1 ], - [ 3, -1, 0 ], - [ 3, 1, 0 ], - [ 3, -1, -1 ], - [ 3, -1, 1 ], - [ 3, 1, -1 ], - [ 3, 1, 1 ], - ]; - - const extraFlags = [ - CollisionFlag.PLAYER, - CollisionFlag.NPC, - CollisionFlag.PLAYER | CollisionFlag.NPC - ]; - - test.each(args)('test clear path', (size, dirX, dirZ) => { - const destX = srcX + dirX; - const destZ = srcZ + dirZ; - - const map = buildCollisionMap(srcX, srcZ, destX, destZ); - const stepValidator = new StepValidator(map); - - for (let level = 0; level < 4; level++) { - const validated = stepValidator.canTravel(level, srcX, srcZ, dirX, dirZ, size, 0, CollisionStrategies.NORMAL); - expect(validated).toBeTruthy(); - } - }); - - test.each(args)('test loc blocking', (size, dirX, dirZ) => { - const destX = srcX + dirX; - const destZ = srcZ + dirZ; - - const map = buildCollisionMap(srcX, srcZ, destX, destZ); - const stepValidator = new StepValidator(map); - - for (let level = 0; level < 4; level++) { - for (let index = 0; index < size * size; index++) { - const deltaX = destX + (index % size); - const deltaZ = destZ + (index / size); - map.set(deltaX, deltaZ, level, CollisionFlag.LOC); - } - } - - for (let level = 0; level < 4; level++) { - const validated = stepValidator.canTravel(level, srcX, srcZ, dirX, dirZ, size, 0, CollisionStrategies.NORMAL); - expect(validated).toBeFalsy(); - } - }); - - test.each(args)('test extra flag blocking', (size, dirX, dirZ) => { - const destX = srcX + dirX; - const destZ = srcZ + dirZ; - - const map = buildCollisionMap(srcX, srcZ, destX, destZ); - const stepValidator = new StepValidator(map); - - for (let level = 0; level < 4; level++) { - for (const flag of extraFlags) { - for (let index = 0; index < size * size; index++) { - const deltaX = destX + (index % size); - const deltaZ = destZ + (index / size); - map.set(deltaX, deltaZ, level, flag); - } - } - } - - for (let level = 0; level < 4; level++) { - for (const flag of extraFlags) { - const validated = stepValidator.canTravel(level, srcX, srcZ, dirX, dirZ, size, flag, CollisionStrategies.NORMAL); - expect(validated).toBeFalsy(); - } - } - }); - - test.each(args)('test blocked flag strategy', (size, dirX, dirZ) => { - const destX = srcX + dirX; - const destZ = srcZ + dirZ; - - const map = buildCollisionMapWithFlag(srcX, srcZ, destX, destZ, CollisionFlag.FLOOR); - const stepValidator = new StepValidator(map); - - for (let level = 0; level < 4; level++) { - for (const flag of extraFlags) { - const validated = stepValidator.canTravel(level, srcX, srcZ, dirX, dirZ, 1, 0, CollisionStrategies.BLOCKED); - expect(validated).toBeTruthy(); - } - } - }); - - test.each(args)('test indoors flag strategy', (size, dirX, dirZ) => { - const destX = srcX + dirX; - const destZ = srcZ + dirZ; - const outdoorsX = destX + dirX; - const outdoorsZ = destZ + dirZ; - - const map = new CollisionFlagMap(); - for (let level = 0; level < 4; level++) { - for (let x = Math.min(srcX, Math.min(destX, outdoorsX)); x <= Math.max(srcX, Math.max(destX, outdoorsX)); x++) { - for (let z = Math.min(srcZ, Math.min(destZ, outdoorsZ)); z <= Math.max(srcZ, Math.max(destZ, outdoorsZ)); z++) { - map.set(x, z, level, CollisionFlag.ROOF); - } - } - } - - const stepValidator = new StepValidator(map); - - for (let level = 0; level < 4; level++) { - map.set(outdoorsX, outdoorsZ, level, CollisionFlag.OPEN); - } - - for (let level = 0; level < 4; level++) { - for (const flag of extraFlags) { - const validated = stepValidator.canTravel(level, srcX, srcZ, dirX, dirZ, 1, 0, CollisionStrategies.INDOORS); - expect(validated).toBeTruthy(); - - const validated2 = stepValidator.canTravel(level, destX, destZ, dirX, dirZ, 1, 0, CollisionStrategies.INDOORS); - expect(validated2).toBeFalsy(); - } - } - }); - - test.each(args)('test outdoors flag strategy', (size, dirX, dirZ) => { - const destX = srcX + dirX; - const destZ = srcZ + dirZ; - const indoorsX = destX + dirX; - const indoorsZ = destZ + dirZ; - - const map = new CollisionFlagMap(); - for (let level = 0; level < 4; level++) { - for (let x = Math.min(srcX, Math.min(destX, indoorsX)); x <= Math.max(srcX, Math.max(destX, indoorsX)); x++) { - for (let z = Math.min(srcZ, Math.min(destZ, indoorsZ)); z <= Math.max(srcZ, Math.max(destZ, indoorsZ)); z++) { - map.allocateIfAbsent(x, z, level); - } - } - } - - const stepValidator = new StepValidator(map); - - for (let level = 0; level < 4; level++) { - map.set(indoorsX, indoorsZ, level, CollisionFlag.ROOF); - } - - for (let level = 0; level < 4; level++) { - for (const flag of extraFlags) { - const validated = stepValidator.canTravel(level, srcX, srcZ, dirX, dirZ, 1, 0, CollisionStrategies.OUTDOORS); - expect(validated).toBeTruthy(); - - const validated2 = stepValidator.canTravel(level, destX, destZ, dirX, dirZ, 1, 0, CollisionStrategies.OUTDOORS); - expect(validated2).toBeFalsy(); - } - } - }); - - test.each(args)('test line of sight flag strategy loc', (size, dirX, dirZ) => { - const destX = srcX + dirX; - const destZ = srcZ + dirZ; - const blockedX = destX + dirX; - const blockedZ = destZ + dirZ; - - const map = new CollisionFlagMap(); - for (let level = 0; level < 4; level++) { - for (let x = Math.min(srcX, Math.min(destX, blockedX)); x <= Math.max(srcX, Math.max(destX, blockedX)); x++) { - for (let z = Math.min(srcZ, Math.min(destZ, blockedZ)); z <= Math.max(srcZ, Math.max(destZ, blockedZ)); z++) { - map.allocateIfAbsent(x, z, level); - } - } - } - - const stepValidator = new StepValidator(map); - - for (let level = 0; level < 4; level++) { - map.set(blockedX, blockedZ, level, CollisionFlag.LOC_PROJ_BLOCKER); - } - - for (let level = 0; level < 4; level++) { - for (const flag of extraFlags) { - const validated = stepValidator.canTravel(level, srcX, srcZ, dirX, dirZ, 1, 0, CollisionStrategies.LINE_OF_SIGHT); - expect(validated).toBeTruthy(); - - const validated2 = stepValidator.canTravel(level, destX, destZ, dirX, dirZ, 1, 0, CollisionStrategies.LINE_OF_SIGHT); - expect(validated2).toBeFalsy(); - } - } - }); - - test.each(args)('test line of sight flag strategy player', (size, dirX, dirZ) => { - const destX = srcX + dirX; - const destZ = srcZ + dirZ; - const blockedX = destX + dirX; - const blockedZ = destZ + dirZ; - - const map = new CollisionFlagMap(); - for (let level = 0; level < 4; level++) { - for (let x = Math.min(srcX, Math.min(destX, blockedX)); x <= Math.max(srcX, Math.max(destX, blockedX)); x++) { - for (let z = Math.min(srcZ, Math.min(destZ, blockedZ)); z <= Math.max(srcZ, Math.max(destZ, blockedZ)); z++) { - map.allocateIfAbsent(x, z, level); - } - } - } - - const stepValidator = new StepValidator(map); - - for (let level = 0; level < 4; level++) { - map.set(blockedX, blockedZ, level, CollisionFlag.PLAYER); - } - - for (let level = 0; level < 4; level++) { - for (const flag of extraFlags) { - const validated = stepValidator.canTravel(level, srcX, srcZ, dirX, dirZ, 1, 0, CollisionStrategies.LINE_OF_SIGHT); - expect(validated).toBeTruthy(); - - const validated2 = stepValidator.canTravel(level, destX, destZ, dirX, dirZ, 1, 0, CollisionStrategies.LINE_OF_SIGHT); - expect(validated2).toBeTruthy(); - } - } - }); -}); \ No newline at end of file diff --git a/test/rsmod/collision/CollisionFlagMap.test.ts b/test/rsmod/collision/CollisionFlagMap.test.ts deleted file mode 100644 index b46c747..0000000 --- a/test/rsmod/collision/CollisionFlagMap.test.ts +++ /dev/null @@ -1,93 +0,0 @@ -import CollisionFlagMap from '../../../src/rsmod/collision/CollisionFlagMap'; -import CollisionFlag from '../../../src/rsmod/flag/CollisionFlag'; - -describe('CollisionFlagMap', () => { - test('test get collision flag', () => { - const map = new CollisionFlagMap(); - map.allocateIfAbsent(0, 0, 0); - const flags = map.flags[0]; - expect(flags).not.toBeNull(); - flags![0] = 123456; - expect(map.get(0, 0, 0)).toBe(123456); - }); - - test('test get collision flag null zone', () => { - const map = new CollisionFlagMap(); - expect(map.isZoneAllocated(3200, 3200, 0)).toBeFalsy(); - - for (let x = 3200; x < 3208; x++) { - for (let z = 3200; z < 3208; z++) { - expect(map.get(x, z, 0)).toBe(CollisionFlag.NULL); - } - } - }); - - test('test get collision flag allocated zone', () => { - const map = new CollisionFlagMap(); - expect(map.isZoneAllocated(3200, 3200, 0)).toBeFalsy(); - - map.allocateIfAbsent(3200, 3200, 0); - expect(map.isZoneAllocated(3200, 3200, 0)).toBeTruthy(); - - for (let x = 3200; x < 3208; x++) { - for (let z = 3200; z < 3208; z++) { - expect(map.get(x, z, 0)).toBe(CollisionFlag.OPEN); - } - } - }); - - test('test set collision flag', () => { - const map = new CollisionFlagMap(); - expect(map.get(3200, 3200, 0)).toBe(CollisionFlag.NULL); - expect(map.get(3200, 3200, 1)).toBe(CollisionFlag.NULL); - expect(map.get(3200, 3200, 2)).toBe(CollisionFlag.NULL); - - map.set(3200, 3200, 0, 0x800); - map.set(3200, 3200, 1, 0x200); - map.set(3200, 3200, 2, 0); - - expect(map.get(3200, 3200, 0)).toBe(0x800); - expect(map.get(3200, 3200, 1)).toBe(0x200); - expect(map.get(3200, 3200, 2)).toBe(0); - }); - - test('test add collision flag', () => { - const map = new CollisionFlagMap(); - map.allocateIfAbsent(3200, 3200, 0); - expect(map.get(3200, 3200, 0)).toBe(CollisionFlag.OPEN); - - map.add(3200, 3200, 0, 0x1000); - expect(map.get(3200, 3200, 0)).toBe(0x1000); - - map.add(3200, 3200, 0, 0x400); - expect(map.isFlagged(3200, 3200, 0, 0x1000)).toBeTruthy(); - expect(map.isFlagged(3200, 3200, 0, 0x400)).toBeTruthy(); - - for (let x = 3201; x < 3208; x++) { - for (let z = 3201; z < 3208; z++) { - expect(map.get(x, z, 0)).toBe(CollisionFlag.OPEN); - } - } - }); - - test('test remove collision flag', () => { - const map = new CollisionFlagMap(); - map.allocateIfAbsent(3200, 3200, 0); - expect(map.get(3200, 3200, 0)).toBe(CollisionFlag.OPEN); - - map.add(3200, 3200, 0, 0x1000); - expect(map.get(3200, 3200, 0)).toBe(0x1000); - - map.remove(3200, 3200, 0, 0x1000); - expect(map.get(3200, 3200, 0)).toBe(CollisionFlag.OPEN); - }); - - test('test deallocate if present', () => { - const map = new CollisionFlagMap(); - map.allocateIfAbsent(3200, 3200, 0); - expect(map.get(3200, 3200, 0)).toBe(CollisionFlag.OPEN); - - map.deallocateIfPresent(3200, 3200, 0); - expect(map.get(3200, 3200, 0)).toBe(CollisionFlag.NULL); - }); -}); \ No newline at end of file diff --git a/test/rsmod/reach/ReachStrategyTest.test.ts b/test/rsmod/reach/ReachStrategyTest.test.ts deleted file mode 100644 index 9be57f2..0000000 --- a/test/rsmod/reach/ReachStrategyTest.test.ts +++ /dev/null @@ -1,200 +0,0 @@ -import CollisionFlag from '../../../src/rsmod/flag/CollisionFlag'; -import ReachStrategy from '../../../src/rsmod/reach/ReachStrategy'; -import BlockAccessFlag from '../../../src/rsmod/flag/BlockAccessFlag'; -import CollisionFlagMap from '../../../src/rsmod/collision/CollisionFlagMap'; - -function buildCollisionMap(x1: number, z1: number, x2: number, z2: number) { - const map = new CollisionFlagMap(); - for (let level = 0; level < 4; level++) { - for (let z = Math.min(z1, z2); z <= Math.max(z1, z2); z++) { - for (let x = Math.min(x1, x2); x <= Math.max(x1, x2); x++) { - map.allocateIfAbsent(x, z, level); - } - } - } - return map; -} - -function flag(map: CollisionFlagMap, baseX: number, baseZ: number, width: number, height: number, mask: number) { - for (let level = 0; level < 4; level++) { - for (let z = 0; z < height; z++) { - for (let x = 0; x < width; x++) { - map.set(baseX + x, baseZ + z, level, mask); - } - } - } -} - -describe('ReachStrategyTest', () => { - const ROTATED_OBJECT_TEST_ARGS = [ - [ 3203, 3203, { width: 1, height: 1 } ], - [ 3203, 3203, { width: 1, height: 2 } ], - [ 3203, 3203, { width: 1, height: 3 } ], - [ 3203, 3203, { width: 2, height: 1 } ], - [ 3203, 3203, { width: 2, height: 2 } ], - [ 3203, 3203, { width: 2, height: 3 } ], - [ 3203, 3203, { width: 3, height: 1 } ], - [ 3203, 3203, { width: 3, height: 2 } ], - [ 3203, 3203, { width: 3, height: 3 } ], - ] as const; - - /** - * Test that object rotations are taken into account within [ReachStrategy.reached] - * and do not rely on external modifications. For example, given the parameters of - * an object in coordinates (3203, 3203) with a dimension of 3 x 1 (width x height), - * the following test should pass: - * - * Object rotation of [0] or [2]. (normal) - * ``` - * -------- - * -------- - * -------- - * ---ooo-- - * --o o- - * ---ooo-- - * -------- - * -------- - * ``` - * Where: - * - Area starts from bottom-left and makes its way to top-right. (3200,3200 - 3207,3207) - * - ' ' (whitespace) are the tiles occupied by the rotated object. - * - 'o' are the tiles that successfully pass [ReachStrategy.reached]. - * - '-' represents every other tile in the area. (in this case a zone, or 8x8 tile area) - */ - test.each(ROTATED_OBJECT_TEST_ARGS)('test rotated object normal ', (objX, objZ, { width, height }) => { - const LEVEL = 0; - - const minX = objX - 16, minZ = objZ - 16; - const maxX = objX + 16, maxZ = objZ + 16; - - const map = buildCollisionMap(minX, minZ, maxX, maxZ); - flag(map, objX, objZ, width, height, CollisionFlag.LOC); - - const reached = (srcX: number, srcZ: number, rot: number, blockAccessFlags: number = 0) => { - return ReachStrategy.reached( - map, - LEVEL, - srcX, - srcZ, - objX, - objZ, - width, - height, - 1, - rot, - -2, // Use rectangular excludive strategy - blockAccessFlags - ); - }; - - for (let x = 0; x < width; x++) { - // Test coming from south tiles. - expect(reached(objX + x, objZ - 1, 0)).toBeTruthy(); - expect(reached(objX + x, objZ - 1, 2)).toBeTruthy(); - // Test coming from north tiles. - expect(reached(objX + x, objZ + height, 0)).toBeTruthy(); - expect(reached(objX + x, objZ + height, 2)).toBeTruthy(); - // Test coming from south tiles with access blocked. - expect(reached(objX + x, objZ - 1, 0, BlockAccessFlag.BLOCK_SOUTH)).toBeFalsy(); - expect(reached(objX + x, objZ - 1, 2, BlockAccessFlag.BLOCK_NORTH)).toBeFalsy(); - // Test coming from north tiles with access blocked. - expect(reached(objX + x, objZ + height, 0, BlockAccessFlag.BLOCK_NORTH)).toBeFalsy(); - expect(reached(objX + x, objZ + height, 2, BlockAccessFlag.BLOCK_SOUTH)).toBeFalsy(); - } - - for (let z = 0; z < height; z++) { - // Test coming from west tiles. - expect(reached(objX - 1, objZ + z, 0)).toBeTruthy(); - expect(reached(objX - 1, objZ + z, 2)).toBeTruthy(); - // Test coming from east tiles. - expect(reached(objX + width, objZ + z, 0)).toBeTruthy(); - expect(reached(objX + width, objZ + z, 2)).toBeTruthy(); - // Test coming from west tiles with access blocked. - expect(reached(objX - 1, objZ + z, 0, BlockAccessFlag.BLOCK_WEST)).toBeFalsy(); - expect(reached(objX - 1, objZ + z, 2, BlockAccessFlag.BLOCK_EAST)).toBeFalsy(); - // Test coming from east tiles with access blocked. - expect(reached(objX + width, objZ + z, 0, BlockAccessFlag.BLOCK_EAST)).toBeFalsy(); - expect(reached(objX + width, objZ + z, 2, BlockAccessFlag.BLOCK_WEST)).toBeFalsy(); - } - }); - - /** - * Test that object rotations are taken into account within [ReachStrategy.reached] - * and do not rely on external modifications. For example, given the parameters of - * an object in coordinates (3203, 3203) with a dimension of 3 x 1 (width x height), - * the following test should pass: - * - * Object rotation of [1] or [3]. (flipped) - * ``` - * -------- - * ---o---- - * --o o--- - * --o o--- - * --o o--- - * ---o---- - * -------- - * -------- - * ``` - * Where: - * - Area starts from bottom-left and makes its way to top-right. (3200,3200 - 3207,3207) - * - ' ' (whitespace) are the tiles occupied by the rotated object. - * - 'o' are the tiles that successfully pass [ReachStrategy.reached]. - * - '-' represents every other tile in the area. (in this case a zone, or 8x8 tile area) - */ - test.each(ROTATED_OBJECT_TEST_ARGS)('test rotated object flipped', (objX, objZ, { width, height }) => { - const LEVEL = 0; - - const minX = objX - 16, minZ = objZ - 16; - const maxX = objX + 16, maxZ = objZ + 16; - - const map = buildCollisionMap(minX, minZ, maxX, maxZ); - flag(map, objX, objZ, width, height, CollisionFlag.LOC); - - const reached = (srcX: number, srcZ: number, rot: number, blockAccessFlags: number = 0) => { - return ReachStrategy.reached( - map, - LEVEL, - srcX, - srcZ, - objX, - objZ, - width, - height, - 1, - rot, - -2, // Use rectangular exclusive strategy - blockAccessFlags - ); - }; - - for (let x = 0; x < height; x++) { // width and height are swapped - // Test coming from south tiles. - expect(reached(objX + x, objZ - 1, 1)).toBeTruthy(); - expect(reached(objX + x, objZ - 1, 3)).toBeTruthy(); - // Test coming from north tiles. - expect(reached(objX + x, objZ + width, 1)).toBeTruthy(); // width and height are swapped - expect(reached(objX + x, objZ + width, 3)).toBeTruthy(); // width and height are swapped - // Test coming from south tiles with access blocked. - expect(reached(objX + x, objZ - 1, 1, BlockAccessFlag.BLOCK_EAST)).toBeFalsy(); - expect(reached(objX + x, objZ - 1, 3, BlockAccessFlag.BLOCK_WEST)).toBeFalsy(); - // Test coming from north tiles with access blocked. - expect(reached(objX + x, objZ + width, 1, BlockAccessFlag.BLOCK_WEST)).toBeFalsy(); // width and height are swapped - expect(reached(objX + x, objZ + width, 3, BlockAccessFlag.BLOCK_EAST)).toBeFalsy(); // width and height are swapped - } - - for (let z = 0; z < width; z++) { // width and height are swapped - // Test coming from west tiles. - expect(reached(objX - 1, objZ + z, 1)).toBeTruthy(); - expect(reached(objX - 1, objZ + z, 3)).toBeTruthy(); - // Test coming from east tiles. - expect(reached(objX + height, objZ + z, 1)).toBeTruthy(); // width and height are swapped - expect(reached(objX + height, objZ + z, 3)).toBeTruthy(); // width and height are swapped - // Test coming from west tiles with access blocked. - expect(reached(objX - 1, objZ + z, 1, BlockAccessFlag.BLOCK_SOUTH)).toBeFalsy(); - expect(reached(objX - 1, objZ + z, 3, BlockAccessFlag.BLOCK_NORTH)).toBeFalsy(); - // Test coming from east tiles with access blocked. - expect(reached(objX + height, objZ + z, 1, BlockAccessFlag.BLOCK_NORTH)).toBeFalsy(); // width and height are swapped - expect(reached(objX + height, objZ + z, 3, BlockAccessFlag.BLOCK_SOUTH)).toBeFalsy(); // width and height are swapped - } - }); -}); \ No newline at end of file diff --git a/test/rsmod/reach/RectangleBoundaryUtils.test.ts b/test/rsmod/reach/RectangleBoundaryUtils.test.ts deleted file mode 100644 index b5644b8..0000000 --- a/test/rsmod/reach/RectangleBoundaryUtils.test.ts +++ /dev/null @@ -1,213 +0,0 @@ -import CollisionFlagMap from '../../../src/rsmod/collision/CollisionFlagMap'; -import BlockAccessFlag from '../../../src/rsmod/flag/BlockAccessFlag'; -import CollisionFlag from '../../../src/rsmod/flag/CollisionFlag'; -import RectangleBoundaryUtils from '../../../src/rsmod/reach/RectangleBoundaryUtils'; - -describe('RectangleBoundaryUtils', () => { - let flags: CollisionFlagMap; - let blockAccessFlags: number; - let level: number; - - beforeEach(() => { - // Initialize with some default values - flags = new CollisionFlagMap(); - blockAccessFlags = 0; - level = 0; - }); - - describe('reachRectangleN', () => { - describe('no collision flags', () => { - describe('size 2', () => { - it('should return true when src is west of destination', () => { - const srcX = 0, srcZ = 2, destX = 2, destZ = 2, srcWidth = 2, srcHeight = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.OPEN); - - expect(RectangleBoundaryUtils.collides(srcX, srcZ, destX, destZ, srcWidth, srcHeight, destWidth, destHeight)).toBeFalsy(); - expect(RectangleBoundaryUtils.reachRectangleN(flags, level, srcX, srcZ, destX, destZ, srcWidth, srcHeight, destWidth, destHeight, blockAccessFlags)).toBeTruthy(); - }); - - it('should return true when src is east of destination', () => { - const srcX = 4, srcZ = 2, destX = 2, destZ = 2, srcWidth = 2, srcHeight = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.OPEN); - - expect(RectangleBoundaryUtils.collides(srcX, srcZ, destX, destZ, srcWidth, srcHeight, destWidth, destHeight)).toBeFalsy(); - expect(RectangleBoundaryUtils.reachRectangleN(flags, level, srcX, srcZ, destX, destZ, srcWidth, srcHeight, destWidth, destHeight, blockAccessFlags)).toBeTruthy(); - }); - - it('should return true when src is south of destination', () => { - const srcX = 2, srcZ = 4, destX = 2, destZ = 2, srcWidth = 2, srcHeight = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.OPEN); - - expect(RectangleBoundaryUtils.collides(srcX, srcZ, destX, destZ, srcWidth, srcHeight, destWidth, destHeight)).toBeFalsy(); - expect(RectangleBoundaryUtils.reachRectangleN(flags, level, srcX, srcZ, destX, destZ, srcWidth, srcHeight, destWidth, destHeight, blockAccessFlags)).toBeTruthy(); - }); - - it('should return true when src is north of destination', () => { - const srcX = 2, srcZ = 0, destX = 2, destZ = 2, srcWidth = 2, srcHeight = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.OPEN); - - expect(RectangleBoundaryUtils.collides(srcX, srcZ, destX, destZ, srcWidth, srcHeight, destWidth, destHeight)).toBeFalsy(); - expect(RectangleBoundaryUtils.reachRectangleN(flags, level, srcX, srcZ, destX, destZ, srcWidth, srcHeight, destWidth, destHeight, blockAccessFlags)).toBeTruthy(); - }); - }); - }); - - describe('block access flags', () => { - describe('size 2', () => { - it('should return false when a wall is to the east of src and we cannot pass', () => { - const srcX = 0, srcZ = 2, destX = 2, destZ = 2, srcWidth = 2, srcHeight = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.WALL_EAST); - blockAccessFlags = BlockAccessFlag.BLOCK_WEST; - - expect(RectangleBoundaryUtils.collides(srcX, srcZ, destX, destZ, srcWidth, srcHeight, destWidth, destHeight)).toBeFalsy(); - expect(RectangleBoundaryUtils.reachRectangleN(flags, level, srcX, srcZ, destX, destZ, srcWidth, srcHeight, destWidth, destHeight, blockAccessFlags)).toBeFalsy(); - }); - - it('should return false when a wall is to the west of src and we cannot pass', () => { - const srcX = 4, srcZ = 2, destX = 2, destZ = 2, srcWidth = 2, srcHeight = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.WALL_WEST); - blockAccessFlags = BlockAccessFlag.BLOCK_EAST; - - expect(RectangleBoundaryUtils.collides(srcX, srcZ, destX, destZ, srcWidth, srcHeight, destWidth, destHeight)).toBeFalsy(); - expect(RectangleBoundaryUtils.reachRectangleN(flags, level, srcX, srcZ, destX, destZ, srcWidth, srcHeight, destWidth, destHeight, blockAccessFlags)).toBeFalsy(); - }); - - it('should return false when a wall is to the south of src and we cannot pass', () => { - const srcX = 2, srcZ = 4, destX = 2, destZ = 2, srcWidth = 2, srcHeight = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.WALL_SOUTH); - blockAccessFlags = BlockAccessFlag.BLOCK_NORTH; - - expect(RectangleBoundaryUtils.collides(srcX, srcZ, destX, destZ, srcWidth, srcHeight, destWidth, destHeight)).toBeFalsy(); - expect(RectangleBoundaryUtils.reachRectangleN(flags, level, srcX, srcZ, destX, destZ, srcWidth, srcHeight, destWidth, destHeight, blockAccessFlags)).toBeFalsy(); - }); - - it('should return false when a wall is to the north of src and we cannot pass', () => { - const srcX = 2, srcZ = 0, destX = 2, destZ = 2, srcWidth = 2, srcHeight = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.WALL_NORTH); - blockAccessFlags = BlockAccessFlag.BLOCK_SOUTH; - - expect(RectangleBoundaryUtils.collides(srcX, srcZ, destX, destZ, srcWidth, srcHeight, destWidth, destHeight)).toBeFalsy(); - expect(RectangleBoundaryUtils.reachRectangleN(flags, level, srcX, srcZ, destX, destZ, srcWidth, srcHeight, destWidth, destHeight, blockAccessFlags)).toBeFalsy(); - }); - }); - }); - }); - - describe('reachRectangle1', () => { - describe('no collision flags', () => { - it('should return true when src is west of destination', () => { - const srcX = 1, srcZ = 2, destX = 2, destZ = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.OPEN); - - expect(RectangleBoundaryUtils.reachRectangle1(flags, level, srcX, srcZ, destX, destZ, destWidth, destHeight, blockAccessFlags)).toBe(true); - }); - - it('should return true when src is east of destination', () => { - const srcX = 4, srcZ = 2, destX = 2, destZ = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.OPEN); - - expect(RectangleBoundaryUtils.reachRectangle1(flags, level, srcX, srcZ, destX, destZ, destWidth, destHeight, blockAccessFlags)).toBe(true); - }); - - it('should return true when src is south of destination', () => { - const srcX = 2, srcZ = 1, destX = 2, destZ = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.OPEN); - - expect(RectangleBoundaryUtils.reachRectangle1(flags, level, srcX, srcZ, destX, destZ, destWidth, destHeight, blockAccessFlags)).toBe(true); - }); - - it('should return true when src is north of destination', () => { - const srcX = 2, srcZ = 4, destX = 2, destZ = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.OPEN); - - expect(RectangleBoundaryUtils.reachRectangle1(flags, level, srcX, srcZ, destX, destZ, destWidth, destHeight, blockAccessFlags)).toBe(true); - }); - }); - - describe('block access flags', () => { - it('should return false when a wall is to the east of src and we cannot pass', () => { - const srcX = 1, srcZ = 2, destX = 2, destZ = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.WALL_EAST); - blockAccessFlags = BlockAccessFlag.BLOCK_WEST; - - expect(RectangleBoundaryUtils.reachRectangle1(flags, level, srcX, srcZ, destX, destZ, destWidth, destHeight, blockAccessFlags)).toBe(false); - }); - - it('should return false when a wall is to the west of src and we cannot pass', () => { - const srcX = 4, srcZ = 2, destX = 2, destZ = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.WALL_WEST); - blockAccessFlags = BlockAccessFlag.BLOCK_EAST; - - expect(RectangleBoundaryUtils.reachRectangle1(flags, level, srcX, srcZ, destX, destZ, destWidth, destHeight, blockAccessFlags)).toBe(false); - }); - - it('should return false when a wall is to the south of src and we cannot pass', () => { - const srcX = 2, srcZ = 1, destX = 2, destZ = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.WALL_NORTH); - blockAccessFlags = BlockAccessFlag.BLOCK_SOUTH; - - expect(RectangleBoundaryUtils.reachRectangle1(flags, level, srcX, srcZ, destX, destZ, destWidth, destHeight, blockAccessFlags)).toBe(false); - }); - - it('should return false when a wall is to the north of src and we cannot pass', () => { - const srcX = 2, srcZ = 4, destX = 2, destZ = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.WALL_SOUTH); - blockAccessFlags = BlockAccessFlag.BLOCK_NORTH; - - expect(RectangleBoundaryUtils.reachRectangle1(flags, level, srcX, srcZ, destX, destZ, destWidth, destHeight, blockAccessFlags)).toBe(false); - }); - }); - - describe('positioning', () => { - it('should return false when src is not adjacent to destination', () => { - const srcX = 5, srcZ = 5, destX = 2, destZ = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.OPEN); - - expect(RectangleBoundaryUtils.reachRectangle1(flags, level, srcX, srcZ, destX, destZ, destWidth, destHeight, blockAccessFlags)).toBe(false); - }); - - it('should return false when src is within the destination rectangle', () => { - const srcX = 3, srcZ = 3, destX = 2, destZ = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.OPEN); - - expect(RectangleBoundaryUtils.reachRectangle1(flags, level, srcX, srcZ, destX, destZ, destWidth, destHeight, blockAccessFlags)).toBe(false); - }); - - it('should return true when src is at the boundary and no wall blocking it', () => { - const srcX = 3, srcZ = 4, destX = 2, destZ = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.OPEN); - - expect(RectangleBoundaryUtils.reachRectangle1(flags, level, srcX, srcZ, destX, destZ, destWidth, destHeight, blockAccessFlags)).toBe(true); - }); - - it('should return false when src is at the boundary and there is a wall blocking it', () => { - const srcX = 3, srcZ = 4, destX = 2, destZ = 2, destWidth = 2, destHeight = 2; - - flags.set(srcX, srcZ, level, CollisionFlag.WALL_SOUTH); - blockAccessFlags = BlockAccessFlag.BLOCK_NORTH; - - expect(RectangleBoundaryUtils.reachRectangle1(flags, level, srcX, srcZ, destX, destZ, destWidth, destHeight, blockAccessFlags)).toBe(false); - }); - }); - - }); -}); \ No newline at end of file diff --git a/test/rsmod/reach/RectangularReachStrategy.test.ts b/test/rsmod/reach/RectangularReachStrategy.test.ts deleted file mode 100644 index 151c974..0000000 --- a/test/rsmod/reach/RectangularReachStrategy.test.ts +++ /dev/null @@ -1,465 +0,0 @@ -import CollisionFlag from '../../../src/rsmod/flag/CollisionFlag'; -import ReachStrategy from '../../../src/rsmod/reach/ReachStrategy'; -import DirectionFlag from '../../../src/rsmod/flag/DirectionFlag'; -import CollisionFlagMap from '../../../src/rsmod/collision/CollisionFlagMap'; - -function buildCollisionMap(x1: number, z1: number, x2: number, z2: number) { - const map = new CollisionFlagMap(); - for (let level = 0; level < 4; level++) { - for (let z = Math.min(z1, z2); z <= Math.max(z1, z2); z++) { - for (let x = Math.min(x1, x2); x <= Math.max(x1, x2); x++) { - map.allocateIfAbsent(x, z, level); - } - } - } - return map; -} - -function flag(map: CollisionFlagMap, baseX: number, baseZ: number, width: number, height: number, mask: number) { - for (let level = 0; level < 4; level++) { - for (let z = 0; z < height; z++) { - for (let x = 0; x < width; x++) { - map.set(baseX + x, baseZ + z, level, mask); - } - } - } -} - -describe('RectangularReachStrategy', () => { - const BLOCK_ACCESS_FLAG_TEST_ARGS = [ - [ 0, 1, DirectionFlag.NORTH ], - [ 1, 0, DirectionFlag.EAST ], - [ 0, -1, DirectionFlag.SOUTH ], - [ -1, 0, DirectionFlag.WEST ] - ] as const; - - const DIMENSIONS_TEST_ARGS = [ - [ 1, 1 ], - [ 1, 2 ], - [ 1, 3 ], - [ 2, 1 ], - [ 2, 2 ], - [ 2, 3 ], - [ 3, 1 ], - [ 3, 2 ], - [ 3, 3 ] - ] as const; - - const WALL_STRAIGHT_STRATEGY_TEST_ARGS = [ - [ 0, 0, 1, CollisionFlag.WALL_SOUTH ], - [ 0, 0, -1, CollisionFlag.WALL_NORTH ], - [ 1, -1, 0, CollisionFlag.WALL_EAST ], - [ 1, 1, 0, CollisionFlag.WALL_WEST ], - [ 2, 0, 1, CollisionFlag.WALL_SOUTH ], - [ 2, 0, -1, CollisionFlag.WALL_NORTH ], - [ 3, -1, 0, CollisionFlag.WALL_EAST ], - [ 3, 1, 0, CollisionFlag.WALL_WEST ] - ] as const; - - const WALL_L_STRATEGY_TEST_ARGS = [ - [ 0, 1, 0, CollisionFlag.WALL_WEST ], - [ 0, 0, -1, CollisionFlag.WALL_NORTH ], - [ 1, -1, 0, CollisionFlag.WALL_EAST ], - [ 1, 0, -1, CollisionFlag.BLOCK_NORTH ], - [ 2, -1, 0, CollisionFlag.BLOCK_EAST ], - [ 2, 0, 1, CollisionFlag.BLOCK_NORTH ], - [ 3, 0, 1, CollisionFlag.BLOCK_SOUTH ], - [ 3, 1, 0, CollisionFlag.BLOCK_WEST ] - ] as const; - - const WALLDECOR_DIAGONAL_OFFSET_STRATEGY_TEST_ARGS = [ - [ 0, 1, 0, CollisionFlag.WALL_WEST ], - [ 0, 0, -1, CollisionFlag.WALL_NORTH ], - [ 1, -1, 0, CollisionFlag.WALL_EAST ], - [ 1, 0, -1, CollisionFlag.WALL_NORTH ], - [ 2, -1, 0, CollisionFlag.WALL_EAST ], - [ 2, 0, 1, CollisionFlag.WALL_SOUTH ], - [ 3, 1, 0, CollisionFlag.WALL_WEST ], - [ 3, 0, 1, CollisionFlag.WALL_SOUTH ] - ]; - - describe('test wall decor strategy', () => { - const srcX = 3200; - const srcZ = 3200; - const objX = 3200; - const objZ = 3200; - const map = buildCollisionMap(srcX, srcZ, objX, objZ); - - describe('shape 6', () => { - test.each(WALLDECOR_DIAGONAL_OFFSET_STRATEGY_TEST_ARGS)('test reach with dimensions', (rotation, dirX, dirZ, flag) => { - map.set(objX + dirX, objZ + dirZ, 0, flag); - - const reached = ReachStrategy.reached(map, 0, srcX + dirX, objZ + dirZ, objX, objZ, 1, 1, 1, rotation, 6); - expect(reached).toBeFalsy(); - - map.set(objX + dirX, objZ + dirZ, 0, CollisionFlag.OPEN); - - const reached2 = ReachStrategy.reached(map, 0, srcX + dirX, objZ + dirZ, objX, objZ, 1, 1, 1, rotation, 6); - expect(reached2).toBeTruthy(); - }); - }); - - describe('shape 7', () => { - test.each(WALLDECOR_DIAGONAL_OFFSET_STRATEGY_TEST_ARGS)('test reach with dimensions', (rotation, dirX, dirZ, flag) => { - map.set(objX + dirX, objZ + dirZ, 0, flag); - - const reached = ReachStrategy.reached(map, 0, srcX + dirX, objZ + dirZ, objX, objZ, 1, 1, 1, ReachStrategy.alteredRotation(rotation, 7), 7); - expect(reached).toBeFalsy(); - - map.set(objX + dirX, objZ + dirZ, 0, CollisionFlag.OPEN); - - const reached2 = ReachStrategy.reached(map, 0, srcX + dirX, objZ + dirZ, objX, objZ, 1, 1, 1, ReachStrategy.alteredRotation(rotation, 7), 7); - expect(reached2).toBeTruthy(); - }); - }); - - describe('shape 8', () => { - test.each(WALLDECOR_DIAGONAL_OFFSET_STRATEGY_TEST_ARGS)('test reach with dimensions', (rotation, dirX, dirZ, flag) => { - map.set(objX + dirX, objZ + dirZ, 0, flag); - - const reached = ReachStrategy.reached(map, 0, srcX + dirX, objZ + dirZ, objX, objZ, 1, 1, 1, rotation, 8); - expect(reached).toBeFalsy(); - - map.set(objX + dirX, objZ + dirZ, 0, CollisionFlag.OPEN); - - const reached2 = ReachStrategy.reached(map, 0, srcX + dirX, objZ + dirZ, objX, objZ, 1, 1, 1, rotation, 8); - expect(reached2).toBeTruthy(); - }); - }); - }); - - describe('test wall strategy', () => { - describe('no flags', () => { - const srcX = 3200; - const srcZ = 3200; - const objX = 3200; - const objZ = 3200; - const map = buildCollisionMap(srcX, srcZ, objX, objZ); - - describe('shape 0', () => { - test.each(WALL_STRAIGHT_STRATEGY_TEST_ARGS)('test reach with dimensions', (rotation, dirX, dirZ, flag) => { - map.set(objX + dirX, objZ + dirZ, 0, flag); - - const reached = ReachStrategy.reached(map, 0, objX + dirX, objZ + dirZ, objX, objZ, 1, 1, 1, rotation, 0); - expect(reached).toBeFalsy(); - - const reached2 = ReachStrategy.reached(map, 0, objX, objZ, objX + dirX, objZ + dirZ, 1, 1, 1, rotation, 0); - expect(reached2).toBeTruthy(); - - map.remove(objX + dirX, objZ + dirZ, 0, flag); - }); - }); - - describe('shape 2', () => { - test.each(WALL_L_STRATEGY_TEST_ARGS)('test reach with dimensions', (rotation, dirX, dirZ, flag) => { - map.set(objX + dirX, objZ + dirZ, 0, flag); - - const reached = ReachStrategy.reached(map, 0, objX + dirX, objZ + dirZ, objX, objZ, 1, 1, 1, rotation, 2); - expect(reached).toBeFalsy(); - - const reached2 = ReachStrategy.reached(map, 0, objX, objZ, objX + dirX, objZ + dirZ, 1, 1, 1, rotation, 2); - expect(reached2).toBeTruthy(); - - map.remove(objX + dirX, objZ + dirZ, 0, flag); - }); - }); - - describe('shape 9', () => { - test.each(WALL_STRAIGHT_STRATEGY_TEST_ARGS)('test reach with dimensions', (rotation, dirX, dirZ, flag) => { - map.set(objX + dirX, objZ + dirZ, 0, flag); - - const reached = ReachStrategy.reached(map, 0, objX + dirX, objZ + dirZ, objX, objZ, 1, 1, 1, rotation, 9); - expect(reached).toBeFalsy(); - - const reached2 = ReachStrategy.reached(map, 0, objX, objZ, objX + dirX, objZ + dirZ, 1, 1, 1, rotation, 9); - expect(reached2).toBeTruthy(); - - map.remove(objX + dirX, objZ + dirZ, 0, flag); - }); - }); - }); - - describe('with flags', () => { - const srcX = 3200; - const srcZ = 3200; - const objX = 3200; - const objZ = 3200; - const map = buildCollisionMap(srcX, srcZ, objX, objZ); - - describe('shape 0', () => { - test.each(WALL_STRAIGHT_STRATEGY_TEST_ARGS)('test reach with dimensions', (rotation, dirX, dirZ, flag) => { - map.set(objX + dirX, objZ + dirZ, 0, flag); - - const reached = ReachStrategy.reached(map, 0, srcX + dirX, objZ + dirZ, objX, objZ, 1, 1, 1, rotation, 0); - expect(reached).toBeFalsy(); - - map.set(objX + dirX, objZ + dirZ, 0, CollisionFlag.OPEN); - - const reached2 = ReachStrategy.reached(map, 0, srcX + dirX, objZ + dirZ, objX, objZ, 1, 1, 1, rotation, 0); - expect(reached2).toBeTruthy(); - - map.remove(objX + dirX, objZ + dirZ, 0, flag); - }); - }); - - describe('shape 2', () => { - test.each(WALL_L_STRATEGY_TEST_ARGS)('test reach with dimensions', (rotation, dirX, dirZ, flag) => { - map.set(objX + dirX, objZ + dirZ, 0, flag); - - const reached = ReachStrategy.reached(map, 0, srcX + dirX, objZ + dirZ, objX, objZ, 1, 1, 1, rotation, 2); - expect(reached).toBeFalsy(); - - map.set(objX + dirX, objZ + dirZ, 0, CollisionFlag.OPEN); - - const reached2 = ReachStrategy.reached(map, 0, srcX + dirX, objZ + dirZ, objX, objZ, 1, 1, 1, rotation, 2); - expect(reached2).toBeTruthy(); - - map.remove(objX + dirX, objZ + dirZ, 0, flag); - }); - }); - - describe('shape 9', () => { - test.each(WALL_STRAIGHT_STRATEGY_TEST_ARGS)('test reach with dimensions', (rotation, dirX, dirZ, flag) => { - map.set(objX + dirX, objZ + dirZ, 0, flag); - - const reached = ReachStrategy.reached(map, 0, srcX + dirX, objZ + dirZ, objX, objZ, 1, 1, 1, rotation, 9); - expect(reached).toBeFalsy(); - - map.set(objX + dirX, objZ + dirZ, 0, CollisionFlag.OPEN); - - const reached2 = ReachStrategy.reached(map, 0, srcX + dirX, objZ + dirZ, objX, objZ, 1, 1, 1, rotation, 9); - expect(reached2).toBeTruthy(); - - map.remove(objX + dirX, objZ + dirZ, 0, flag); - }); - }); - }); - }); - - describe('test divided by loc', () => { - const srcX = 3200; - const srcZ = 3200; - const objX = 3200; - const objZ = 3201; - const map = buildCollisionMap(srcX, srcZ, objX, objZ); - map.set(srcX, srcZ, 0, CollisionFlag.WALL_NORTH); - - test('test blocked north', () => { - const reached = ReachStrategy.reached(map, 0, srcX, srcZ, objX, objZ, 1, 1, 1, 0, 10); - expect(reached).toBeFalsy(); - }); - - test('test free east', () => { - map.set(srcX, srcZ, 0, CollisionFlag.WALL_EAST); - const reached = ReachStrategy.reached(map, 0, srcX, srcZ, objX, objZ, 1, 1, 1, 0, 10); - expect(reached).toBeTruthy(); - }); - - test('test free south', () => { - map.set(srcX, srcZ, 0, CollisionFlag.WALL_SOUTH); - const reached = ReachStrategy.reached(map, 0, srcX, srcZ, objX, objZ, 1, 1, 1, 0, 10); - expect(reached).toBeTruthy(); - }); - - test('test free west', () => { - map.set(srcX, srcZ, 0, CollisionFlag.WALL_WEST); - const reached = ReachStrategy.reached(map, 0, srcX, srcZ, objX, objZ, 1, 1, 1, 0, 10); - expect(reached).toBeTruthy(); - }); - - test('test free northwest', () => { - map.set(srcX, srcZ, 0, CollisionFlag.WALL_NORTH_WEST); - const reached = ReachStrategy.reached(map, 0, srcX, srcZ, objX, objZ, 1, 1, 1, 0, 10); - expect(reached).toBeTruthy(); - }); - - test('test free northeast', () => { - map.set(srcX, srcZ, 0, CollisionFlag.WALL_NORTH_EAST); - const reached = ReachStrategy.reached(map, 0, srcX, srcZ, objX, objZ, 1, 1, 1, 0, 10); - expect(reached).toBeTruthy(); - }); - - test('test free southeast', () => { - map.set(srcX, srcZ, 0, CollisionFlag.WALL_SOUTH_EAST); - const reached = ReachStrategy.reached(map, 0, srcX, srcZ, objX, objZ, 1, 1, 1, 0, 10); - expect(reached).toBeTruthy(); - }); - - test('test free southwest', () => { - map.set(srcX, srcZ, 0, CollisionFlag.WALL_SOUTH_WEST); - const reached = ReachStrategy.reached(map, 0, srcX, srcZ, objX, objZ, 1, 1, 1, 0, 10); - expect(reached).toBeTruthy(); - }); - }); - - describe('test divided by wall', () => { - const srcX = 3200; - const srcZ = 3200; - const objX = 3200; - const objZ = 3201; - const map = buildCollisionMap(srcX, srcZ, objX, objZ); - map.set(srcX, srcZ, 0, CollisionFlag.WALL_NORTH); - - test('test blocked north', () => { - const reached = ReachStrategy.reachRectangle(map, 0, srcX, srcZ, objX, objZ, 1, 1, 1); - expect(reached).toBeFalsy(); - }); - - test('test free east', () => { - map.set(srcX, srcZ, 0, CollisionFlag.WALL_EAST); - const reached = ReachStrategy.reachRectangle(map, 0, srcX, srcZ, objX, objZ, 1, 1, 1); - expect(reached).toBeTruthy(); - }); - - test('test free south', () => { - map.set(srcX, srcZ, 0, CollisionFlag.WALL_SOUTH); - const reached = ReachStrategy.reachRectangle(map, 0, srcX, srcZ, objX, objZ, 1, 1, 1); - expect(reached).toBeTruthy(); - }); - - test('test free west', () => { - map.set(srcX, srcZ, 0, CollisionFlag.WALL_WEST); - const reached = ReachStrategy.reachRectangle(map, 0, srcX, srcZ, objX, objZ, 1, 1, 1); - expect(reached).toBeTruthy(); - }); - - test('test free northwest', () => { - map.set(srcX, srcZ, 0, CollisionFlag.WALL_NORTH_WEST); - const reached = ReachStrategy.reachRectangle(map, 0, srcX, srcZ, objX, objZ, 1, 1, 1); - expect(reached).toBeTruthy(); - }); - - test('test free northeast', () => { - map.set(srcX, srcZ, 0, CollisionFlag.WALL_NORTH_EAST); - const reached = ReachStrategy.reachRectangle(map, 0, srcX, srcZ, objX, objZ, 1, 1, 1); - expect(reached).toBeTruthy(); - }); - - test('test free southeast', () => { - map.set(srcX, srcZ, 0, CollisionFlag.WALL_SOUTH_EAST); - const reached = ReachStrategy.reachRectangle(map, 0, srcX, srcZ, objX, objZ, 1, 1, 1); - expect(reached).toBeTruthy(); - }); - - test('test free southwest', () => { - map.set(srcX, srcZ, 0, CollisionFlag.WALL_SOUTH_WEST); - const reached = ReachStrategy.reachRectangle(map, 0, srcX, srcZ, objX, objZ, 1, 1, 1); - expect(reached).toBeTruthy(); - }); - }); - - describe('test block access flag', () => { - test.each(BLOCK_ACCESS_FLAG_TEST_ARGS)('test block access flag', (offX, offZ, directionFlag) => { - const objX = 3205; - const objZ = 3205; - const map = buildCollisionMap(objX, objZ, objX, objZ); - flag(map, objX, objZ, 1, 1, CollisionFlag.LOC); - - const cardinal = [ - [ 0, -1 ], - [ 0, 1 ], - [ -1, 0 ], - [ 1, 0 ] - ]; - - for (const dir of cardinal) { - const srcX = objX + dir[0]; - const srcZ = objZ + dir[1]; - map.allocateIfAbsent(srcX, srcZ, 0); - - const reached = ReachStrategy.reachRectangle(map, 0, srcX, srcZ, objX, objZ, 1, 1, 1, 0, directionFlag); - - if (dir[0] === offX && dir[1] === offZ) { - expect(reached).toBeFalsy(); - } else { - expect(reached).toBeTruthy(); - } - } - }); - - test.each(BLOCK_ACCESS_FLAG_TEST_ARGS)('test block access flag exclusive', (offX, offZ, directionFlag) => { - const objX = 3205; - const objZ = 3205; - const map = buildCollisionMap(objX, objZ, objX, objZ); - flag(map, objX, objZ, 1, 1, CollisionFlag.LOC); - - const cardinal = [ - [ 0, -1 ], - [ 0, 1 ], - [ -1, 0 ], - [ 1, 0 ] - ]; - - for (const dir of cardinal) { - const srcX = objX + dir[0]; - const srcZ = objZ + dir[1]; - map.allocateIfAbsent(srcX, srcZ, 0); - - const reached = ReachStrategy.reachExclusiveRectangle(map, 0, srcX, srcZ, objX, objZ, 1, 1, 1, 0, directionFlag); - - if (dir[0] === offX && dir[1] === offZ) { - expect(reached).toBeFalsy(); - } else { - expect(reached).toBeTruthy(); - } - } - }); - }); - - describe('test reach with dimensions', () => { - test.each(DIMENSIONS_TEST_ARGS)('test reach with dimensions', (width, height) => { - const objX = 3202 + width; - const objZ = 3202; - const map = buildCollisionMap(objX - 1, objZ - 1, objX + width, objZ + height); - flag(map, objX, objZ, width, height, CollisionFlag.LOC); - - const reached1 = ReachStrategy.reachRectangle(map, 0, objX - 2, objZ - 1, objX, objZ, 1, width, height); - expect(reached1).toBeFalsy(); - - const reached2 = ReachStrategy.reachRectangle(map, 0, objX - 1, objZ - 2, objX, objZ, 1, width, height); - expect(reached2).toBeFalsy(); - - for (let x = -1; x < width + 1; x++) { - for (let z = -1; z < height + 1; z++) { - const reached3 = ReachStrategy.reachRectangle(map, 0, objX + x, objZ + z, objX, objZ, 1, width, height); - const diagonal = z === -1 && x === -1 || z === height && x === width || z === -1 && x === width || z === height && x === -1; - if (diagonal) { - expect(reached3).toBeFalsy(); - continue; - } - expect(reached3).toBeTruthy(); - } - } - }); - - test.each(DIMENSIONS_TEST_ARGS)('test reach with dimensions exclusive', (width, height) => { - const objX = 3202 + width; - const objZ = 3202; - const map = buildCollisionMap(objX - 1, objZ - 1, objX + width, objZ + height); - flag(map, objX, objZ, width, height, CollisionFlag.LOC); - - const reached1 = ReachStrategy.reachExclusiveRectangle(map, 0, objX - 2, objZ - 1, objX, objZ, 1, width, height); - expect(reached1).toBeFalsy(); - - const reached2 = ReachStrategy.reachExclusiveRectangle(map, 0, objX - 1, objZ - 2, objX, objZ, 1, width, height); - expect(reached2).toBeFalsy(); - - for (let x = -1; x < width + 1; x++) { - for (let z = -1; z < height + 1; z++) { - const reached3 = ReachStrategy.reachExclusiveRectangle(map, 0, objX + x, objZ + z, objX, objZ, 1, width, height); - const diagonal = z === -1 && x === -1 || z === height && x === width || z === -1 && x === width || z === height && x === -1; - if (diagonal) { - expect(reached3).toBeFalsy(); - continue; - } - const inLocArea = 0 <= x && width > x && 0 <= z && height > z; - if (inLocArea) { - expect(reached3).toBeFalsy(); - continue; - } - expect(reached3).toBeTruthy(); - } - } - }); - }); -}); \ No newline at end of file diff --git a/test/rsmod/utils/RotationUtils.test.ts b/test/rsmod/utils/RotationUtils.test.ts deleted file mode 100644 index b6e46e9..0000000 --- a/test/rsmod/utils/RotationUtils.test.ts +++ /dev/null @@ -1,54 +0,0 @@ -import RotationUtils from '../../../src/rsmod/utils/RotationUtils'; -import BlockAccessFlag from '../../../src/rsmod/flag/BlockAccessFlag'; - -describe('RotationUtils', () => { - test('test rotate width', () => { - const width = 3; - const height = 2; - expect(RotationUtils.rotate(0, width, height)).toBe(width); - expect(RotationUtils.rotate(1, width, height)).toBe(height); - expect(RotationUtils.rotate(2, width, height)).toBe(width); - expect(RotationUtils.rotate(3, width, height)).toBe(height); - }); - - test('test rotate height', () => { - const width = 3; - const height = 2; - expect(RotationUtils.rotate(0, height, width)).toBe(height); - expect(RotationUtils.rotate(1, height, width)).toBe(width); - expect(RotationUtils.rotate(2, height, width)).toBe(height); - expect(RotationUtils.rotate(3, height, width)).toBe(width); - }); - - test('test rotate block access flag north', () => { - const north = BlockAccessFlag.BLOCK_NORTH; - expect(RotationUtils.rotateFlags(0, north)).toBe(BlockAccessFlag.BLOCK_NORTH); - expect(RotationUtils.rotateFlags(1, north)).toBe(BlockAccessFlag.BLOCK_EAST); - expect(RotationUtils.rotateFlags(2, north)).toBe(BlockAccessFlag.BLOCK_SOUTH); - expect(RotationUtils.rotateFlags(3, north)).toBe(BlockAccessFlag.BLOCK_WEST); - }); - - test('test rotate block access flag east', () => { - const east = BlockAccessFlag.BLOCK_EAST; - expect(RotationUtils.rotateFlags(0, east)).toBe(BlockAccessFlag.BLOCK_EAST); - expect(RotationUtils.rotateFlags(1, east)).toBe(BlockAccessFlag.BLOCK_SOUTH); - expect(RotationUtils.rotateFlags(2, east)).toBe(BlockAccessFlag.BLOCK_WEST); - expect(RotationUtils.rotateFlags(3, east)).toBe(BlockAccessFlag.BLOCK_NORTH); - }); - - test('test rotate block access flag south', () => { - const south = BlockAccessFlag.BLOCK_SOUTH; - expect(RotationUtils.rotateFlags(0, south)).toBe(BlockAccessFlag.BLOCK_SOUTH); - expect(RotationUtils.rotateFlags(1, south)).toBe(BlockAccessFlag.BLOCK_WEST); - expect(RotationUtils.rotateFlags(2, south)).toBe(BlockAccessFlag.BLOCK_NORTH); - expect(RotationUtils.rotateFlags(3, south)).toBe(BlockAccessFlag.BLOCK_EAST); - }); - - test('test rotate block access flag west', () => { - const west = BlockAccessFlag.BLOCK_WEST; - expect(RotationUtils.rotateFlags(0, west)).toBe(BlockAccessFlag.BLOCK_WEST); - expect(RotationUtils.rotateFlags(1, west)).toBe(BlockAccessFlag.BLOCK_NORTH); - expect(RotationUtils.rotateFlags(2, west)).toBe(BlockAccessFlag.BLOCK_EAST); - expect(RotationUtils.rotateFlags(3, west)).toBe(BlockAccessFlag.BLOCK_SOUTH); - }); -}); diff --git a/tsconfig.json b/tsconfig.json index 097028e..d67c510 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,21 +1,9 @@ { - "compilerOptions": { - "rootDir": "src", - "outDir": "dist", - "target": "esnext", - "module": "NodeNext", - "moduleResolution": "NodeNext", - "allowJs": false, - "checkJs": false, - "strict": true, - "alwaysStrict": true, - "allowSyntheticDefaultImports": true, - "declaration": true - }, - "include": [ - "src/**/*.ts" - ], - "exclude": [ - "node_modules" - ] + "compilerOptions": {}, + "include": [ + "src/**/*.ts" + ], + "exclude": [ + "node_modules" + ] } \ No newline at end of file