From 410ce616e6fbbb4e03be04a37fbce6933cafe61c Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Sun, 24 Jul 2022 22:53:37 -0400 Subject: [PATCH] lsp: Add initial LSP support (#16) --- .eslintrc.yml | 13 + .github/dependabot.yml | 10 + .github/workflows/build.yaml | 30 + .github/workflows/lint.yaml | 45 + .gitignore | 3 + .prettierignore | 6 + .prettierrc.json | 0 .vscode/launch.json | 28 +- .vscode/tasks.json | 32 +- package-lock.json | 407 +- package.json | 26 +- snippets/opengoal.json | 14 +- src/RecentFiles.ts | 3 - src/config/config.ts | 10 + src/extension.ts | 8 + src/lsp/LICENSE | 24 + src/lsp/download.ts | 28 + src/lsp/main.ts | 306 + src/lsp/util.ts | 64 + src/utils/FileUtils.ts | 6 +- src/utils/download.ts | 57 + test/sample_ir2.asm | 30214 ++++++++++++++++++++++++++++++++- tsconfig.json | 21 +- 23 files changed, 30943 insertions(+), 412 deletions(-) create mode 100644 .eslintrc.yml create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/build.yaml create mode 100644 .github/workflows/lint.yaml create mode 100644 .prettierignore create mode 100644 .prettierrc.json create mode 100644 src/config/config.ts create mode 100644 src/lsp/LICENSE create mode 100644 src/lsp/download.ts create mode 100644 src/lsp/main.ts create mode 100644 src/lsp/util.ts create mode 100644 src/utils/download.ts diff --git a/.eslintrc.yml b/.eslintrc.yml new file mode 100644 index 0000000..1a4f1c4 --- /dev/null +++ b/.eslintrc.yml @@ -0,0 +1,13 @@ +env: + browser: true + es2021: true +extends: + - eslint:recommended + - plugin:@typescript-eslint/recommended +parser: "@typescript-eslint/parser" +parserOptions: + ecmaVersion: latest + sourceType: module +plugins: + - "@typescript-eslint" +rules: {} diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..d1fc134 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "monthly" + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "weekly" diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000..026fe47 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,30 @@ +name: 🔨 Build + +on: + push: + branches: + - "*" + tags: + - v* + pull_request: + branches: + - master + +jobs: + build: + name: Extension + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 16 + cache: npm + + - name: Install NPM Dependencies and Build Extension + run: | + npm ci + npm run compile diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml new file mode 100644 index 0000000..4d8e0f0 --- /dev/null +++ b/.github/workflows/lint.yaml @@ -0,0 +1,45 @@ +name: 📝 Lint + +on: + push: + branches: + - "*" + pull_request: + branches: + - master + +jobs: + lint: + name: ESLint + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 16 + cache: npm + + - name: Install Dependencies and Check Formatting + run: | + npm ci + npm run lint + formatting: + name: Formatting + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 16 + cache: npm + + - name: Install Dependencies and Check Formatting + run: | + npm ci + npm run format:check diff --git a/.gitignore b/.gitignore index 665178e..5b63c4f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ node_modules *.vsix out/ +*.log +*.exe +*.bin diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..5b63c4f --- /dev/null +++ b/.prettierignore @@ -0,0 +1,6 @@ +node_modules +*.vsix +out/ +*.log +*.exe +*.bin diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..e69de29 diff --git a/.vscode/launch.json b/.vscode/launch.json index b71251a..2ff0a35 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -3,20 +3,16 @@ // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 { - "version": "0.2.0", - "configurations": [ - { - "name": "Extension", - "type": "extensionHost", - "request": "launch", - "runtimeExecutable": "${execPath}", - "args": [ - "--extensionDevelopmentPath=${workspaceFolder}" - ], - "outFiles": [ - "${workspaceFolder}/out/**/*.js" - ], - "preLaunchTask": "npm: watch" - } - ] + "version": "0.2.0", + "configurations": [ + { + "name": "Extension", + "type": "extensionHost", + "request": "launch", + "runtimeExecutable": "${execPath}", + "args": ["--extensionDevelopmentPath=${workspaceFolder}"], + "outFiles": ["${workspaceFolder}/out/**/*.js"], + "preLaunchTask": "npm: watch" + } + ] } diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 3b17e53..078ff7e 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -1,20 +1,20 @@ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format { - "version": "2.0.0", - "tasks": [ - { - "type": "npm", - "script": "watch", - "problemMatcher": "$tsc-watch", - "isBackground": true, - "presentation": { - "reveal": "never" - }, - "group": { - "kind": "build", - "isDefault": true - } - } - ] + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "watch", + "problemMatcher": "$tsc-watch", + "isBackground": true, + "presentation": { + "reveal": "never" + }, + "group": { + "kind": "build", + "isDefault": true + } + } + ] } diff --git a/package-lock.json b/package-lock.json index 1fa8020..3b2e196 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,13 @@ "name": "opengoal", "version": "0.0.2", "license": "ISC", + "dependencies": { + "follow-redirects": "^1.15.1", + "open": "^8.4.0", + "vscode-languageclient": "^8.0.1" + }, "devDependencies": { + "@types/follow-redirects": "^1.14.1", "@types/node": "^12.12.0", "@types/vscode": "^1.34.0", "@typescript-eslint/eslint-plugin": "^5.19.0", @@ -95,6 +101,15 @@ "node": ">= 8" } }, + "node_modules/@types/follow-redirects": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@types/follow-redirects/-/follow-redirects-1.14.1.tgz", + "integrity": "sha512-THBEFwqsLuU/K62B5JRwab9NW97cFmL4Iy34NTMX0bMycQVzq2q7PKOkhfivIwxdpa/J72RppgC42vCHfwKJ0Q==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", @@ -114,19 +129,19 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.19.0.tgz", - "integrity": "sha512-w59GpFqDYGnWFim9p6TGJz7a3qWeENJuAKCqjGSx+Hq/bwq3RZwXYqy98KIfN85yDqz9mq6QXiY5h0FjGQLyEg==", + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.7.tgz", + "integrity": "sha512-l4L6Do+tfeM2OK0GJsU7TUcM/1oN/N25xHm3Jb4z3OiDU4Lj8dIuxX9LpVMS9riSXQs42D1ieX7b85/r16H9Fw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.19.0", - "@typescript-eslint/type-utils": "5.19.0", - "@typescript-eslint/utils": "5.19.0", - "debug": "^4.3.2", + "@typescript-eslint/scope-manager": "5.30.7", + "@typescript-eslint/type-utils": "5.30.7", + "@typescript-eslint/utils": "5.30.7", + "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", + "ignore": "^5.2.0", "regexpp": "^3.2.0", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { @@ -147,15 +162,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.19.0.tgz", - "integrity": "sha512-yhktJjMCJX8BSBczh1F/uY8wGRYrBeyn84kH6oyqdIJwTGKmzX5Qiq49LRQ0Jh0LXnWijEziSo6BRqny8nqLVQ==", + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.7.tgz", + "integrity": "sha512-Rg5xwznHWWSy7v2o0cdho6n+xLhK2gntImp0rJroVVFkcYFYQ8C8UJTSuTw/3CnExBmPjycjmUJkxVmjXsld6A==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.19.0", - "@typescript-eslint/types": "5.19.0", - "@typescript-eslint/typescript-estree": "5.19.0", - "debug": "^4.3.2" + "@typescript-eslint/scope-manager": "5.30.7", + "@typescript-eslint/types": "5.30.7", + "@typescript-eslint/typescript-estree": "5.30.7", + "debug": "^4.3.4" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -174,13 +189,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.19.0.tgz", - "integrity": "sha512-Fz+VrjLmwq5fbQn5W7cIJZ066HxLMKvDEmf4eu1tZ8O956aoX45jAuBB76miAECMTODyUxH61AQM7q4/GOMQ5g==", + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.7.tgz", + "integrity": "sha512-7BM1bwvdF1UUvt+b9smhqdc/eniOnCKxQT/kj3oXtj3LqnTWCAM0qHRHfyzCzhEfWX0zrW7KqXXeE4DlchZBKw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.19.0", - "@typescript-eslint/visitor-keys": "5.19.0" + "@typescript-eslint/types": "5.30.7", + "@typescript-eslint/visitor-keys": "5.30.7" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -191,13 +206,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.19.0.tgz", - "integrity": "sha512-O6XQ4RI4rQcBGshTQAYBUIGsKqrKeuIOz9v8bckXZnSeXjn/1+BDZndHLe10UplQeJLXDNbaZYrAytKNQO2T4Q==", + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.30.7.tgz", + "integrity": "sha512-nD5qAE2aJX/YLyKMvOU5jvJyku4QN5XBVsoTynFrjQZaDgDV6i7QHFiYCx10wvn7hFvfuqIRNBtsgaLe0DbWhw==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.19.0", - "debug": "^4.3.2", + "@typescript-eslint/utils": "5.30.7", + "debug": "^4.3.4", "tsutils": "^3.21.0" }, "engines": { @@ -217,9 +232,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.19.0.tgz", - "integrity": "sha512-zR1ithF4Iyq1wLwkDcT+qFnhs8L5VUtjgac212ftiOP/ZZUOCuuF2DeGiZZGQXGoHA50OreZqLH5NjDcDqn34w==", + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.7.tgz", + "integrity": "sha512-ocVkETUs82+U+HowkovV6uxf1AnVRKCmDRNUBUUo46/5SQv1owC/EBFkiu4MOHeZqhKz2ktZ3kvJJ1uFqQ8QPg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -230,17 +245,17 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.19.0.tgz", - "integrity": "sha512-dRPuD4ocXdaE1BM/dNR21elSEUPKaWgowCA0bqJ6YbYkvtrPVEvZ+zqcX5a8ECYn3q5iBSSUcBBD42ubaOp0Hw==", + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.7.tgz", + "integrity": "sha512-tNslqXI1ZdmXXrHER83TJ8OTYl4epUzJC0aj2i4DMDT4iU+UqLT3EJeGQvJ17BMbm31x5scSwo3hPM0nqQ1AEA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.19.0", - "@typescript-eslint/visitor-keys": "5.19.0", - "debug": "^4.3.2", - "globby": "^11.0.4", + "@typescript-eslint/types": "5.30.7", + "@typescript-eslint/visitor-keys": "5.30.7", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { @@ -257,15 +272,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.19.0.tgz", - "integrity": "sha512-ZuEckdupXpXamKvFz/Ql8YnePh2ZWcwz7APICzJL985Rp5C2AYcHO62oJzIqNhAMtMK6XvrlBTZeNG8n7gS3lQ==", + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.7.tgz", + "integrity": "sha512-Z3pHdbFw+ftZiGUnm1GZhkJgVqsDL5CYW2yj+TB2mfXDFOMqtbzQi2dNJIyPqPbx9mv2kUxS1gU+r2gKlKi1rQ==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.19.0", - "@typescript-eslint/types": "5.19.0", - "@typescript-eslint/typescript-estree": "5.19.0", + "@typescript-eslint/scope-manager": "5.30.7", + "@typescript-eslint/types": "5.30.7", + "@typescript-eslint/typescript-estree": "5.30.7", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -281,13 +296,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.19.0.tgz", - "integrity": "sha512-Ym7zZoMDZcAKWsULi2s7UMLREdVQdScPQ/fKWMYefarCztWlHPFVJo8racf8R0Gc8FAEJ2eD4of8As1oFtnQlQ==", + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.7.tgz", + "integrity": "sha512-KrRXf8nnjvcpxDFOKej4xkD7657+PClJs5cJVSG7NNoCNnjEdc46juNAQt7AyuWctuCgs6mVRc1xGctEqrjxWw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.19.0", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/types": "5.30.7", + "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -376,14 +391,12 @@ "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 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "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" @@ -447,8 +460,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "node_modules/cross-spawn": { "version": "7.0.3", @@ -487,6 +499,14 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -818,6 +838,25 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, + "node_modules/follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -956,6 +995,20 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -986,6 +1039,17 @@ "node": ">=0.12.0" } }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -1039,7 +1103,6 @@ "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" }, @@ -1073,7 +1136,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1102,6 +1164,22 @@ "wrappy": "1" } }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -1281,7 +1359,6 @@ "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -1449,6 +1526,41 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, + "node_modules/vscode-jsonrpc": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.2.tgz", + "integrity": "sha512-RY7HwI/ydoC1Wwg4gJ3y6LpU9FJRZAUnTYMXthqhFXXu77ErDd/xkREpGuk4MyYkk4a+XDWAMqe0S3KkelYQEQ==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageclient": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.0.2.tgz", + "integrity": "sha512-lHlthJtphG9gibGb/y72CKqQUxwPsMXijJVpHEC2bvbFqxmkj9LwQ3aGU9dwjBLqsX1S4KjShYppLvg1UJDF/Q==", + "dependencies": { + "minimatch": "^3.0.4", + "semver": "^7.3.5", + "vscode-languageserver-protocol": "3.17.2" + }, + "engines": { + "vscode": "^1.67.0" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.2.tgz", + "integrity": "sha512-8kYisQ3z/SQ2kyjlNeQxbkkTNmVFoQCqkmGrzLH6A9ecPlgTbp3wDTnUNqaUxYr4vlAcloxx8zwy7G5WdguYNg==", + "dependencies": { + "vscode-jsonrpc": "8.0.2", + "vscode-languageserver-types": "3.17.2" + } + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz", + "integrity": "sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==" + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -1482,8 +1594,7 @@ "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 + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } }, "dependencies": { @@ -1547,6 +1658,15 @@ "fastq": "^1.6.0" } }, + "@types/follow-redirects": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@types/follow-redirects/-/follow-redirects-1.14.1.tgz", + "integrity": "sha512-THBEFwqsLuU/K62B5JRwab9NW97cFmL4Iy34NTMX0bMycQVzq2q7PKOkhfivIwxdpa/J72RppgC42vCHfwKJ0Q==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", @@ -1566,98 +1686,98 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.19.0.tgz", - "integrity": "sha512-w59GpFqDYGnWFim9p6TGJz7a3qWeENJuAKCqjGSx+Hq/bwq3RZwXYqy98KIfN85yDqz9mq6QXiY5h0FjGQLyEg==", + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.7.tgz", + "integrity": "sha512-l4L6Do+tfeM2OK0GJsU7TUcM/1oN/N25xHm3Jb4z3OiDU4Lj8dIuxX9LpVMS9riSXQs42D1ieX7b85/r16H9Fw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.19.0", - "@typescript-eslint/type-utils": "5.19.0", - "@typescript-eslint/utils": "5.19.0", - "debug": "^4.3.2", + "@typescript-eslint/scope-manager": "5.30.7", + "@typescript-eslint/type-utils": "5.30.7", + "@typescript-eslint/utils": "5.30.7", + "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", + "ignore": "^5.2.0", "regexpp": "^3.2.0", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" } }, "@typescript-eslint/parser": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.19.0.tgz", - "integrity": "sha512-yhktJjMCJX8BSBczh1F/uY8wGRYrBeyn84kH6oyqdIJwTGKmzX5Qiq49LRQ0Jh0LXnWijEziSo6BRqny8nqLVQ==", + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.7.tgz", + "integrity": "sha512-Rg5xwznHWWSy7v2o0cdho6n+xLhK2gntImp0rJroVVFkcYFYQ8C8UJTSuTw/3CnExBmPjycjmUJkxVmjXsld6A==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.19.0", - "@typescript-eslint/types": "5.19.0", - "@typescript-eslint/typescript-estree": "5.19.0", - "debug": "^4.3.2" + "@typescript-eslint/scope-manager": "5.30.7", + "@typescript-eslint/types": "5.30.7", + "@typescript-eslint/typescript-estree": "5.30.7", + "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.19.0.tgz", - "integrity": "sha512-Fz+VrjLmwq5fbQn5W7cIJZ066HxLMKvDEmf4eu1tZ8O956aoX45jAuBB76miAECMTODyUxH61AQM7q4/GOMQ5g==", + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.7.tgz", + "integrity": "sha512-7BM1bwvdF1UUvt+b9smhqdc/eniOnCKxQT/kj3oXtj3LqnTWCAM0qHRHfyzCzhEfWX0zrW7KqXXeE4DlchZBKw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.19.0", - "@typescript-eslint/visitor-keys": "5.19.0" + "@typescript-eslint/types": "5.30.7", + "@typescript-eslint/visitor-keys": "5.30.7" } }, "@typescript-eslint/type-utils": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.19.0.tgz", - "integrity": "sha512-O6XQ4RI4rQcBGshTQAYBUIGsKqrKeuIOz9v8bckXZnSeXjn/1+BDZndHLe10UplQeJLXDNbaZYrAytKNQO2T4Q==", + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.30.7.tgz", + "integrity": "sha512-nD5qAE2aJX/YLyKMvOU5jvJyku4QN5XBVsoTynFrjQZaDgDV6i7QHFiYCx10wvn7hFvfuqIRNBtsgaLe0DbWhw==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.19.0", - "debug": "^4.3.2", + "@typescript-eslint/utils": "5.30.7", + "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.19.0.tgz", - "integrity": "sha512-zR1ithF4Iyq1wLwkDcT+qFnhs8L5VUtjgac212ftiOP/ZZUOCuuF2DeGiZZGQXGoHA50OreZqLH5NjDcDqn34w==", + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.7.tgz", + "integrity": "sha512-ocVkETUs82+U+HowkovV6uxf1AnVRKCmDRNUBUUo46/5SQv1owC/EBFkiu4MOHeZqhKz2ktZ3kvJJ1uFqQ8QPg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.19.0.tgz", - "integrity": "sha512-dRPuD4ocXdaE1BM/dNR21elSEUPKaWgowCA0bqJ6YbYkvtrPVEvZ+zqcX5a8ECYn3q5iBSSUcBBD42ubaOp0Hw==", + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.7.tgz", + "integrity": "sha512-tNslqXI1ZdmXXrHER83TJ8OTYl4epUzJC0aj2i4DMDT4iU+UqLT3EJeGQvJ17BMbm31x5scSwo3hPM0nqQ1AEA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.19.0", - "@typescript-eslint/visitor-keys": "5.19.0", - "debug": "^4.3.2", - "globby": "^11.0.4", + "@typescript-eslint/types": "5.30.7", + "@typescript-eslint/visitor-keys": "5.30.7", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" } }, "@typescript-eslint/utils": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.19.0.tgz", - "integrity": "sha512-ZuEckdupXpXamKvFz/Ql8YnePh2ZWcwz7APICzJL985Rp5C2AYcHO62oJzIqNhAMtMK6XvrlBTZeNG8n7gS3lQ==", + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.7.tgz", + "integrity": "sha512-Z3pHdbFw+ftZiGUnm1GZhkJgVqsDL5CYW2yj+TB2mfXDFOMqtbzQi2dNJIyPqPbx9mv2kUxS1gU+r2gKlKi1rQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.19.0", - "@typescript-eslint/types": "5.19.0", - "@typescript-eslint/typescript-estree": "5.19.0", + "@typescript-eslint/scope-manager": "5.30.7", + "@typescript-eslint/types": "5.30.7", + "@typescript-eslint/typescript-estree": "5.30.7", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.19.0.tgz", - "integrity": "sha512-Ym7zZoMDZcAKWsULi2s7UMLREdVQdScPQ/fKWMYefarCztWlHPFVJo8racf8R0Gc8FAEJ2eD4of8As1oFtnQlQ==", + "version": "5.30.7", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.7.tgz", + "integrity": "sha512-KrRXf8nnjvcpxDFOKej4xkD7657+PClJs5cJVSG7NNoCNnjEdc46juNAQt7AyuWctuCgs6mVRc1xGctEqrjxWw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.19.0", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/types": "5.30.7", + "eslint-visitor-keys": "^3.3.0" } }, "acorn": { @@ -1715,14 +1835,12 @@ "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 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "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, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1771,8 +1889,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "cross-spawn": { "version": "7.0.3", @@ -1800,6 +1917,11 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -2060,6 +2182,11 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, + "follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2162,6 +2289,11 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2183,6 +2315,14 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + } + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2230,7 +2370,6 @@ "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, "requires": { "yallist": "^4.0.0" } @@ -2255,7 +2394,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2281,6 +2419,16 @@ "wrappy": "1" } }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -2386,7 +2534,6 @@ "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, "requires": { "lru-cache": "^6.0.0" } @@ -2502,6 +2649,35 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, + "vscode-jsonrpc": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.2.tgz", + "integrity": "sha512-RY7HwI/ydoC1Wwg4gJ3y6LpU9FJRZAUnTYMXthqhFXXu77ErDd/xkREpGuk4MyYkk4a+XDWAMqe0S3KkelYQEQ==" + }, + "vscode-languageclient": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.0.2.tgz", + "integrity": "sha512-lHlthJtphG9gibGb/y72CKqQUxwPsMXijJVpHEC2bvbFqxmkj9LwQ3aGU9dwjBLqsX1S4KjShYppLvg1UJDF/Q==", + "requires": { + "minimatch": "^3.0.4", + "semver": "^7.3.5", + "vscode-languageserver-protocol": "3.17.2" + } + }, + "vscode-languageserver-protocol": { + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.2.tgz", + "integrity": "sha512-8kYisQ3z/SQ2kyjlNeQxbkkTNmVFoQCqkmGrzLH6A9ecPlgTbp3wDTnUNqaUxYr4vlAcloxx8zwy7G5WdguYNg==", + "requires": { + "vscode-jsonrpc": "8.0.2", + "vscode-languageserver-types": "3.17.2" + } + }, + "vscode-languageserver-types": { + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz", + "integrity": "sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==" + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2526,8 +2702,7 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } } diff --git a/package.json b/package.json index 94bc3e4..f9c8ad9 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,23 @@ "vscode:prepublish": "npm run compile", "compile": "tsc -p ./", "lint": "eslint . --ext .ts,.tsx", - "watch": "tsc -watch -p ./" + "watch": "tsc -watch -p ./", + "format": "npx prettier --write .", + "format:check": "npx prettier --check ." + }, + "devDependencies": { + "@types/follow-redirects": "^1.14.1", + "@types/node": "^12.12.0", + "@types/vscode": "^1.34.0", + "@typescript-eslint/eslint-plugin": "^5.19.0", + "@typescript-eslint/parser": "^5.19.0", + "eslint": "^8.13.0", + "typescript": "^4.6.3" + }, + "dependencies": { + "follow-redirects": "^1.15.1", + "open": "^8.4.0", + "vscode-languageclient": "^8.0.1" }, "activationEvents": [ "onLanguage:opengoal", @@ -277,13 +293,5 @@ "path": "./snippets/opengoal.json" } ] - }, - "devDependencies": { - "@types/node": "^12.12.0", - "@types/vscode": "^1.34.0", - "@typescript-eslint/eslint-plugin": "^5.19.0", - "@typescript-eslint/parser": "^5.19.0", - "eslint": "^8.13.0", - "typescript": "^4.6.3" } } diff --git a/snippets/opengoal.json b/snippets/opengoal.json index 745df76..dab6c54 100644 --- a/snippets/opengoal.json +++ b/snippets/opengoal.json @@ -1,11 +1,7 @@ { - "defun": { - "prefix": "defun", - "body": [ - "(defun ${1:name} (${2:vars})", - "\t\"${3:doc-string}\"", - "\t$0)" - ], - "description": "Create a new function" - } + "defun": { + "prefix": "defun", + "body": ["(defun ${1:name} (${2:vars})", "\t\"${3:doc-string}\"", "\t$0)"], + "description": "Create a new function" + } } diff --git a/src/RecentFiles.ts b/src/RecentFiles.ts index ac598c7..3e597c5 100644 --- a/src/RecentFiles.ts +++ b/src/RecentFiles.ts @@ -1,5 +1,4 @@ import * as vscode from "vscode"; -import * as path from "path"; export class RecentFiles { recentFiles: Array = []; @@ -11,11 +10,9 @@ export class RecentFiles { } addFile(filePath: string) { - console.log(`Adding - ${filePath}`); // dont add duplicates // if it exists, take it out and put it on the top const idx = this.indexOf(filePath); - console.log(idx); if (idx !== -1) { this.recentFiles.splice(idx, 1); } diff --git a/src/config/config.ts b/src/config/config.ts new file mode 100644 index 0000000..e90619d --- /dev/null +++ b/src/config/config.ts @@ -0,0 +1,10 @@ +import * as vscode from "vscode"; + +export function getConfig() { + const configOptions = vscode.workspace.getConfiguration("opengoal"); + + return { + opengoalLspVersion: configOptions.get("opengoalLspVersion"), + opengoalLspPath: configOptions.get("opengoalLspPath"), + }; +} diff --git a/src/extension.ts b/src/extension.ts index 91c2404..194eb77 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -3,6 +3,7 @@ import * as vscode from "vscode"; import { RecentFiles } from "./RecentFiles"; import * as fileUtils from "./utils/FileUtils"; +import * as lsp from "./lsp/main"; let recentFiles: RecentFiles; @@ -34,4 +35,11 @@ export function activate(context: vscode.ExtensionContext) { } }) ); + + // Start the LSP + lsp.activate(context); +} + +export function deactivate(): Promise | undefined { + return lsp.deactivate(); } diff --git a/src/lsp/LICENSE b/src/lsp/LICENSE new file mode 100644 index 0000000..3eac830 --- /dev/null +++ b/src/lsp/LICENSE @@ -0,0 +1,24 @@ +Code heavily borrowed from https://github.com/BetterThanTomorrow/calva/tree/v2.0.289/src/lsp + +MIT License + +Parts of the software are Copyright (c) 2016-2018 Stian Sivertsen +Other parts are Copyright (c) 2018 -> Better than Tomorrow + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/lsp/download.ts b/src/lsp/download.ts new file mode 100644 index 0000000..1eb06ef --- /dev/null +++ b/src/lsp/download.ts @@ -0,0 +1,28 @@ +import { getLspReleaseAssetName, writeLspMetadata } from "./util"; +import * as path from "path"; +import * as fs from "fs"; +import { downloadFromUrl } from "../utils/download"; + +export async function downloadLsp( + extensionPath: string, + version: string +): Promise { + const assetName = getLspReleaseAssetName(extensionPath, version); + if (assetName === undefined) { + return undefined; + } + const url = `https://github.com/open-goal/jak-project/releases/download/${version}/${assetName}`; + const savePath = path.join(extensionPath, assetName); + try { + await downloadFromUrl(url, savePath); + if (path.extname(savePath) === ".bin") { + fs.chmodSync(savePath, 0o775); + } + writeLspMetadata(extensionPath, version); + } catch (e: any) { + console.log("Error downloading opengoal-lsp", e); + // TODO - backup existing and return that path + return; + } + return savePath; +} diff --git a/src/lsp/main.ts b/src/lsp/main.ts new file mode 100644 index 0000000..3236a32 --- /dev/null +++ b/src/lsp/main.ts @@ -0,0 +1,306 @@ +import * as vscode from "vscode"; +import * as path from "path"; +import { + LanguageClient, + LanguageClientOptions, + ServerOptions, + TransportKind, +} from "vscode-languageclient/node"; +import { getConfig } from "../config/config"; +import { downloadLsp } from "./download"; +import { getLatestVersion, getVersionFromMetaFile } from "./util"; + +let extensionContext: vscode.ExtensionContext; +let opengoalLspPath: string | undefined; +let activeClient: LanguageClient | undefined; + +const lspStatusItem = vscode.window.createStatusBarItem( + vscode.StatusBarAlignment.Left, + 0 +); + +export type LspStatus = + | "stopped" + | "starting" + | "started" + | "downloading" + | "error"; +export let lspStatus: LspStatus = "stopped"; + +function updateStatus(status: LspStatus, extraInfo?: string) { + lspStatus = status; + switch (status) { + case "stopped": + lspStatusItem.text = "$(circle-outline) opengoal-lsp"; + lspStatusItem.tooltip = "opengoal-lsp is not active, click to get a menu"; + lspStatusItem.command = "opengoal.lsp.showLspStoppedMenu"; + break; + case "starting": + lspStatusItem.text = "$(rocket) opengoal-lsp"; + lspStatusItem.tooltip = "opengoal-lsp is starting"; + lspStatusItem.command = undefined; + break; + case "started": + lspStatusItem.text = "$(circle-filled) opengoal-lsp"; + lspStatusItem.tooltip = "opengoal-lsp is active"; + lspStatusItem.command = "opengoal.lsp.showLspStartedMenu"; + break; + case "downloading": + lspStatusItem.text = "$(sync~spin) opengoal-lsp downloading"; + lspStatusItem.tooltip = `OpenGOAL is downloading opengoal-lsp version: ${extraInfo}`; + lspStatusItem.command = undefined; + break; + case "error": + lspStatusItem.text = "$(error) opengoal-lsp"; + lspStatusItem.tooltip = + "opengoal-lsp is not running because of some error"; + lspStatusItem.command = "opengoal.lsp.showLspStoppedMenu"; + break; + default: + break; + } +} + +async function ensureServerDownloaded(): Promise { + const installedVersion = getVersionFromMetaFile( + extensionContext.extensionPath + ); + const configuredVersion = getConfig().opengoalLspVersion; + + // See if we have the right version + // - either its the latest + // - or we have the one that's configured + let needDownload = false; + let versionToDownload = ""; + if ( + configuredVersion !== undefined && + configuredVersion !== installedVersion + ) { + needDownload = true; + versionToDownload = configuredVersion; + } else { + const latestVersion = await getLatestVersion(); + if (latestVersion !== installedVersion) { + needDownload = true; + versionToDownload = latestVersion; + } + } + + if (!needDownload) { + return; + } + + // Install the LSP and update the version metadata file + updateStatus("downloading", versionToDownload); + const newLspPath = await downloadLsp( + extensionContext.extensionPath, + versionToDownload + ); + if (newLspPath === undefined) { + updateStatus("error"); + } else { + updateStatus("stopped"); + } + return newLspPath; +} + +async function maybeDownloadLspServer(): Promise { + const userConfiguredOpengoalLspPath = getConfig().opengoalLspPath; + if ( + userConfiguredOpengoalLspPath !== "" && + userConfiguredOpengoalLspPath !== undefined + ) { + opengoalLspPath = userConfiguredOpengoalLspPath; + } else { + opengoalLspPath = await ensureServerDownloaded(); + } +} + +function createClient(lspPath: string): LanguageClient { + const serverOptions: ServerOptions = { + run: { + command: lspPath, + transport: TransportKind.stdio, + args: ["--log", path.join(extensionContext.extensionPath, "lsp.log")], + }, + debug: { + command: lspPath, + transport: TransportKind.stdio, + args: [ + "--verbose", + "--log", + path.join(extensionContext.extensionPath, "lsp.log"), + ], + }, + }; + const clientOptions: LanguageClientOptions = { + documentSelector: [ + { scheme: "file", language: "opengoal-ir" }, + { scheme: "file", language: "opengoal" }, + ], + synchronize: { + fileEvents: [ + vscode.workspace.createFileSystemWatcher("**/*_ir2.asm"), + vscode.workspace.createFileSystemWatcher("**/all-types.gc"), + ], + }, + progressOnInitialization: true, + initializationOptions: { + "dependency-scheme": "jar", + "auto-add-ns-to-new-files?": true, + "document-formatting?": false, + "document-range-formatting?": false, + "keep-require-at-start?": true, + }, + middleware: { + async provideHover(document, position, token, next) { + return next(document, position, token); + }, + }, + }; + return new LanguageClient( + "opengoal-lsp", + "OpenGOAL LSP", + serverOptions, + clientOptions + ); +} + +async function stopClient() { + updateStatus("stopped"); + if (activeClient !== undefined) { + console.log("Stopping opengoal-lsp"); + return await activeClient + .stop() + .then(() => { + activeClient = undefined; + }) + .catch((e: any) => { + console.error("Stopping client error:", e); + }); + } +} + +async function startClient(): Promise { + if (opengoalLspPath === undefined) { + return; + } + const client = createClient(opengoalLspPath); + console.log("Starting opengoal-lsp at", opengoalLspPath); + + // TODO - some form of startup test would be nice + try { + updateStatus("starting"); + await client.start(); + activeClient = client; + updateStatus("started"); + } catch (error) { + console.error("opengoal-lsp:", error); + updateStatus("error"); + lspStatusItem.hide(); + await stopClient(); + } +} + +export async function startClientCommand() { + lspStatusItem.show(); + await maybeDownloadLspServer(); + if (opengoalLspPath !== undefined) { + await startClient(); + } +} + +async function restartClient() { + await stopClient(); + await startClientCommand(); +} + +function showMenu( + items: vscode.QuickPickItem[], + commands: Record +) { + void vscode.window + .showQuickPick(items, { title: "clojure-lsp" }) + .then((v) => { + if (v !== undefined && commands[v.label]) { + void vscode.commands.executeCommand(commands[v.label]); + } + }); +} + +function stoppedMenuCommand() { + const START_OPTION = "Start"; + const START_COMMAND = "opengoal.lsp.start"; + const commands: any = {}; + commands[START_OPTION] = START_COMMAND; + const items: vscode.QuickPickItem[] = [ + { + label: START_OPTION, + description: "Start the clojure-lsp server", + }, + ]; + showMenu(items, commands); +} + +function startedMenuCommand() { + const STOP_OPTION = "Stop"; + const STOP_COMMAND = "opengoal.lsp.stop"; + const RESTART_OPTION = "Restart"; + const RESTART_COMMAND = "opengoal.lsp.restart"; + // TODO - add info and open log file options + const commands = { + [STOP_OPTION]: STOP_COMMAND, + [RESTART_OPTION]: RESTART_COMMAND, + }; + const items: vscode.QuickPickItem[] = [ + { + label: STOP_OPTION, + description: "Stop the clojure-lsp server", + }, + { + label: RESTART_OPTION, + description: "Restart the clojure-lsp server", + }, + ]; + showMenu(items, commands); +} + +function registerLifeCycleCommands(context: vscode.ExtensionContext): void { + context.subscriptions.push( + vscode.commands.registerCommand("opengoal.lsp.start", startClientCommand) + ); + context.subscriptions.push( + vscode.commands.registerCommand("opengoal.lsp.stop", stopClient) + ); + context.subscriptions.push( + vscode.commands.registerCommand("opengoal.lsp.restart", restartClient) + ); + context.subscriptions.push( + vscode.commands.registerCommand( + "opengoal.lsp.showLspStoppedMenu", + stoppedMenuCommand + ) + ); + context.subscriptions.push( + vscode.commands.registerCommand( + "opengoal.lsp.showLspStartedMenu", + startedMenuCommand + ) + ); +} + +export async function activate( + context: vscode.ExtensionContext +): Promise { + extensionContext = context; + registerLifeCycleCommands(context); + // TODO - add info and open log file options + // registerDiagnosticsCommands(context); + updateStatus("stopped"); + lspStatusItem.show(); + await startClientCommand(); +} + +export function deactivate(): Promise { + return stopClient(); +} diff --git a/src/lsp/util.ts b/src/lsp/util.ts new file mode 100644 index 0000000..39ecd33 --- /dev/null +++ b/src/lsp/util.ts @@ -0,0 +1,64 @@ +import { fetchFromUrl } from "../utils/download"; +import * as path from "path"; +import * as fs from "fs"; +import * as process from "process"; + +const artifactNameTemplates: any = { + darwin: undefined, + linux: "opengoal-lsp-linux-__VERSION__.bin", + win32: "opengoal-lsp-windows-__VERSION__.exe", +}; + +const versionFileName = "lsp-metadata.json"; + +export function getLspReleaseAssetName( + extensionPath: string, + version: string, + platform: string = process.platform +): string | undefined { + if (!(platform in artifactNameTemplates)) { + console.log(`Unsupported platform '${platform}'`); + return undefined; + } + const nameTemplate = artifactNameTemplates[platform]; + if (nameTemplate === undefined) { + console.log(`Unsupported platform '${platform}'`); + return undefined; + } + + return nameTemplate.replace("__VERSION__", version); +} + +export async function getLatestVersion(): Promise { + try { + const releasesJSON = await fetchFromUrl( + "https://api.github.com/repos/open-goal/jak-project/releases" + ); + const releases = JSON.parse(releasesJSON); + return releases[0].tag_name; + } catch (err) { + return ""; + } +} + +export function getVersionFromMetaFile(extensionPath: string): string { + const filePath = path.join(extensionPath, versionFileName); + try { + const meta = JSON.parse(fs.readFileSync(filePath, "utf8")); + return meta.version; + } catch (e: any) { + console.log("Could not read lsp metadata version file.", e.message); + return ""; + } +} + +export function writeLspMetadata(extensionPath: string, version: string): void { + const filePath = path.join(extensionPath, versionFileName); + try { + fs.writeFileSync(filePath, { + version: version, + }); + } catch (e: any) { + console.log("Could not write lsp metadata file.", e.message); + } +} diff --git a/src/utils/FileUtils.ts b/src/utils/FileUtils.ts index 2b7c9b8..e43716e 100644 --- a/src/utils/FileUtils.ts +++ b/src/utils/FileUtils.ts @@ -16,9 +16,9 @@ export function switchFile() { for (const [key, value] of Object.entries(fileSwitchingAssoc)) { if (currName.endsWith(key)) { // Get everything before the suffix, check if a file with the associated suffix exists - let prefix = currName.slice(0, -key.length); - let switchFileName = prefix + value; - let switchFilePath = path.join(path.dirname(currPath), switchFileName); + const prefix = currName.slice(0, -key.length); + const switchFileName = prefix + value; + const switchFilePath = path.join(path.dirname(currPath), switchFileName); vscode.window.showTextDocument(vscode.Uri.file(switchFilePath)); return; } diff --git a/src/utils/download.ts b/src/utils/download.ts new file mode 100644 index 0000000..b32e589 --- /dev/null +++ b/src/utils/download.ts @@ -0,0 +1,57 @@ +import * as url from "url"; +import { https } from "follow-redirects"; +import * as fs from "fs"; + +export async function fetchFromUrl(fullUrl: string): Promise { + const q = url.parse(fullUrl); + return new Promise((resolve, reject) => { + https + .get( + { + host: q.hostname, + path: q.pathname, + port: q.port, + headers: { "user-agent": "node.js" }, + }, + (res: any) => { + let data = ""; + res.on("data", (chunk: any) => { + data += chunk; + }); + res.on("end", () => { + resolve(data); + }); + } + ) + .on("error", (err: any) => { + console.error(`Error downloading file from ${url}: ${err.message}`); + reject(err); + }); + }); +} + +export async function downloadFromUrl( + url: string, + filePath: string +): Promise { + console.log("Downloading file from", url); + return new Promise((resolve, reject) => { + https + .get(url, (response) => { + if (response.statusCode === 200) { + const writeStream = fs.createWriteStream(filePath); + response + .on("end", () => { + writeStream.close(); + console.log("file downloaded to", filePath); + resolve(); + }) + .pipe(writeStream); + } else { + response.resume(); // Consume response to free up memory + reject(new Error(response.statusMessage)); + } + }) + .on("error", reject); + }); +} diff --git a/test/sample_ir2.asm b/test/sample_ir2.asm index 72ccb47..ee68736 100644 --- a/test/sample_ir2.asm +++ b/test/sample_ir2.asm @@ -1,236 +1,4355 @@ +; ALL_TYPES_USED:C:\Users\xtvas\Repositories\opengoal\jak-project\decompiler\config\all-types.gc + +;------------------------------------------ +; top-level segment +;------------------------------------------ + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; .function points-in-air? +; .function (top-level-login target) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;stack: total 0x00, fp? 0 ra? 0 ep? 1 -;; v1-0: int a0-0: vector a1-0: vector -;; a2-0: (inline-array air-box) a3-0: int t0-1: air-box -;; t1-3: symbol t1-4: symbol t2-0: air-box -;; f0-0: float f0-4: float f0-6: float -;; f1-6: float f2-0: float f2-2: float -;; f2-5: float f3-3: float f4-0: float +;; Warnings: +;; INFO: Return type mismatch state vs none. + + B0: + lui v1, L670 ;; [ 0] (set! v1-0 L670) + ;; [] -> [v1: (function time-frame time-frame symbol :behavior target) ] + ori v1, v1, L670 + sw v1, target-falling-anim(s7);; [ 1] (s.w! target-falling-anim v1-0) + ;; [v1: (function time-frame time-frame symbol :behavior target) ] -> [] + lui v1, L659 ;; [ 2] (set! v1-1 L659) [] -> [v1: (function none :behavior target) ] + ori v1, v1, L659 + sw v1, target-falling-anim-trans(s7);; [ 3] (s.w! target-falling-anim-trans v1-1) + ;; [v1: (function none :behavior target) ] -> [] + lui v1, L647 ;; [ 4] (set! v1-2 L647) [] -> [v1: (function basic time-frame none :behavior target) ] + ori v1, v1, L647 + sw v1, target-falling-trans(s7);; [ 5] (s.w! target-falling-trans v1-2) + ;; [v1: (function basic time-frame none :behavior target) ] -> [] + lui v1, L589 ;; [ 6] (set! v1-3 L589) [] -> [v1: (function symbol symbol :behavior target) ] + ori v1, v1, L589 + sw v1, target-hit-ground-anim(s7);; [ 7] (s.w! target-hit-ground-anim v1-3) + ;; [v1: (function symbol symbol :behavior target) ] -> [] + lui v1, L719 ;; [ 8] (set! v1-4 L719) [] -> [v1: state ] + ori v1, v1, L719 + sw v1, target-startup(s7) ;; [ 9] (s.w! target-startup v1-4) [v1: state ] -> [] + lw a0, target-standard-event-handler(s7);; [ 10] (set! a0-0 target-standard-event-handler) + ;; [] -> [a0: (function process int symbol event-message-block object :behavior target) ] + sw a0, 28(v1) ;; [ 11] (s.w! (+ v1-4 28) a0-0) + ;; [v1: state a0: (function process int symbol event-message-block object :behavior target) ] -> [] + lui a0, L588 ;; [ 12] (set! a0-1 L588) [] -> [a0: function ] + ori a0, a0, L588 + sw a0, 12(v1) ;; [ 13] (s.w! (+ v1-4 12) a0-1) [v1: state a0: function ] -> [] + lw a0, target-no-move-post(s7);; [ 14] (set! a0-2 target-no-move-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [ 15] (s.w! (+ v1-4 20) a0-2) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L718 ;; [ 16] (set! v1-5 L718) [] -> [v1: state ] + ori v1, v1, L718 + sw v1, target-stance(s7) ;; [ 17] (s.w! target-stance v1-5) [v1: state ] -> [] + lw a0, target-standard-event-handler(s7);; [ 18] (set! a0-3 target-standard-event-handler) + ;; [] -> [a0: (function process int symbol event-message-block object :behavior target) ] + sw a0, 28(v1) ;; [ 19] (s.w! (+ v1-5 28) a0-3) + ;; [v1: state a0: (function process int symbol event-message-block object :behavior target) ] -> [] + lui a0, L587 ;; [ 20] (set! a0-4 L587) [] -> [a0: function ] + ori a0, a0, L587 + sw a0, 24(v1) ;; [ 21] (s.w! (+ v1-5 24) a0-4) [v1: state a0: function ] -> [] + lui a0, L586 ;; [ 22] (set! a0-5 L586) [] -> [a0: function ] + ori a0, a0, L586 + sw a0, 8(v1) ;; [ 23] (s.w! (+ v1-5 8) a0-5) [v1: state a0: function ] -> [] + lui a0, L575 ;; [ 24] (set! a0-6 L575) [] -> [a0: function ] + ori a0, a0, L575 + sw a0, 16(v1) ;; [ 25] (s.w! (+ v1-5 16) a0-6) [v1: state a0: function ] -> [] + lui a0, L524 ;; [ 26] (set! a0-7 L524) [] -> [a0: function ] + ori a0, a0, L524 + sw a0, 12(v1) ;; [ 27] (s.w! (+ v1-5 12) a0-7) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [ 28] (set! a0-8 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [ 29] (s.w! (+ v1-5 20) a0-8) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L717 ;; [ 30] (set! v1-6 L717) [] -> [v1: state ] + ori v1, v1, L717 + sw v1, target-walk(s7) ;; [ 31] (s.w! target-walk v1-6) [v1: state ] -> [] + lw a0, target-walk-event-handler(s7);; [ 32] (set! a0-9 target-walk-event-handler) + ;; [] -> [a0: (function process int symbol event-message-block object :behavior target) ] + sw a0, 28(v1) ;; [ 33] (s.w! (+ v1-6 28) a0-9) + ;; [v1: state a0: (function process int symbol event-message-block object :behavior target) ] -> [] + lui a0, L523 ;; [ 34] (set! a0-10 L523) [] -> [a0: function ] + ori a0, a0, L523 + sw a0, 24(v1) ;; [ 35] (s.w! (+ v1-6 24) a0-10) [v1: state a0: function ] -> [] + lui a0, L522 ;; [ 36] (set! a0-11 L522) [] -> [a0: function ] + ori a0, a0, L522 + sw a0, 8(v1) ;; [ 37] (s.w! (+ v1-6 8) a0-11) [v1: state a0: function ] -> [] + lui a0, L507 ;; [ 38] (set! a0-12 L507) [] -> [a0: function ] + ori a0, a0, L507 + sw a0, 16(v1) ;; [ 39] (s.w! (+ v1-6 16) a0-12) [v1: state a0: function ] -> [] + lui a0, L445 ;; [ 40] (set! a0-13 L445) [] -> [a0: function ] + ori a0, a0, L445 + sw a0, 12(v1) ;; [ 41] (s.w! (+ v1-6 12) a0-13) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [ 42] (set! a0-14 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [ 43] (s.w! (+ v1-6 20) a0-14) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L716 ;; [ 44] (set! v1-7 L716) [] -> [v1: state ] + ori v1, v1, L716 + sw v1, target-turn-around(s7);; [ 45] (s.w! target-turn-around v1-7) [v1: state ] -> [] + lw a0, target-standard-event-handler(s7);; [ 46] (set! a0-15 target-standard-event-handler) + ;; [] -> [a0: (function process int symbol event-message-block object :behavior target) ] + sw a0, 28(v1) ;; [ 47] (s.w! (+ v1-7 28) a0-15) + ;; [v1: state a0: (function process int symbol event-message-block object :behavior target) ] -> [] + lui a0, L444 ;; [ 48] (set! a0-16 L444) [] -> [a0: function ] + ori a0, a0, L444 + sw a0, 24(v1) ;; [ 49] (s.w! (+ v1-7 24) a0-16) [v1: state a0: function ] -> [] + lui a0, L443 ;; [ 50] (set! a0-17 L443) [] -> [a0: function ] + ori a0, a0, L443 + sw a0, 8(v1) ;; [ 51] (s.w! (+ v1-7 8) a0-17) [v1: state a0: function ] -> [] + lui a0, L435 ;; [ 52] (set! a0-18 L435) [] -> [a0: function ] + ori a0, a0, L435 + sw a0, 16(v1) ;; [ 53] (s.w! (+ v1-7 16) a0-18) [v1: state a0: function ] -> [] + lui a0, L433 ;; [ 54] (set! a0-19 L433) [] -> [a0: function ] + ori a0, a0, L433 + sw a0, 12(v1) ;; [ 55] (s.w! (+ v1-7 12) a0-19) [v1: state a0: function ] -> [] + lw a0, target-no-stick-post(s7);; [ 56] (set! a0-20 target-no-stick-post) + ;; [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [ 57] (s.w! (+ v1-7 20) a0-20) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L715 ;; [ 58] (set! v1-8 L715) [] -> [v1: state ] + ori v1, v1, L715 + sw v1, target-slide-down(s7);; [ 59] (s.w! target-slide-down v1-8) [v1: state ] -> [] + lw a0, target-walk-event-handler(s7);; [ 60] (set! a0-21 target-walk-event-handler) + ;; [] -> [a0: (function process int symbol event-message-block object :behavior target) ] + sw a0, 28(v1) ;; [ 61] (s.w! (+ v1-8 28) a0-21) + ;; [v1: state a0: (function process int symbol event-message-block object :behavior target) ] -> [] + lui a0, L432 ;; [ 62] (set! a0-22 L432) [] -> [a0: function ] + ori a0, a0, L432 + sw a0, 24(v1) ;; [ 63] (s.w! (+ v1-8 24) a0-22) [v1: state a0: function ] -> [] + lui a0, L431 ;; [ 64] (set! a0-23 L431) [] -> [a0: function ] + ori a0, a0, L431 + sw a0, 8(v1) ;; [ 65] (s.w! (+ v1-8 8) a0-23) [v1: state a0: function ] -> [] + lui a0, L428 ;; [ 66] (set! a0-24 L428) [] -> [a0: function ] + ori a0, a0, L428 + sw a0, 16(v1) ;; [ 67] (s.w! (+ v1-8 16) a0-24) [v1: state a0: function ] -> [] + lui a0, L424 ;; [ 68] (set! a0-25 L424) [] -> [a0: function ] + ori a0, a0, L424 + sw a0, 12(v1) ;; [ 69] (s.w! (+ v1-8 12) a0-25) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [ 70] (set! a0-26 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [ 71] (s.w! (+ v1-8 20) a0-26) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L418 ;; [ 72] (set! v1-9 L418) + ;; [] -> [v1: (function float float vector vector vector vector :behavior target) ] + ori v1, v1, L418 + sw v1, init-var-jump(s7) ;; [ 73] (s.w! init-var-jump v1-9) + ;; [v1: (function float float vector vector vector vector :behavior target) ] -> [] + lui v1, L406 ;; [ 74] (set! v1-10 L406) + ;; [] -> [v1: (function symbol symbol symbol vector vector :behavior target) ] + ori v1, v1, L406 + sw v1, mod-var-jump(s7) ;; [ 75] (s.w! mod-var-jump v1-10) + ;; [v1: (function symbol symbol symbol vector vector :behavior target) ] -> [] + lui v1, L714 ;; [ 76] (set! v1-11 L714) [] -> [v1: state ] + ori v1, v1, L714 + sw v1, target-duck-stance(s7);; [ 77] (s.w! target-duck-stance v1-11) [v1: state ] -> [] + lw a0, target-standard-event-handler(s7);; [ 78] (set! a0-27 target-standard-event-handler) + ;; [] -> [a0: (function process int symbol event-message-block object :behavior target) ] + sw a0, 28(v1) ;; [ 79] (s.w! (+ v1-11 28) a0-27) + ;; [v1: state a0: (function process int symbol event-message-block object :behavior target) ] -> [] + lui a0, L405 ;; [ 80] (set! a0-28 L405) [] -> [a0: function ] + ori a0, a0, L405 + sw a0, 24(v1) ;; [ 81] (s.w! (+ v1-11 24) a0-28) [v1: state a0: function ] -> [] + lui a0, L402 ;; [ 82] (set! a0-29 L402) [] -> [a0: function ] + ori a0, a0, L402 + sw a0, 8(v1) ;; [ 83] (s.w! (+ v1-11 8) a0-29) [v1: state a0: function ] -> [] + lui a0, L390 ;; [ 84] (set! a0-30 L390) [] -> [a0: function ] + ori a0, a0, L390 + sw a0, 16(v1) ;; [ 85] (s.w! (+ v1-11 16) a0-30) [v1: state a0: function ] -> [] + lui a0, L378 ;; [ 86] (set! a0-31 L378) [] -> [a0: function ] + ori a0, a0, L378 + sw a0, 12(v1) ;; [ 87] (s.w! (+ v1-11 12) a0-31) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [ 88] (set! a0-32 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [ 89] (s.w! (+ v1-11 20) a0-32) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L713 ;; [ 90] (set! v1-12 L713) [] -> [v1: state ] + ori v1, v1, L713 + sw v1, target-duck-walk(s7);; [ 91] (s.w! target-duck-walk v1-12) [v1: state ] -> [] + lw a0, target-standard-event-handler(s7);; [ 92] (set! a0-33 target-standard-event-handler) + ;; [] -> [a0: (function process int symbol event-message-block object :behavior target) ] + sw a0, 28(v1) ;; [ 93] (s.w! (+ v1-12 28) a0-33) + ;; [v1: state a0: (function process int symbol event-message-block object :behavior target) ] -> [] + lui a0, L375 ;; [ 94] (set! a0-34 L375) [] -> [a0: function ] + ori a0, a0, L375 + sw a0, 24(v1) ;; [ 95] (s.w! (+ v1-12 24) a0-34) [v1: state a0: function ] -> [] + lw a0, target-duck-stance(s7);; [ 96] (set! a0-35 target-duck-stance) [] -> [a0: (state target) ] + lwu a0, 8(a0) ;; [ 97] (set! a0-36 (l.wu (+ a0-35 8))) [a0: (state target) ] -> [a0: (function none) ] + sw a0, 8(v1) ;; [ 98] (s.w! (+ v1-12 8) a0-36) [v1: state a0: (function none) ] -> [] + lui a0, L365 ;; [ 99] (set! a0-37 L365) [] -> [a0: function ] + ori a0, a0, L365 + sw a0, 16(v1) ;; [100] (s.w! (+ v1-12 16) a0-37) [v1: state a0: function ] -> [] + lui a0, L357 ;; [101] (set! a0-38 L357) [] -> [a0: function ] + ori a0, a0, L357 + sw a0, 12(v1) ;; [102] (s.w! (+ v1-12 12) a0-38) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [103] (set! a0-39 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [104] (s.w! (+ v1-12 20) a0-39) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L708 ;; [105] (set! v1-13 L708) [] -> [v1: state ] + ori v1, v1, L708 + sw v1, target-jump(s7) ;; [106] (s.w! target-jump v1-13) [v1: state ] -> [] + lw a0, target-jump-event-handler(s7);; [107] (set! a0-40 target-jump-event-handler) + ;; [] -> [a0: (function process int symbol event-message-block object :behavior target) ] + sw a0, 28(v1) ;; [108] (s.w! (+ v1-13 28) a0-40) + ;; [v1: state a0: (function process int symbol event-message-block object :behavior target) ] -> [] + lui a0, L352 ;; [109] (set! a0-41 L352) [] -> [a0: function ] + ori a0, a0, L352 + sw a0, 24(v1) ;; [110] (s.w! (+ v1-13 24) a0-41) [v1: state a0: function ] -> [] + lw a0, target-exit(s7) ;; [111] (set! a0-42 target-exit) [] -> [a0: (function none :behavior target) ] + sw a0, 8(v1) ;; [112] (s.w! (+ v1-13 8) a0-42) [v1: state a0: (function none :behavior target) ] -> [] + lui a0, L338 ;; [113] (set! a0-43 L338) [] -> [a0: function ] + ori a0, a0, L338 + sw a0, 16(v1) ;; [114] (s.w! (+ v1-13 16) a0-43) [v1: state a0: function ] -> [] + lui a0, L332 ;; [115] (set! a0-44 L332) [] -> [a0: function ] + ori a0, a0, L332 + sw a0, 12(v1) ;; [116] (s.w! (+ v1-13 12) a0-44) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [117] (set! a0-45 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [118] (s.w! (+ v1-13 20) a0-45) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L707 ;; [119] (set! v1-14 L707) [] -> [v1: state ] + ori v1, v1, L707 + sw v1, target-jump-forward(s7);; [120] (s.w! target-jump-forward v1-14) [v1: state ] -> [] + lw a0, target-jump-event-handler(s7);; [121] (set! a0-46 target-jump-event-handler) + ;; [] -> [a0: (function process int symbol event-message-block object :behavior target) ] + sw a0, 28(v1) ;; [122] (s.w! (+ v1-14 28) a0-46) + ;; [v1: state a0: (function process int symbol event-message-block object :behavior target) ] -> [] + lui a0, L331 ;; [123] (set! a0-47 L331) [] -> [a0: function ] + ori a0, a0, L331 + sw a0, 24(v1) ;; [124] (s.w! (+ v1-14 24) a0-47) [v1: state a0: function ] -> [] + lw a0, target-exit(s7) ;; [125] (set! a0-48 target-exit) [] -> [a0: (function none :behavior target) ] + sw a0, 8(v1) ;; [126] (s.w! (+ v1-14 8) a0-48) [v1: state a0: (function none :behavior target) ] -> [] + lw a0, target-jump(s7) ;; [127] (set! a0-49 target-jump) [] -> [a0: (state float float surface target) ] + lwu a0, 16(a0) ;; [128] (set! a0-50 (l.wu (+ a0-49 16))) + ;; [a0: (state float float surface target) ] -> [a0: (function none) ] + sw a0, 16(v1) ;; [129] (s.w! (+ v1-14 16) a0-50) [v1: state a0: (function none) ] -> [] + lui a0, L328 ;; [130] (set! a0-51 L328) [] -> [a0: function ] + ori a0, a0, L328 + sw a0, 12(v1) ;; [131] (s.w! (+ v1-14 12) a0-51) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [132] (set! a0-52 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [133] (s.w! (+ v1-14 20) a0-52) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L706 ;; [134] (set! v1-15 L706) [] -> [v1: state ] + ori v1, v1, L706 + sw v1, target-double-jump(s7);; [135] (s.w! target-double-jump v1-15) [v1: state ] -> [] + lw a0, target-jump-event-handler(s7);; [136] (set! a0-53 target-jump-event-handler) + ;; [] -> [a0: (function process int symbol event-message-block object :behavior target) ] + sw a0, 28(v1) ;; [137] (s.w! (+ v1-15 28) a0-53) + ;; [v1: state a0: (function process int symbol event-message-block object :behavior target) ] -> [] + lui a0, L326 ;; [138] (set! a0-54 L326) [] -> [a0: function ] + ori a0, a0, L326 + sw a0, 24(v1) ;; [139] (s.w! (+ v1-15 24) a0-54) [v1: state a0: function ] -> [] + lw a0, target-exit(s7) ;; [140] (set! a0-55 target-exit) [] -> [a0: (function none :behavior target) ] + sw a0, 8(v1) ;; [141] (s.w! (+ v1-15 8) a0-55) [v1: state a0: (function none :behavior target) ] -> [] + lui a0, L315 ;; [142] (set! a0-56 L315) [] -> [a0: function ] + ori a0, a0, L315 + sw a0, 16(v1) ;; [143] (s.w! (+ v1-15 16) a0-56) [v1: state a0: function ] -> [] + lui a0, L313 ;; [144] (set! a0-57 L313) [] -> [a0: function ] + ori a0, a0, L313 + sw a0, 12(v1) ;; [145] (s.w! (+ v1-15 12) a0-57) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [146] (set! a0-58 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [147] (s.w! (+ v1-15 20) a0-58) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L705 ;; [148] (set! v1-16 L705) [] -> [v1: state ] + ori v1, v1, L705 + sw v1, target-high-jump(s7);; [149] (s.w! target-high-jump v1-16) [v1: state ] -> [] + lw a0, target-jump-event-handler(s7);; [150] (set! a0-59 target-jump-event-handler) + ;; [] -> [a0: (function process int symbol event-message-block object :behavior target) ] + sw a0, 28(v1) ;; [151] (s.w! (+ v1-16 28) a0-59) + ;; [v1: state a0: (function process int symbol event-message-block object :behavior target) ] -> [] + lui a0, L305 ;; [152] (set! a0-60 L305) [] -> [a0: function ] + ori a0, a0, L305 + sw a0, 24(v1) ;; [153] (s.w! (+ v1-16 24) a0-60) [v1: state a0: function ] -> [] + lw a0, target-exit(s7) ;; [154] (set! a0-61 target-exit) [] -> [a0: (function none :behavior target) ] + sw a0, 8(v1) ;; [155] (s.w! (+ v1-16 8) a0-61) [v1: state a0: (function none :behavior target) ] -> [] + lui a0, L295 ;; [156] (set! a0-62 L295) [] -> [a0: function ] + ori a0, a0, L295 + sw a0, 16(v1) ;; [157] (s.w! (+ v1-16 16) a0-62) [v1: state a0: function ] -> [] + lw a0, target-jump(s7) ;; [158] (set! a0-63 target-jump) [] -> [a0: (state float float surface target) ] + lwu a0, 12(a0) ;; [159] (set! a0-64 (l.wu (+ a0-63 12))) + ;; [a0: (state float float surface target) ] -> [a0: function ] + sw a0, 12(v1) ;; [160] (s.w! (+ v1-16 12) a0-64) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [161] (set! a0-65 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [162] (s.w! (+ v1-16 20) a0-65) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L704 ;; [163] (set! v1-17 L704) [] -> [v1: state ] + ori v1, v1, L704 + sw v1, target-duck-high-jump(s7);; [164] (s.w! target-duck-high-jump v1-17) [v1: state ] -> [] + lw a0, target-standard-event-handler(s7);; [165] (set! a0-66 target-standard-event-handler) + ;; [] -> [a0: (function process int symbol event-message-block object :behavior target) ] + sw a0, 28(v1) ;; [166] (s.w! (+ v1-17 28) a0-66) + ;; [v1: state a0: (function process int symbol event-message-block object :behavior target) ] -> [] + lui a0, L294 ;; [167] (set! a0-67 L294) [] -> [a0: function ] + ori a0, a0, L294 + sw a0, 24(v1) ;; [168] (s.w! (+ v1-17 24) a0-67) [v1: state a0: function ] -> [] + lw a0, target-exit(s7) ;; [169] (set! a0-68 target-exit) [] -> [a0: (function none :behavior target) ] + sw a0, 8(v1) ;; [170] (s.w! (+ v1-17 8) a0-68) [v1: state a0: (function none :behavior target) ] -> [] + lui a0, L286 ;; [171] (set! a0-69 L286) [] -> [a0: function ] + ori a0, a0, L286 + sw a0, 12(v1) ;; [172] (s.w! (+ v1-17 12) a0-69) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [173] (set! a0-70 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [174] (s.w! (+ v1-17 20) a0-70) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L703 ;; [175] (set! v1-18 L703) [] -> [v1: state ] + ori v1, v1, L703 + sw v1, target-duck-high-jump-jump(s7);; [176] (s.w! target-duck-high-jump-jump v1-18) [v1: state ] -> [] + lw a0, target-jump-event-handler(s7);; [177] (set! a0-71 target-jump-event-handler) + ;; [] -> [a0: (function process int symbol event-message-block object :behavior target) ] + sw a0, 28(v1) ;; [178] (s.w! (+ v1-18 28) a0-71) + ;; [v1: state a0: (function process int symbol event-message-block object :behavior target) ] -> [] + lui a0, L283 ;; [179] (set! a0-72 L283) [] -> [a0: function ] + ori a0, a0, L283 + sw a0, 24(v1) ;; [180] (s.w! (+ v1-18 24) a0-72) [v1: state a0: function ] -> [] + lw a0, target-exit(s7) ;; [181] (set! a0-73 target-exit) [] -> [a0: (function none :behavior target) ] + sw a0, 8(v1) ;; [182] (s.w! (+ v1-18 8) a0-73) [v1: state a0: (function none :behavior target) ] -> [] + lw a0, target-high-jump(s7);; [183] (set! a0-74 target-high-jump) [] -> [a0: (state float float basic target) ] + lwu a0, 16(a0) ;; [184] (set! a0-75 (l.wu (+ a0-74 16))) + ;; [a0: (state float float basic target) ] -> [a0: (function none) ] + sw a0, 16(v1) ;; [185] (s.w! (+ v1-18 16) a0-75) [v1: state a0: (function none) ] -> [] + lui a0, L270 ;; [186] (set! a0-76 L270) [] -> [a0: function ] + ori a0, a0, L270 + sw a0, 12(v1) ;; [187] (s.w! (+ v1-18 12) a0-76) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [188] (set! a0-77 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [189] (s.w! (+ v1-18 20) a0-77) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L702 ;; [190] (set! v1-19 L702) [] -> [v1: state ] + ori v1, v1, L702 + sw v1, target-falling(s7) ;; [191] (s.w! target-falling v1-19) [v1: state ] -> [] + lw a0, target-jump-event-handler(s7);; [192] (set! a0-78 target-jump-event-handler) + ;; [] -> [a0: (function process int symbol event-message-block object :behavior target) ] + sw a0, 28(v1) ;; [193] (s.w! (+ v1-19 28) a0-78) + ;; [v1: state a0: (function process int symbol event-message-block object :behavior target) ] -> [] + lui a0, L269 ;; [194] (set! a0-79 L269) [] -> [a0: function ] + ori a0, a0, L269 + sw a0, 24(v1) ;; [195] (s.w! (+ v1-19 24) a0-79) [v1: state a0: function ] -> [] + lui a0, L266 ;; [196] (set! a0-80 L266) [] -> [a0: function ] + ori a0, a0, L266 + sw a0, 16(v1) ;; [197] (s.w! (+ v1-19 16) a0-80) [v1: state a0: function ] -> [] + lui a0, L265 ;; [198] (set! a0-81 L265) [] -> [a0: function ] + ori a0, a0, L265 + sw a0, 12(v1) ;; [199] (s.w! (+ v1-19 12) a0-81) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [200] (set! a0-82 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [201] (s.w! (+ v1-19 20) a0-82) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L701 ;; [202] (set! v1-20 L701) [] -> [v1: state ] + ori v1, v1, L701 + sw v1, target-hit-ground(s7);; [203] (s.w! target-hit-ground v1-20) [v1: state ] -> [] + lw a0, target-walk-event-handler(s7);; [204] (set! a0-83 target-walk-event-handler) + ;; [] -> [a0: (function process int symbol event-message-block object :behavior target) ] + sw a0, 28(v1) ;; [205] (s.w! (+ v1-20 28) a0-83) + ;; [v1: state a0: (function process int symbol event-message-block object :behavior target) ] -> [] + lui a0, L253 ;; [206] (set! a0-84 L253) [] -> [a0: function ] + ori a0, a0, L253 + sw a0, 24(v1) ;; [207] (s.w! (+ v1-20 24) a0-84) [v1: state a0: function ] -> [] + lui a0, L240 ;; [208] (set! a0-85 L240) [] -> [a0: function ] + ori a0, a0, L240 + sw a0, 16(v1) ;; [209] (s.w! (+ v1-20 16) a0-85) [v1: state a0: function ] -> [] + lui a0, L239 ;; [210] (set! a0-86 L239) [] -> [a0: function ] + ori a0, a0, L239 + sw a0, 12(v1) ;; [211] (s.w! (+ v1-20 12) a0-86) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [212] (set! a0-87 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [213] (s.w! (+ v1-20 20) a0-87) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L699 ;; [214] (set! v1-21 L699) [] -> [v1: state ] + ori v1, v1, L699 + sw v1, target-attack(s7) ;; [215] (s.w! target-attack v1-21) [v1: state ] -> [] + lw a0, target-dangerous-event-handler(s7);; [216] (set! a0-88 target-dangerous-event-handler) + ;; [] -> [a0: (function process int symbol event-message-block object :behavior target) ] + sw a0, 28(v1) ;; [217] (s.w! (+ v1-21 28) a0-88) + ;; [v1: state a0: (function process int symbol event-message-block object :behavior target) ] -> [] + lui a0, L238 ;; [218] (set! a0-89 L238) [] -> [a0: function ] + ori a0, a0, L238 + sw a0, 24(v1) ;; [219] (s.w! (+ v1-21 24) a0-89) [v1: state a0: function ] -> [] + lui a0, L237 ;; [220] (set! a0-90 L237) [] -> [a0: function ] + ori a0, a0, L237 + sw a0, 8(v1) ;; [221] (s.w! (+ v1-21 8) a0-90) [v1: state a0: function ] -> [] + lui a0, L231 ;; [222] (set! a0-91 L231) [] -> [a0: function ] + ori a0, a0, L231 + sw a0, 12(v1) ;; [223] (s.w! (+ v1-21 12) a0-91) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [224] (set! a0-92 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [225] (s.w! (+ v1-21 20) a0-92) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L698 ;; [226] (set! v1-22 L698) [] -> [v1: state ] + ori v1, v1, L698 + sw v1, target-running-attack(s7);; [227] (s.w! target-running-attack v1-22) [v1: state ] -> [] + lui a0, L218 ;; [228] (set! a0-93 L218) [] -> [a0: function ] + ori a0, a0, L218 + sw a0, 28(v1) ;; [229] (s.w! (+ v1-22 28) a0-93) [v1: state a0: function ] -> [] + lui a0, L211 ;; [230] (set! a0-94 L211) [] -> [a0: function ] + ori a0, a0, L211 + sw a0, 24(v1) ;; [231] (s.w! (+ v1-22 24) a0-94) [v1: state a0: function ] -> [] + lui a0, L210 ;; [232] (set! a0-95 L210) [] -> [a0: function ] + ori a0, a0, L210 + sw a0, 8(v1) ;; [233] (s.w! (+ v1-22 8) a0-95) [v1: state a0: function ] -> [] + lui a0, L196 ;; [234] (set! a0-96 L196) [] -> [a0: function ] + ori a0, a0, L196 + sw a0, 16(v1) ;; [235] (s.w! (+ v1-22 16) a0-96) [v1: state a0: function ] -> [] + lui a0, L171 ;; [236] (set! a0-97 L171) [] -> [a0: function ] + ori a0, a0, L171 + sw a0, 12(v1) ;; [237] (s.w! (+ v1-22 12) a0-97) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [238] (set! a0-98 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [239] (s.w! (+ v1-22 20) a0-98) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L697 ;; [240] (set! v1-23 L697) [] -> [v1: state ] + ori v1, v1, L697 + sw v1, target-attack-air(s7);; [241] (s.w! target-attack-air v1-23) [v1: state ] -> [] + lui a0, L168 ;; [242] (set! a0-99 L168) [] -> [a0: function ] + ori a0, a0, L168 + sw a0, 28(v1) ;; [243] (s.w! (+ v1-23 28) a0-99) [v1: state a0: function ] -> [] + lui a0, L161 ;; [244] (set! a0-100 L161) [] -> [a0: function ] + ori a0, a0, L161 + sw a0, 24(v1) ;; [245] (s.w! (+ v1-23 24) a0-100) [v1: state a0: function ] -> [] + lui a0, L160 ;; [246] (set! a0-101 L160) [] -> [a0: function ] + ori a0, a0, L160 + sw a0, 8(v1) ;; [247] (s.w! (+ v1-23 8) a0-101) [v1: state a0: function ] -> [] + lui a0, L153 ;; [248] (set! a0-102 L153) [] -> [a0: function ] + ori a0, a0, L153 + sw a0, 16(v1) ;; [249] (s.w! (+ v1-23 16) a0-102) [v1: state a0: function ] -> [] + lui a0, L143 ;; [250] (set! a0-103 L143) [] -> [a0: function ] + ori a0, a0, L143 + sw a0, 12(v1) ;; [251] (s.w! (+ v1-23 12) a0-103) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [252] (set! a0-104 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [253] (s.w! (+ v1-23 20) a0-104) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L696 ;; [254] (set! v1-24 L696) [] -> [v1: state ] + ori v1, v1, L696 + sw v1, target-attack-uppercut(s7);; [255] (s.w! target-attack-uppercut v1-24) [v1: state ] -> [] + lw a0, target-dangerous-event-handler(s7);; [256] (set! a0-105 target-dangerous-event-handler) + ;; [] -> [a0: (function process int symbol event-message-block object :behavior target) ] + sw a0, 28(v1) ;; [257] (s.w! (+ v1-24 28) a0-105) + ;; [v1: state a0: (function process int symbol event-message-block object :behavior target) ] -> [] + lui a0, L142 ;; [258] (set! a0-106 L142) [] -> [a0: function ] + ori a0, a0, L142 + sw a0, 24(v1) ;; [259] (s.w! (+ v1-24 24) a0-106) [v1: state a0: function ] -> [] + lw a0, target-exit(s7) ;; [260] (set! a0-107 target-exit) [] -> [a0: (function none :behavior target) ] + sw a0, 8(v1) ;; [261] (s.w! (+ v1-24 8) a0-107) [v1: state a0: (function none :behavior target) ] -> [] + lui a0, L137 ;; [262] (set! a0-108 L137) [] -> [a0: function ] + ori a0, a0, L137 + sw a0, 12(v1) ;; [263] (s.w! (+ v1-24 12) a0-108) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [264] (set! a0-109 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [265] (s.w! (+ v1-24 20) a0-109) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L695 ;; [266] (set! v1-25 L695) [] -> [v1: state ] + ori v1, v1, L695 + sw v1, target-attack-uppercut-jump(s7);; [267] (s.w! target-attack-uppercut-jump v1-25) [v1: state ] -> [] + lw a0, target-dangerous-event-handler(s7);; [268] (set! a0-110 target-dangerous-event-handler) + ;; [] -> [a0: (function process int symbol event-message-block object :behavior target) ] + sw a0, 28(v1) ;; [269] (s.w! (+ v1-25 28) a0-110) + ;; [v1: state a0: (function process int symbol event-message-block object :behavior target) ] -> [] + lui a0, L134 ;; [270] (set! a0-111 L134) [] -> [a0: function ] + ori a0, a0, L134 + sw a0, 24(v1) ;; [271] (s.w! (+ v1-25 24) a0-111) [v1: state a0: function ] -> [] + lw a0, target-exit(s7) ;; [272] (set! a0-112 target-exit) [] -> [a0: (function none :behavior target) ] + sw a0, 8(v1) ;; [273] (s.w! (+ v1-25 8) a0-112) [v1: state a0: (function none :behavior target) ] -> [] + lui a0, L119 ;; [274] (set! a0-113 L119) [] -> [a0: function ] + ori a0, a0, L119 + sw a0, 16(v1) ;; [275] (s.w! (+ v1-25 16) a0-113) [v1: state a0: function ] -> [] + lui a0, L114 ;; [276] (set! a0-114 L114) [] -> [a0: function ] + ori a0, a0, L114 + sw a0, 12(v1) ;; [277] (s.w! (+ v1-25 12) a0-114) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [278] (set! a0-115 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [279] (s.w! (+ v1-25 20) a0-115) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L694 ;; [280] (set! v1-26 L694) [] -> [v1: state ] + ori v1, v1, L694 + sw v1, target-flop(s7) ;; [281] (s.w! target-flop v1-26) [v1: state ] -> [] + lui a0, L108 ;; [282] (set! a0-116 L108) [] -> [a0: function ] + ori a0, a0, L108 + sw a0, 28(v1) ;; [283] (s.w! (+ v1-26 28) a0-116) [v1: state a0: function ] -> [] + lui a0, L103 ;; [284] (set! a0-117 L103) [] -> [a0: function ] + ori a0, a0, L103 + sw a0, 24(v1) ;; [285] (s.w! (+ v1-26 24) a0-117) [v1: state a0: function ] -> [] + lui a0, L81 ;; [286] (set! a0-118 L81) [] -> [a0: function ] + ori a0, a0, L81 + sw a0, 8(v1) ;; [287] (s.w! (+ v1-26 8) a0-118) [v1: state a0: function ] -> [] + lui a0, L82 ;; [288] (set! a0-119 L82) [] -> [a0: function ] + ori a0, a0, L82 + sw a0, 16(v1) ;; [289] (s.w! (+ v1-26 16) a0-119) [v1: state a0: function ] -> [] + lui a0, L74 ;; [290] (set! a0-120 L74) [] -> [a0: function ] + ori a0, a0, L74 + sw a0, 12(v1) ;; [291] (s.w! (+ v1-26 12) a0-120) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [292] (set! a0-121 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [293] (s.w! (+ v1-26 20) a0-121) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L693 ;; [294] (set! v1-27 L693) [] -> [v1: state ] + ori v1, v1, L693 + sw v1, target-flop-hit-ground(s7);; [295] (s.w! target-flop-hit-ground v1-27) [v1: state ] -> [] + lui a0, L71 ;; [296] (set! a0-122 L71) [] -> [a0: function ] + ori a0, a0, L71 + sw a0, 28(v1) ;; [297] (s.w! (+ v1-27 28) a0-122) [v1: state a0: function ] -> [] + lui a0, L69 ;; [298] (set! a0-123 L69) [] -> [a0: function ] + ori a0, a0, L69 + sw a0, 24(v1) ;; [299] (s.w! (+ v1-27 24) a0-123) [v1: state a0: function ] -> [] + lw a0, target-exit(s7) ;; [300] (set! a0-124 target-exit) [] -> [a0: (function none :behavior target) ] + sw a0, 8(v1) ;; [301] (s.w! (+ v1-27 8) a0-124) [v1: state a0: (function none :behavior target) ] -> [] + lui a0, L57 ;; [302] (set! a0-125 L57) [] -> [a0: function ] + ori a0, a0, L57 + sw a0, 16(v1) ;; [303] (s.w! (+ v1-27 16) a0-125) [v1: state a0: function ] -> [] + lui a0, L56 ;; [304] (set! a0-126 L56) [] -> [a0: function ] + ori a0, a0, L56 + sw a0, 12(v1) ;; [305] (s.w! (+ v1-27 12) a0-126) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [306] (set! a0-127 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [307] (s.w! (+ v1-27 20) a0-127) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L692 ;; [308] (set! v1-28 L692) [] -> [v1: state ] + ori v1, v1, L692 + sw v1, target-wheel(s7) ;; [309] (s.w! target-wheel v1-28) [v1: state ] -> [] + lui a0, L54 ;; [310] (set! a0-128 L54) [] -> [a0: function ] + ori a0, a0, L54 + sw a0, 28(v1) ;; [311] (s.w! (+ v1-28 28) a0-128) [v1: state a0: function ] -> [] + lui a0, L50 ;; [312] (set! a0-129 L50) [] -> [a0: function ] + ori a0, a0, L50 + sw a0, 24(v1) ;; [313] (s.w! (+ v1-28 24) a0-129) [v1: state a0: function ] -> [] + lui a0, L48 ;; [314] (set! a0-130 L48) [] -> [a0: function ] + ori a0, a0, L48 + sw a0, 8(v1) ;; [315] (s.w! (+ v1-28 8) a0-130) [v1: state a0: function ] -> [] + lui a0, L31 ;; [316] (set! a0-131 L31) [] -> [a0: function ] + ori a0, a0, L31 + sw a0, 12(v1) ;; [317] (s.w! (+ v1-28 12) a0-131) [v1: state a0: function ] -> [] + lw a0, target-post(s7) ;; [318] (set! a0-132 target-post) [] -> [a0: (function none :behavior target) ] + sw a0, 20(v1) ;; [319] (s.w! (+ v1-28 20) a0-132) [v1: state a0: (function none :behavior target) ] -> [] + lui v1, L691 ;; [320] (set! v0-0 L691) [] -> [v0: state ] + ori v0, v1, L691 + sw v0, target-wheel-flip(s7);; [321] (s.w! target-wheel-flip v0-0) [v0: state ] -> [] + lw v1, target-standard-event-handler(s7);; [322] (set! v1-29 target-standard-event-handler) + ;; [] -> [v1: (function process int symbol event-message-block object :behavior target) ] + sw v1, 28(v0) ;; [323] (s.w! (+ v0-0 28) v1-29) + ;; [v0: state v1: (function process int symbol event-message-block object :behavior target) ] -> [] + lui v1, L30 ;; [324] (set! v1-30 L30) [] -> [v1: function ] + ori v1, v1, L30 + sw v1, 24(v0) ;; [325] (s.w! (+ v0-0 24) v1-30) [v0: state v1: function ] -> [] + lw v1, target-exit(s7) ;; [326] (set! v1-31 target-exit) [] -> [v1: (function none :behavior target) ] + sw v1, 8(v0) ;; [327] (s.w! (+ v0-0 8) v1-31) [v0: state v1: (function none :behavior target) ] -> [] + lui v1, L23 ;; [328] (set! v1-32 L23) [] -> [v1: function ] + ori v1, v1, L23 + sw v1, 16(v0) ;; [329] (s.w! (+ v0-0 16) v1-32) [v0: state v1: function ] -> [] + lui v1, L1 ;; [330] (set! v1-33 L1) [] -> [v1: function ] + ori v1, v1, L1 + sw v1, 12(v0) ;; [331] (s.w! (+ v0-0 12) v1-33) [v0: state v1: function ] -> [] + lw v1, target-post(s7) ;; [332] (set! v1-34 target-post) [] -> [v1: (function none :behavior target) ] + sw v1, 20(v0) ;; [333] (s.w! (+ v0-0 20) v1-34) [v0: state v1: (function none :behavior target) ] -> [] + jr ra + daddu sp, sp, r0 + + + +;;-*-OpenGOAL-Start-*- + +(top-level-function + () + (set! target-falling-anim L670) + (set! target-falling-anim-trans L659) + (set! target-falling-trans L647) + (set! target-hit-ground-anim L589) + (defstate target-startup (target) + :event target-standard-event-handler + :code (behavior () + (suspend) + (suspend) + (go target-stance) + (none) + ) + :post target-no-move-post + ) + (defstate target-stance (target) + :event target-standard-event-handler + :enter (behavior () + (set! (-> self control unknown-surface00) *walk-mods*) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) + :exit (behavior () + (set! (-> self control unknown-float81) 0.0) + (target-state-hook-exit) + (none) + ) + :trans (behavior () + ((-> self state-hook)) + (if (logtest? (-> self water flags) (water-flags wt10)) + (go target-wade-stance) + ) + (when (= (-> self control ground-pat material) (pat-material ice)) + (set! (-> self control unknown-float81) 0.0) + (remove-exit) + (go target-ice-stance) + ) + (when (move-legs?) + (set! (-> self control unknown-float81) 0.0) + (remove-exit) + (go target-walk) + ) + (when (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) + (set! (-> self control unknown-float81) 0.0) + (remove-exit) + (go target-duck-stance) + ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) + ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons circle) + ) + (can-feet?) + ) + (go target-attack) + ) + (if (can-hands? #t) + (go target-running-attack) + ) + (slide-down-test) + (fall-test) + (none) + ) + :code (behavior () + (let ((s5-0 22) + (gp-0 (new 'stack 'ground-tween-info)) + ) + (let ((v1-3 (ja-group))) + (cond + ((or (= v1-3 (-> self draw art-group data 89)) (= v1-3 (-> self draw art-group data 90))) + (set! s5-0 45) + ) + ((ja-group? (-> self draw art-group data 71)) + (ja-no-eval :group! (-> self draw art-group data 72) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + ((ja-group? (-> self draw art-group data 51)) + (cond + ((rand-vu-percent? (the-as float 0.3)) + (ja-no-eval :group! (-> self draw art-group data 53) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + (else + (ja-no-eval :group! (-> self draw art-group data 52) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + ) + ) + ((ja-group? (-> self draw art-group data 78)) + (ja-no-eval :group! (-> self draw art-group data 79) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + ((ja-group? (-> self draw art-group data 84)) + (ja-no-eval :group! (-> self draw art-group data 85) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + (set! s5-0 0) + ) + ((ja-group? (-> self draw art-group data 59)) + (set! (-> self control unknown-float81) (-> self control unknown-float80)) + (set! (-> self control unknown-surface00) *walk-no-turn-mods*) + (ja-no-eval :group! (if (rand-vu-percent? (the-as float 0.3)) + (-> self draw art-group data 61) + (-> self draw art-group data 60) + ) + :num! (seek!) + :frame-num 0.0 + ) + (until (ja-done? 0) + (seek! (-> self control unknown-float81) (the-as float 0.0) (-> *display* seconds-per-frame)) + (suspend) + (ja :num! (seek!)) + ) + (set! (-> self control unknown-surface00) *walk-mods*) + (set! (-> self control unknown-float81) 0.0) + (rot->dir-targ! (-> self control)) + ) + ((let ((v1-206 (ja-group))) + (or (= v1-206 (-> self draw art-group data 31)) (= v1-206 (-> self draw art-group data 32))) + ) + (ja-channel-push! 1 (seconds 0.04)) + (ja-no-eval :group! (-> self draw art-group data 30) :num! (seek! 0.0 1.2) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0 1.2)) + ) + (set! s5-0 12) + ) + ((or (and (ja-group? (-> self draw art-group data 23)) + (begin (set! s5-0 45) (< 0.5 (-> self skel root-channel 6 frame-interp))) + ) + (let ((v1-243 (ja-group))) + (or (= v1-243 (-> self draw art-group data 28)) + (= v1-243 (-> self draw art-group data 29)) + (= v1-243 (-> self draw art-group data 54)) + (= v1-243 (-> self draw art-group data 55)) + ) + ) + ) + (let ((f30-1 (the-as float (cond + ((ja-group? (-> self draw art-group data 23)) + (let ((f0-57 (+ 50.0 (* 0.8333333 (+ -25.0 (ja-aframe-num 0)))))) + (- f0-57 (* (the float (the int (/ f0-57 50.0))) 50.0)) + ) + ) + (else + 0.0 + ) + ) + ) + ) + ) + (set! s5-0 45) + (ja-channel-push! 3 (the-as time-frame s5-0)) + (ground-tween-initialize + gp-0 + (the-as uint 0) + (the-as uint (-> self draw art-group data 4)) + (the-as uint (-> self draw art-group data 13)) + (the-as uint (-> self draw art-group data 16)) + (the-as uint (-> self draw art-group data 7)) + (the-as uint (-> self draw art-group data 10)) + ) + (ja :num-func num-func-identity :frame-num (ja-aframe f30-1 0)) + ) + (ja :chan 1 :num! (chan 0)) + (ja :chan 2 :num! (chan 0)) + (dotimes (s4-2 3) + (until (ja-done? 0) + (ground-tween-update gp-0 (-> self control unknown-float61) (-> self control unknown-float62)) + (suspend) + (ja :num! (seek!)) + (ja :chan 1 :num! (chan 0)) + (ja :chan 2 :num! (chan 0)) + ) + (ja :num-func num-func-identity :frame-num 0.0) + ) + (ground-tween-initialize + gp-0 + (the-as uint 0) + (the-as uint (-> self draw art-group data 3)) + (the-as uint (-> self draw art-group data 12)) + (the-as uint (-> self draw art-group data 15)) + (the-as uint (-> self draw art-group data 6)) + (the-as uint (-> self draw art-group data 9)) + ) + (until (ja-done? 0) + (ground-tween-update gp-0 (-> self control unknown-float61) (-> self control unknown-float62)) + (suspend) + (ja :num! (seek!)) + (ja :chan 1 :num! (chan 0)) + (ja :chan 2 :num! (chan 0)) + ) + ) + ((and (ja-group? (-> self draw art-group data 23)) (>= (-> self control unknown-float01) 5734.4)) + (set! s5-0 45) + ) + ) + ) + (if (not (and (ja-group? (-> self draw art-group data 5)) (= (ja-group-size) 3))) + (ja-channel-push! 3 (the-as time-frame s5-0)) + ) + (ground-tween-initialize + gp-0 + (the-as uint 0) + (the-as uint (-> self draw art-group data 5)) + (the-as uint (-> self draw art-group data 14)) + (the-as uint (-> self draw art-group data 17)) + (the-as uint (-> self draw art-group data 8)) + (the-as uint (-> self draw art-group data 11)) + ) + (loop + (ground-tween-update gp-0 (-> self control unknown-float61) (-> self control unknown-float62)) + (suspend) + (ja :num! (loop!)) + (ja :chan 1 :num! (chan 0)) + (ja :chan 2 :num! (chan 0)) + (if (can-play-stance-amibent?) + (go target-stance-ambient) + ) + ) + ) + (none) + ) + :post target-post + ) + (defstate target-walk (target) + :event target-walk-event-handler + :enter (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self control unknown-surface00) *walk-mods*) + (none) + ) + :exit (behavior () + (target-effect-exit) + (target-state-hook-exit) + (none) + ) + :trans (behavior () + ((-> self state-hook)) + (when (= (-> self control ground-pat material) (pat-material ice)) + (target-effect-exit) + (remove-exit) + (go target-ice-walk) + ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons l1 r1) + ) + (and (>= (- (-> *display* base-frame-counter) (-> *TARGET-bank* wheel-timeout)) (-> self control unknown-dword30)) + (and (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) (can-wheel?)) + ) + ) + (go target-wheel) + ) + (when (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) + (target-effect-exit) + (remove-exit) + (go target-duck-walk) + ) + (when (not (move-legs?)) + (target-effect-exit) + (remove-exit) + (go target-stance) + ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) + ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons circle) + ) + (can-feet?) + ) + (go target-attack) + ) + (if (can-hands? #t) + (go target-running-attack) + ) + (when (and (turn-around?) (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.3))) + (set! (-> self control transv quad) + (-> self control unknown-vector-array10 (-> self control unknown-int10) quad) + ) + (set! (-> self control transv w) 1.0) + (go target-turn-around) + ) + (slide-down-test) + (fall-test) + (none) + ) + :code (behavior () + (let ((f28-0 0.0) + (f30-0 (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -16384.0 (-> self control unknown-float01)))))) + (gp-0 #f) + ) + (cond + ((ja-group? (-> self draw art-group data 33)) + (set! f30-0 1.0) + (ja-channel-push! 7 (seconds 0.05)) + ) + ((ja-group? (-> self draw art-group data 69)) + (ja-channel-push! 7 (seconds 0.075)) + (set! f30-0 1.0) + ) + ((ja-group? (-> self draw art-group data 51)) + (let ((f30-1 (fmax 0.8 (fmin 1.0 (* 0.000048828126 (-> self control unknown-float01)))))) + (cond + ((and (rand-vu-percent? (the-as float 0.3)) (< 20480.0 (-> self control unknown-float01))) + (ja-no-eval :group! (-> self draw art-group data 53) + :num! (seek! (ja-aframe (the-as float 29.0) 0) f30-1) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 29.0) 0) f30-1)) + ) + (ja-no-eval :group! (-> self draw art-group data 55) :num! (seek! max f30-1) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-1)) + ) + ) + (else + (ja-no-eval :group! (-> self draw art-group data 52) + :num! (seek! (ja-aframe (the-as float 29.0) 0) f30-1) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 29.0) 0) f30-1)) + ) + (ja-no-eval :group! (-> self draw art-group data 54) :num! (seek! max f30-1) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-1)) + ) + ) + ) + ) + (ja-channel-push! 7 (seconds 0.05)) + (set! f30-0 1.0) + (set! f28-0 30.0) + ) + (else + (let ((v1-108 (ja-group))) + (cond + ((or (= v1-108 (-> self draw art-group data 59)) (= v1-108 (-> self draw art-group data 60))) + (set! f30-0 1.0) + (set! f28-0 30.0) + (ja-channel-push! 7 (seconds 0.15)) + ) + ((let ((v1-116 (ja-group))) + (or (= v1-116 (-> self draw art-group data 84)) (= v1-116 (-> self draw art-group data 85))) + ) + (set! f30-0 1.0) + (set! f28-0 26.0) + (ja-channel-push! 7 (seconds 0.1)) + ) + ((and (ja-group? (-> self draw art-group data 23)) (= (-> self skel root-channel 0) (-> self skel channel))) + (set! f28-0 (ja-aframe-num 0)) + ) + ((ja-group? (-> self draw art-group data 102)) + (set! f28-0 (ja-aframe-num 0)) + (ja-channel-push! 7 (seconds 0.1)) + ) + ((ja-group? (-> self draw art-group data 89)) + (set! f28-0 (ja-aframe-num 0)) + (ja-channel-push! 7 (seconds 0.05)) + ) + ((let ((v1-146 (ja-group))) + (and (or (or (= v1-146 (-> self draw art-group data 38)) + (= v1-146 (-> self draw art-group data 71)) + (= v1-146 (-> self draw art-group data 58)) + (= v1-146 (-> self draw art-group data 62)) + (= v1-146 (-> self draw art-group data 65)) + (= v1-146 (-> self draw art-group data 68)) + ) + (and (ja-group? (-> self draw art-group data 34)) (< 30.0 (ja-aframe-num 0))) + ) + (< 12288.0 (-> self control unknown-float01)) + ) + ) + (let ((s5-4 (ja-group)) + (f30-2 (-> self control ground-impact-vel)) + ) + (case (ja-group) + (((-> self draw art-group data 71) (-> self draw art-group data 58)) + (ja-channel-push! 1 (seconds 0.05)) + ) + (else + (ja-channel-set! 1) + ) + ) + (cond + ((< (the-as float (if (= s5-4 (-> self draw art-group data 34)) + 77824.0 + 102400.0 + ) + ) + f30-2 + ) + (ja-no-eval :group! (-> self draw art-group data 28) + :num! (seek! (ja-aframe (the-as float 3.0) 0) 1.00001) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 3.0) 0) 1.00001)) + ) + ) + ((< (the-as float (if (= s5-4 (-> self draw art-group data 34)) + 61440.0 + 102400.0 + ) + ) + f30-2 + ) + (ja-no-eval :group! (-> self draw art-group data 28) + :num! (seek! (ja-aframe (the-as float 3.0) 0) 1.00001) + :frame-num (ja-aframe (the-as float -1.0) 0) + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 3.0) 0) 1.00001)) + ) + ) + (else + (ja-no-eval :group! (-> self draw art-group data 29) + :num! (seek! (ja-aframe (the-as float 4.0) 0) 1.00001) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 4.0) 0) 1.00001)) + ) + ) + ) + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max (/ (* (fmax 20480.0 (-> self control unknown-float01)) (-> *display* seconds-per-frame)) + (/ (-> *TARGET-bank* run-up-cycle-dist) (-> *TARGET-bank* run-cycle-length)) + ) + ) + ) + ) + (set! f28-0 30.0) + (set! f30-0 1.0) + (ja-channel-set! 7) + ) + ((ja-group? (-> self draw art-group data 34)) + (ja-channel-push! 7 (seconds 0.05)) + (set! gp-0 #t) + ) + ((ja-group? (-> self draw art-group data 78)) + (ja-channel-push! 7 (seconds 0.15)) + ) + (else + (ja-channel-push! 7 (seconds 0.05)) + ) + ) + ) + ) + ) + (set! (-> self skel root-channel 3 command) 'push) + (set! (-> self skel root-channel 6 command) 'stack) + (ja :group! (-> self draw art-group data 23)) + (let ((f28-1 (ja-aframe f28-0 0))) + (ja :group! (-> self draw art-group data 23) + :num! (identity f28-1) + :frame-interp 0.0 + :dist (-> *TARGET-bank* walk-cycle-dist) + ) + (ja :chan 1 + :group! (-> self draw art-group data 25) + :num! (identity f28-1) + :frame-interp 0.0 + :dist (-> *TARGET-bank* walk-down-cycle-dist) + ) + (ja :chan 2 + :group! (-> self draw art-group data 27) + :num! (identity f28-1) + :frame-interp 0.0 + :dist (-> *TARGET-bank* walk-side-cycle-dist) + ) + (ja :chan 4 + :group! (-> self draw art-group data 20) + :num! (identity f28-1) + :frame-interp 0.0 + :dist (-> *TARGET-bank* run-down-cycle-dist) + ) + (ja :chan 5 + :group! (-> self draw art-group data 22) + :num! (identity f28-1) + :frame-interp 0.0 + :dist (-> *TARGET-bank* run-side-cycle-dist) + ) + (ja :chan 3 + :group! (-> self draw art-group data 18) + :num! (identity f28-1) + :frame-interp 0.0 + :dist (-> *TARGET-bank* run-cycle-dist) + ) + ) + (let ((f28-2 0.0) + (f26-1 0.0) + ) + (loop + (let ((f22-0 (fmax -1.0 (fmin 1.0 (* 2.0 (-> self control unknown-float61))))) + (f24-0 (fmax -1.0 (fmin 1.0 (* 1.6 (-> self control unknown-float62))))) + ) + (set! f30-0 (seek + f30-0 + (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -16384.0 (-> self control unknown-float01))))) + (* 2.0 (-> *display* seconds-per-frame)) + ) + ) + (let ((v1-317 (-> self skel effect))) + (set! (-> v1-317 channel-offset) (if (< 0.5 f30-0) + 3 + 0 + ) + ) + ) + 0 + (let ((f0-64 (fabs (- f22-0 f28-2)))) + (set! f28-2 (seek f28-2 f22-0 (fmax 0.05 (fmin 0.2 (* 0.25 f0-64))))) + ) + (let ((f0-69 (fabs (- f24-0 f26-1)))) + (set! f26-1 (seek f26-1 f24-0 (fmax 0.05 (fmin 0.2 (* 0.25 f0-69))))) + ) + ) + (cond + ((>= f28-2 0.0) + (ja :chan 1 + :group! (-> self draw art-group data 24) + :frame-interp (fabs f28-2) + :dist (-> *TARGET-bank* walk-up-cycle-dist) + ) + (ja :chan 4 + :group! (-> self draw art-group data 19) + :frame-interp (fabs f28-2) + :dist (-> *TARGET-bank* run-up-cycle-dist) + ) + ) + (else + (ja :chan 1 + :group! (-> self draw art-group data 25) + :frame-interp (fabs f28-2) + :dist (-> *TARGET-bank* walk-down-cycle-dist) + ) + (ja :chan 4 + :group! (-> self draw art-group data 20) + :frame-interp (fabs f28-2) + :dist (-> *TARGET-bank* run-down-cycle-dist) + ) + ) + ) + (cond + ((>= f26-1 0.0) + (ja :chan 2 + :group! (-> self draw art-group data 26) + :frame-interp (fabs f26-1) + :dist (-> *TARGET-bank* walk-side-cycle-dist) + ) + (ja :chan 5 + :group! (-> self draw art-group data 21) + :frame-interp (fabs f26-1) + :dist (-> *TARGET-bank* run-side-cycle-dist) + ) + ) + (else + (ja :chan 2 + :group! (-> self draw art-group data 27) + :frame-interp (fabs f26-1) + :dist (-> *TARGET-bank* walk-side-cycle-dist) + ) + (ja :chan 5 + :group! (-> self draw art-group data 22) + :frame-interp (fabs f26-1) + :dist (-> *TARGET-bank* run-side-cycle-dist) + ) + ) + ) + (set! (-> self skel root-channel 6 frame-interp) f30-0) + (let* ((f1-19 (current-cycle-distance (-> self skel))) + (f0-92 (/ (-> self control unknown-float01) (* 60.0 (/ f1-19 (-> *TARGET-bank* run-cycle-length))))) + ) + (ja :num! (loop! f0-92)) + ) + (ja :chan 1 :num! (chan 0)) + (ja :chan 2 :num! (chan 0)) + (ja :chan 3 :num! (chan 0)) + (ja :chan 4 :num! (chan 0)) + (ja :chan 5 :num! (chan 0)) + (if (and gp-0 (!= (-> self skel root-channel 0) (-> self skel channel))) + (ja-blend-eval) + ) + (suspend) + ) + ) + ) + (none) + ) + :post target-post + ) + (defstate target-turn-around (target) + :event target-standard-event-handler + :enter (behavior () + (vector-turn-to (-> self control transv)) + (set! (-> self control unknown-surface00) *turn-around-mods*) + (set! (-> self control unknown-float81) 1.0) + (none) + ) + :exit (behavior () + (target-state-hook-exit) + (set-forward-vel (the-as float 0.0)) + (set! (-> self control unknown-float01) 0.0) + (set-quaternion! (-> self control) (-> self control dir-targ)) + (set! (-> self control unknown-float81) 0.0) + (none) + ) + :trans (behavior () + ((-> self state-hook)) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) + ) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) + (go target-attack) + ) + (if (can-hands? #t) + (go target-running-attack) + ) + (if (and (zero? (logand (-> self control status) (cshape-moving-flags onsurf))) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (seconds 0.08)) + ) + (go target-falling #f) + ) + (slide-down-test) + (none) + ) + :code (behavior () + (ja-channel-push! 1 (seconds 0.04)) + (ja :group! (-> self draw art-group data 33) :num! min) + (quaternion-rotate-y! (-> self control dir-targ) (-> self control dir-targ) (the-as float 32768.0)) + (compute-alignment! (-> self align)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 2.0)) + (compute-alignment! (-> self align)) + (align! (-> self align) (align-opts adjust-quat) (the-as float 1.0) (the-as float 1.0) (the-as float 1.0)) + ) + (remove-exit) + (set! (-> self control unknown-float81) 0.0) + (set-forward-vel (the-as float 40960.0)) + (set! (-> self control unknown-float01) 40960.0) + (target-state-hook-exit) + (go target-walk) + (none) + ) + :post target-no-stick-post + ) + (defstate target-slide-down (target) + :event target-walk-event-handler + :enter (behavior () + (set! (-> self control unknown-surface00) *jump-mods*) + (none) + ) + :exit (behavior () + (set! (-> self control unknown-dword35) (-> *display* base-frame-counter)) + (none) + ) + :trans (behavior () + (when (or (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (if (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) + #t + ) + ) + (logior! (-> self control status) (cshape-moving-flags onsurf)) + (go target-duck-stance) + ) + (none) + ) + :code (behavior () + (if (not (ja-group? (-> self draw art-group data 31))) + (ja-channel-push! 1 (seconds 0.1)) + ) + (loop + (ja-no-eval :group! (-> self draw art-group data 31) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + (none) + ) + :post target-post + ) + (set! init-var-jump L418) + (set! mod-var-jump L406) + (defstate target-duck-stance (target) + :event target-standard-event-handler + :enter (behavior () + (set! (-> self control unknown-float81) 1.0) + (set! (-> self control unknown-surface00) *duck-mods*) + (target-collide-set! 'duck (the-as float 1.0)) + (none) + ) + :exit (behavior () + (if (not (or (= (-> self next-state name) 'target-duck-walk) + (= (-> self next-state name) 'target-duck-stance) + (= (-> self next-state name) 'target-walk) + (= (-> self next-state name) 'target-stance) + (= (-> self next-state name) 'target-stance-look-around) + ) + ) + (target-state-hook-exit) + ) + (target-exit) + (target-collide-set! 'normal (the-as float 0.0)) + (none) + ) + :trans (behavior () + ((-> self state-hook)) + (if (and (or (zero? (logand (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons l1 r1)) + ) + (logtest? (-> self state-flags) (state-flags prevent-duck)) + ) + (let ((v1-13 (ja-group))) + (and (not (or (= v1-13 (-> self draw art-group data 70)) (= v1-13 (-> self draw art-group data 69)))) + (can-exit-duck?) + ) + ) + ) + (go target-stance) + ) + (if (move-legs?) + (go target-duck-walk) + ) + (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) + (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (go target-high-jump (-> *TARGET-bank* duck-jump-height-min) (-> *TARGET-bank* duck-jump-height-max) 'duck) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) + ) + ) + (if (and (can-hands? #t) (can-exit-duck?)) + (go + target-attack-uppercut + (-> *TARGET-bank* attack-jump-height-min) + (-> *TARGET-bank* attack-jump-height-max) + ) + ) + (fall-test) + (slide-down-test) + (none) + ) + :code (behavior () + (cond + ((ja-group? (-> self draw art-group data 69)) + (ja-no-eval :group! (-> self draw art-group data 70) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + ((and (ja-group? (-> self draw art-group data 31)) (= (-> self skel root-channel 0) (-> self skel channel))) + ) + ((ja-group? (-> self draw art-group data 32)) + (ja-channel-push! 1 (seconds 0.1)) + ) + (else + (ja-channel-push! 1 (seconds 0.04)) + (ja-no-eval :group! (-> self draw art-group data 30) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + ) + (loop + (ja-no-eval :group! (-> self draw art-group data 31) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + (none) + ) + :post target-post + ) + (defstate target-duck-walk (target) + :event target-standard-event-handler + :enter (behavior () + (set! (-> self control unknown-float81) 1.0) + (target-collide-set! 'duck (the-as float 1.0)) + (if (not (ja-group? (-> self draw art-group data 69))) + (set! (-> self control unknown-surface00) *duck-mods*) + ) + (none) + ) + :exit (-> target-duck-stance exit) + :trans (behavior () + ((-> self state-hook)) + (if (and (or (zero? (logand (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons l1 r1)) + ) + (logtest? (-> self state-flags) (state-flags prevent-duck)) + (and (logtest? (-> self water flags) (water-flags wt10)) + (>= (- (- (-> self control trans y) (- (-> self water base-height) (-> self water wade-height)))) 2457.6) + ) + ) + (can-exit-duck?) + ) + (go target-walk) + ) + (if (not (move-legs?)) + (go target-duck-stance) + ) + (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) + (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (go target-high-jump (-> *TARGET-bank* duck-jump-height-min) (-> *TARGET-bank* duck-jump-height-max) 'duck) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) + ) + ) + (if (and (can-hands? #t) (can-exit-duck?)) + (go + target-attack-uppercut + (-> *TARGET-bank* attack-jump-height-min) + (-> *TARGET-bank* attack-jump-height-max) + ) + ) + (fall-test) + (slide-down-test) + (none) + ) + :code (behavior () + (cond + ((and (ja-group? (-> self draw art-group data 32)) (= (-> self skel root-channel 0) (-> self skel channel))) + ) + ((ja-group? (-> self draw art-group data 31)) + (ja-channel-push! 1 (seconds 0.45)) + (ja :group! (-> self draw art-group data 32) :num! min) + ) + (else + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! (-> self draw art-group data 32) :num! min) + ) + ) + (loop + (if (= (-> self skel root-channel 0) (-> self skel channel)) + (set! (-> self control unknown-surface00) *duck-mods*) + ) + (ja :num! (loop! (fmin 1.0 (/ (-> self control unknown-float01) + (* 60.0 (/ (-> *TARGET-bank* duck-walk-cycle-dist) (-> *TARGET-bank* run-cycle-length))) + ) + ) + ) + ) + (suspend) + ) + (none) + ) + :post target-post + ) + (defstate target-jump (target) + :event target-jump-event-handler + :enter (behavior ((arg0 float) (arg1 float) (arg2 surface)) + (when (= (-> self control unknown-symbol40) 'launch) + (level-hint-spawn + (game-text-id sidekick-launcher1) + "sksp009d" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + (level-hint-spawn + (game-text-id sidekick-launcher2) + "sksp009e" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + (case (-> (level-get-target-inside *level*) name) + (('citadel) + (level-hint-spawn + (game-text-id citadel-launcher2) + "sksp0393" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + (level-hint-spawn + (game-text-id citadel-launcher) + "sksp0388" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ) + enter-state + (let ((a0-9 (-> self control unknown-dword60)) + (a1-5 (-> self control unknown-dword61)) + (a2-5 (-> self control unknown-vector102)) + ) + (set! (-> a2-5 quad) (-> (the-as vector (-> self control unknown-dword62)) quad)) + (go target-launch (the-as float a0-9) (the-as symbol a1-5) a2-5 (-> self control unknown-dword63)) + ) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (sound-play "jump" :vol 70) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #t) (-> self control transv)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! arg2 (cond + (arg2 + (empty) + arg2 + ) + (else + *jump-mods* + ) + ) + ) + (set! (-> self control unknown-surface00) arg2) + (set! (-> self control unknown-float123) + (fmax 0.0 (fmin 1.0 (* 0.00004359654 (+ -11468.8 (-> self control unknown-float01))))) + ) + (set! (-> self control unknown-float122) + (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))) + ) + (none) + ) + :exit target-exit + :trans (behavior () + (set! (-> self control unknown-float123) + (fmax + (-> self control unknown-float123) + (* 0.003921569 (the float (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 6))) + ) + ) + (target-falling-trans #f (the-as time-frame (if (ja-group? (-> self draw art-group data 38)) + 15 + -1 + ) + ) + ) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) x) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 12288.0) + (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (zero? (logand (-> self water flags) (water-flags wt09))) + (zero? (logand (-> self state-flags) (state-flags prevent-jump))) + ) + ) + (go target-double-jump (-> *TARGET-bank* double-jump-height-min) (-> *TARGET-bank* double-jump-height-max)) + ) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) square) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 26624.0) + (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword36)) + (the-as time-frame (-> *TARGET-bank* stuck-timeout)) + ) + (zero? (logand (-> self state-flags) (state-flags prevent-attack))) + (zero? (logand (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08)) + ) + ) + ) + (go + target-flop + (the-as float 65502.96) + (the-as float -163840.0) + (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + 0.0 + 68812.8 + ) + ) + ) + ) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) + (slide-down-test) + (seek! + (-> self control unknown-float122) + (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))) + (-> *display* seconds-per-frame) + ) + (none) + ) + :code (behavior ((arg0 float) (arg1 float) (arg2 surface)) + (ja-channel-push! 2 (seconds 0.05)) + (ja :group! (-> self draw art-group data 34) :num! min) + (ja :chan 1 + :group! (-> self draw art-group data 40) + :num! (chan 0) + :frame-interp (-> self control unknown-float122) + ) + (suspend) + (ja :group! (-> self draw art-group data 34) :num! (+!)) + (ja :chan 1 + :group! (-> self draw art-group data 40) + :num! (chan 0) + :frame-interp (-> self control unknown-float122) + ) + (suspend) + (until (ja-done? 0) + (let ((f30-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (f0-8 (- 20.0 (ja-aframe-num 0))) + (gp-1 (-> self skel root-channel 0)) + ) + (set! (-> gp-1 param 0) (the float (+ (-> gp-1 frame-group data 0 length) -1))) + (let ((v1-45 (and (< 0.0 f30-0) (< 0.0 f0-8)))) + (set! (-> gp-1 param 1) + (the-as + float + (if v1-45 + (fmin (fmin 3.0 f0-8) (/ (* 5.0 f0-8) (the float (time-to-apex f30-0 (the-as float -245760.0))))) + 1.0 + ) + ) + ) + ) + (joint-control-channel-group-eval! gp-1 (the-as art-joint-anim #f) num-func-seek!) + ) + (ja :chan 1 :num! (chan 0) :frame-interp (-> self control unknown-float122)) + (suspend) + ) + (target-falling-anim -1 (seconds 0.2)) + (none) + ) + :post target-post + ) + (defstate target-jump-forward (target) + :event target-jump-event-handler + :enter (behavior ((arg0 float) (arg1 float)) + ((-> target-jump enter) arg0 arg1 (the-as surface #f)) + (set! (-> self control unknown-surface00) *forward-jump-mods*) + (none) + ) + :exit target-exit + :trans (-> target-jump trans) + :code (behavior ((arg0 float) (arg1 float)) + (ja-channel-set! 1) + (ja-no-eval :group! (-> self draw art-group data 34) + :num! (seek!) + :frame-num (ja-aframe (the-as float 3.0) 0) + ) + (until (ja-done? 0) + (set! (-> self control unknown-dword70) 0) + (suspend) + (ja :num! (seek!)) + ) + (ja-no-eval :group! (-> self draw art-group data 38) :num! (loop!) :frame-num 0.0) + (loop + (suspend) + (ja :group! (-> self draw art-group data 38) :num! (loop!)) + ) + (none) + ) + :post target-post + ) + (defstate target-double-jump (target) + :event target-jump-event-handler + :enter (behavior ((arg0 float) (arg1 float)) + (when (= (-> self control unknown-symbol40) 'launch) + enter-state + (let ((a0-3 (-> self control unknown-dword60)) + (a1-1 (-> self control unknown-dword61)) + (a2-0 (-> self control unknown-vector102)) + ) + (set! (-> a2-0 quad) (-> (the-as vector (-> self control unknown-dword62)) quad)) + (go target-launch (the-as float a0-3) (the-as symbol a1-1) a2-0 (-> self control unknown-dword63)) + ) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #t) (-> self control transv)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *double-jump-mods*) + (none) + ) + :exit target-exit + :trans (behavior () + (target-falling-trans #f (the-as time-frame (if (ja-group? (-> self draw art-group data 38)) + 15 + -1 + ) + ) + ) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) square) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 22118.4) + (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword36)) + (the-as time-frame (-> *TARGET-bank* stuck-timeout)) + ) + (zero? (logand (-> self state-flags) (state-flags prevent-attack))) + (zero? (logand (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08)) + ) + ) + ) + (go + target-flop + (the-as float 33775.48) + (the-as float -122880.0) + (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + 0.0 + 68812.8 + ) + ) + ) + ) + (if (!= (-> self state-time) (-> *display* base-frame-counter)) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) + ) + (seek! + (-> self control unknown-float122) + (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))) + (-> *display* seconds-per-frame) + ) + (none) + ) + :code (behavior ((arg0 float) (arg1 float)) + (ja-channel-push! 2 (seconds 0.05)) + (dummy-10 (-> self skel effect) 'jump-double (the-as float -1.0) -1) + (ja-no-eval :group! (-> self draw art-group data 34) + :num! (seek!) + :frame-num (ja-aframe (the-as float 5.0) 0) + ) + (ja :chan 1 :group! (-> self draw art-group data 40) :num! (chan 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + (ja :chan 1 :num! (chan 0) :frame-interp (-> self control unknown-float122)) + ) + (target-falling-anim -1 (seconds 0.2)) + (none) + ) + :post target-post + ) + (defstate target-high-jump (target) + :event target-jump-event-handler + :enter (behavior ((arg0 float) (arg1 float) (arg2 basic)) + (when (and (= (-> self control unknown-symbol40) 'launch) (!= arg2 'launch)) + enter-state + (let ((a0-3 (-> self control unknown-dword60)) + (a1-1 (-> self control unknown-dword61)) + (a2-1 (-> self control unknown-vector102)) + ) + (set! (-> a2-1 quad) (-> (the-as vector (-> self control unknown-dword62)) quad)) + (go target-launch (the-as float a0-3) (the-as symbol a1-1) a2-1 (-> self control unknown-dword63)) + ) + ) + (set! (-> self control unknown-uint31) (the-as uint arg2)) + (if (or (= arg2 'duck) (= arg2 'launch)) + (go target-duck-high-jump arg0 arg1 (the-as symbol arg2)) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (sound-play "jump" :pitch 0.3) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #t) (-> self control transv)) + (set! (-> self control unknown-surface00) (cond + ((= arg2 'flip) + *flip-jump-mods* + ) + ((= arg2 'flop-forward) + *forward-high-jump-mods* + ) + (else + *high-jump-mods* + ) + ) + ) + (set! (-> self control unknown-float122) + (fmax 0.0 (fmin 0.5 (* 0.00008138021 (+ -409.6 (-> self control unknown-float01))))) + ) + (none) + ) + :exit target-exit + :trans (behavior () + (target-falling-trans #f (the-as time-frame (if (ja-group? (-> self draw art-group data 38)) + 15 + -1 + ) + ) + ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons square) + ) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 73728.0) + (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword36)) + (the-as time-frame (-> *TARGET-bank* stuck-timeout)) + ) + (zero? (logand (-> self state-flags) (state-flags prevent-attack))) + (zero? (logand (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08)) + ) + ) + ) + (go + target-flop + (the-as float 33775.48) + (the-as float -122880.0) + (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + 0.0 + 68812.8 + ) + ) + ) + ) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) + (seek! + (-> self control unknown-float122) + (fmax 0.0 (fmin 1.0 (* 0.00012207031 (+ -2048.0 (-> self control unknown-float01))))) + (-> *display* seconds-per-frame) + ) + (none) + ) + :code (-> target-jump code) + :post target-post + ) + (defstate target-duck-high-jump (target) + :event target-standard-event-handler + :enter (behavior ((arg0 float) (arg1 float) (arg2 symbol)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *turn-around-mods*) + (none) + ) + :exit target-exit + :code (behavior ((arg0 float) (arg1 float) (arg2 symbol)) + (if (not (and (ja-group? (-> self draw art-group data 31)) (= (-> self skel root-channel 0) (-> self skel channel))) + ) + (ja-channel-push! 1 (seconds 0.04)) + ) + (case arg2 + (('launch) + (ja-no-eval :group! (-> self draw art-group data 42) + :num! (seek! (ja-aframe (the-as float 16.0) 0)) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 16.0) 0))) + ) + ) + (else + (ja-no-eval :group! (-> self draw art-group data 41) + :num! (seek! (ja-aframe (the-as float 16.0) 0)) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 16.0) 0))) + ) + ) + ) + (go target-duck-high-jump-jump arg0 arg1 arg2) + (none) + ) + :post target-post + ) + (defstate target-duck-high-jump-jump (target) + :event target-jump-event-handler + :enter (behavior ((arg0 float) (arg1 float) (arg2 symbol)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (sound-play "jump" :vol 80 :pitch -0.4) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (cond + ((= arg2 'launch) + (set! (-> self neck flex-blend) 0.0) + (set! (-> self control unknown-surface00) *launch-jump-mods*) + ) + (else + (set! (-> self control unknown-surface00) *high-jump-mods*) + ) + ) + (none) + ) + :exit target-exit + :trans (-> target-high-jump trans) + :code (behavior ((arg0 float) (arg1 float) (arg2 symbol)) + (let ((f30-0 (the-as float (if (= arg2 'launch) + 110.0 + 35.0 + ) + ) + ) + (f28-0 1.0) + ) + (until (ja-done? 0) + (let* ((f24-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (f26-0 (- f30-0 (ja-aframe-num 0))) + (f22-1 (fmin (fmin 3.0 f26-0) (/ (* 5.0 f26-0) (the float (time-to-apex f24-0 (the-as float -245760.0)))))) + (s5-0 (-> self skel root-channel 0)) + ) + (set! (-> s5-0 param 0) (the float (+ (-> s5-0 frame-group data 0 length) -1))) + (let ((v1-26 (cond + ((and (< 0.0 f24-0) (< 0.0 f26-0)) + (if (= arg2 'launch) + (set! f28-0 (lerp f28-0 (* 4.0 f22-1) (the-as float 0.25))) + ) + f22-1 + ) + (else + f28-0 + ) + ) + ) + ) + (set! (-> s5-0 param 1) v1-26) + ) + (joint-control-channel-group-eval! s5-0 (the-as art-joint-anim #f) num-func-seek!) + ) + (suspend) + ) + (cond + ((= arg2 'launch) + (ja-no-eval :group! (-> self draw art-group data 43) :num! (loop! f28-0) :frame-num 0.0) + (loop + (suspend) + (ja :group! (-> self draw art-group data 43) :num! (loop! f28-0)) + ) + ) + (else + (ja-no-eval :group! (-> self draw art-group data 38) :num! (loop!) :frame-num 0.0) + (loop + (suspend) + (ja :group! (-> self draw art-group data 38) :num! (loop!)) + ) + ) + ) + ) + (the-as none 0) + (none) + ) + :post target-post + ) + (defstate target-falling (target) + :event target-jump-event-handler + :enter (behavior ((arg0 symbol)) + (set! (-> self control unknown-surface00) *jump-mods*) + (set! (-> self control unknown-uint20) (the-as uint arg0)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) + :trans (behavior () + (target-falling-trans + (-> self control unknown-spoolanim00) + (the-as time-frame (if (= (-> self control unknown-spoolanim00) #f) + 0 + (/ (the-as int (-> *TARGET-bank* stuck-time)) 2) + ) + ) + ) + (none) + ) + :code (behavior ((arg0 symbol)) + (target-falling-anim -1 (seconds 0.33)) + (none) + ) + :post target-post + ) + (defstate target-hit-ground (target) + :event target-walk-event-handler + :enter (behavior ((arg0 symbol)) + (cond + ((= arg0 'stuck) + ) + ((let ((v1-4 (ja-group))) + (or (= v1-4 (-> self draw art-group data 42)) (= v1-4 (-> self draw art-group data 43))) + ) + (dummy-10 (-> self skel effect) 'group-blue-hit-ground-effect (the-as float 0.0) -1) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.3)) + ) + (else + (let ((f0-1 (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector52) (-> self control trans)) + ) + ) + ) + (if (and (< (-> *TARGET-bank* fall-far) f0-1) + (zero? (logand (-> self control status) (cshape-moving-flags on-water))) + ) + (go target-hit-ground-hard f0-1) + ) + ) + ) + ) + (cond + ((= arg0 'stuck) + ) + (else + (target-land-effect) + ) + ) + (set! (-> self control unknown-dword31) 0) + (set! (-> self control unknown-dword33) 0) + (if (>= (-> self control ground-impact-vel) (-> *TARGET-bank* fall-stumble-threshold)) + (set-forward-vel (the-as float 0.0)) + ) + (if (!= (-> self control ground-pat material) (pat-material ice)) + (delete-back-vel) + ) + (set! (-> self control unknown-surface00) *walk-mods*) + (start-bobbing! + (-> self water) + (lerp-scale + (the-as float 0.0) + (the-as float 4096.0) + (-> self control ground-impact-vel) + (the-as float 40960.0) + (the-as float 102400.0) + ) + 600 + 1500 + ) + (none) + ) + :trans (behavior () + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) + ) + (if (and (not (can-exit-duck?)) (can-duck?)) + (go target-duck-stance) + ) + (when (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (if (logtest? (-> self water flags) (water-flags wt10)) + (go target-wade-walk) + (go target-walk) + ) + ) + (if (and (or (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (not (can-exit-duck?))) (can-duck?)) + (go target-duck-stance) + ) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) + (go target-attack) + ) + (if (can-hands? #t) + (go target-running-attack) + ) + (fall-test) + (slide-down-test) + (none) + ) + :code (behavior ((arg0 symbol)) + (target-hit-ground-anim #f) + (go target-stance) + (none) + ) + :post target-post + ) + (defstate target-attack (target) + :event target-dangerous-event-handler + :enter (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (target-start-attack) + (target-danger-set! 'spin #f) + (set! (-> self control unknown-surface00) *attack-mods*) + (set! (-> self water drip-mult) 4.0) + (set! (-> self neck flex-blend) 0.0) + (none) + ) + :exit (behavior () + (set! (-> self control unknown-dword33) (-> *display* base-frame-counter)) + (target-exit) + (none) + ) + :code (behavior () + (ja-channel-push! 1 (seconds 0.05)) + (ja-no-eval :group! (-> self draw art-group data 51) + :num! (seek! max (-> self control unknown-surface01 align-speed)) + :frame-num 0.0 + ) + (until (ja-done? 0) + (when (and (= (-> self fact-info-target eco-type) (pickup-type eco-red)) + (>= (-> self fact-info-target eco-level) 1.0) + ) + (dummy-10 (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 74) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) + (level-hint-spawn + (game-text-id misty-eco-red-first-use) + "sksp0072" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) + ) + (suspend) + (ja :num! (seek! max (-> self control unknown-surface01 align-speed))) + ) + (go target-stance) + (none) + ) + :post target-post + ) + (defstate target-running-attack (target) + :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('touched) + (cond + (((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> self control) + (the-as uint 224) + ) + (let ((gp-1 (target-send-attack + arg0 + (the-as uint (-> self control unknown-symbol30)) + (-> arg3 param 0) + (-> self control unknown-dword50) + (-> self control unknown-dword51) + ) + ) + ) + (when gp-1 + (set! (-> self control unknown-uint20) (the-as uint (-> *display* base-frame-counter))) + (let ((v1-9 (if (and (nonzero? arg0) (type-type? (-> arg0 type) process-drawable)) + arg0 + ) + ) + ) + (when v1-9 + (let* ((s5-1 (-> (the-as process-drawable v1-9) root)) + (v1-11 (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) collide-shape)) + (the-as collide-shape s5-1) + ) + ) + ) + (if (and v1-11 (or (logtest? (-> v1-11 root-prim prim-core collide-as) (collide-kind enemy)) + (logtest? (-> v1-11 root-prim prim-core action) (collide-action ca-10)) + ) + ) + (set! (-> self control unknown-uint31) (the-as uint 1)) + ) + ) + ) + ) + (when (or (= gp-1 'die) (= gp-1 'push)) + (let ((v0-2 (the-as object (-> *display* base-frame-counter)))) + (set! (-> self control unknown-int21) (the-as int v0-2)) + v0-2 + ) + ) + ) + ) + ) + (else + (target-dangerous-event-handler arg0 arg1 arg2 arg3) + ) + ) + ) + (else + (target-dangerous-event-handler arg0 arg1 arg2 arg3) + ) + ) + ) + :enter (behavior () + (if (or (and (= (-> self fact-info-target eco-type) (pickup-type eco-yellow)) + (>= (-> self fact-info-target eco-level) 1.0) + ) + (< (- (-> *display* base-frame-counter) (-> self control unknown-dword82)) (seconds 1.5)) + ) + (go target-yellow-blast) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self control unknown-uint20) (the-as uint 0)) + (set! (-> self control unknown-int21) 0) + (set! (-> self control unknown-uint31) (the-as uint 0)) + (set! (-> self control unknown-surface00) *run-attack-mods*) + (set! (-> *run-attack-mods* turnv) 655360.0) + (set! (-> *run-attack-mods* turnvv) 655360.0) + (target-start-attack) + (target-danger-set! 'punch #f) + (if (or (< (fabs (-> self control unknown-float62)) 0.3) (< 0.3 (fabs (-> self control unknown-float61)))) + (set! (-> self control unknown-float81) 1.0) + ) + (none) + ) + :exit (behavior () + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (set! (-> *run-attack-mods* turnv) 0.0) + (set! (-> *run-attack-mods* turnvv) 0.0) + (set! (-> self control unknown-dword31) (-> *display* base-frame-counter)) + (target-exit) + (none) + ) + :trans (behavior () + (when (!= (-> self state-time) (-> *display* base-frame-counter)) + (if (and (or (smack-surface? #t) + (and (>= (-> self control unknown-float63) 0.7) + (zero? (logand (-> self control status) (cshape-moving-flags t-act))) + ) + ) + (begin + (set! (-> self control unknown-int21) (the-as int (-> *display* base-frame-counter))) + (set! (-> self control unknown-float81) 0.0) + (let ((gp-0 (new-stack-vector0)) + (f30-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + ) + 0.0 + (vector-! gp-0 (-> self control transv) (vector-float*! gp-0 (-> self control dynam gravity-normal) f30-0)) + (let* ((f0-5 (vector-length gp-0)) + (f1-1 f0-5) + (f2-1 (fmin 0.0 f30-0)) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-1) + (vector-float*! gp-0 gp-0 (/ f0-5 f1-1)) + ) + ) + ) + #t + ) + (or (zero? (-> self control unknown-uint20)) + (>= (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> self control unknown-uint20)))) + (the-as uint 12) + ) + ) + (!= (-> self control unknown-uint31) 1) + ) + (target-shoved + (-> *TARGET-bank* smack-surface-dist) + (-> *TARGET-bank* smack-surface-height) + (the-as process #f) + target-hit + ) + ) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) x) + (and (< 4096.0 (-> self control unknown-float01)) + (or (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.1)) + (zero? (logand (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) + (pad-buttons square) + ) + ) + ) + (zero? (logand (-> self state-flags) (state-flags prevent-jump prevent-attack))) + (zero? (logand (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump))) + ) + ) + (go + target-attack-uppercut + (-> *TARGET-bank* attack-jump-height-min) + (-> *TARGET-bank* attack-jump-height-max) + ) + ) + (if (and (logtest? (-> self water flags) (water-flags wt09)) + (zero? (mod (- (-> *display* base-frame-counter) (-> self state-time)) 21)) + ) + (dummy-13 + (-> self water) + (the-as float 0.6) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 37)) + 0 + (-> self control transv) + ) + ) + (when (and (= (-> self fact-info-target eco-type) (pickup-type eco-red)) + (>= (-> self fact-info-target eco-level) 1.0) + ) + (dummy-10 (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 23) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) + (level-hint-spawn + (game-text-id misty-eco-red-first-use) + "sksp0072" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ) + (none) + ) + :code (behavior () + (if (logtest? (-> self water flags) (water-flags wt09)) + (sound-play "swim-stroke") + ) + (ja-channel-push! 1 (seconds 0.02)) + (ja :group! (-> self draw art-group data 59) :num! min) + (set! (-> self control dynam gravity-max) 368640.0) + (set! (-> self control dynam gravity-length) 368640.0) + (let ((f28-0 0.0) + (f30-0 1.0) + (gp-2 0) + ) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (when (not (ja-min? 0)) + (cond + ((and (>= (ja-aframe-num 0) 20.0) + (and (and (zero? (logand (-> self control status) (cshape-moving-flags onsurf))) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (-> *TARGET-bank* ground-timeout)) + (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (let ((v1-39 (ja-group))) + (or (not (or (= v1-39 (-> self draw art-group data 59)) + (= v1-39 (-> self draw art-group data 60)) + (= v1-39 (-> self draw art-group data 61)) + ) + ) + (< 4096.0 (target-height-above-ground)) + ) + ) + ) + (>= (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> self control unknown-uint20)))) + (the-as uint 12) + ) + ) + ) + (go target-falling #f) + ) + ((and (nonzero? (-> self control unknown-uint30)) + (>= (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> self control unknown-uint30)))) + (the-as uint 12) + ) + ) + (set-forward-vel (the-as float 0.0)) + ) + ((and (zero? (logand (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) + (pad-buttons square) + ) + ) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.05)) + ) + (if (= (-> self control ground-pat material) (pat-material ice)) + (set-forward-vel (fmax 32768.0 (* 0.8 (-> self control unknown-float01)))) + (set-forward-vel (* 0.8 (-> self control unknown-float01))) + ) + ) + ((ja-done? 0) + (set-forward-vel f28-0) + ) + (else + (set! f28-0 + (* (target-align-vel-z-adjust (-> self align delta trans z)) (-> *display* frames-per-second) f30-0) + ) + (set-forward-vel f28-0) + ) + ) + ) + (let ((s5-1 (new-stack-vector0))) + (vector-matrix*! s5-1 (-> self control transv) (-> self control unknown-matrix00)) + (set! (-> s5-1 y) 0.0) + (vector-matrix*! (-> self control unknown-vector120) s5-1 (-> self control unknown-matrix01)) + ) + (suspend) + (ja :num! (seek! max (-> self control unknown-surface01 align-speed))) + (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.1)) + (set! (-> *run-attack-mods* turnvv) 0.0) + ) + (if (< 2 gp-2) + (set! f30-0 (* f30-0 (fmin 1.0 (-> self control unknown-float140)))) + ) + (+! gp-2 1) + ) + ) + (if (and (zero? (logand (-> self control status) (cshape-moving-flags onsurf))) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (-> *TARGET-bank* ground-timeout)) + (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (let ((v1-121 (ja-group))) + (or (not (or (= v1-121 (-> self draw art-group data 59)) + (= v1-121 (-> self draw art-group data 60)) + (= v1-121 (-> self draw art-group data 61)) + ) + ) + (< 4096.0 (target-height-above-ground)) + ) + ) + ) + (go target-falling #f) + ) + (go target-stance) + (none) + ) + :post target-post + ) + (defstate target-attack-air (target) + :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v0-0 (target-bonk-event-handler arg0 arg1 arg2 arg3))) + (cond + (v0-0 + (empty) + v0-0 + ) + (else + (target-dangerous-event-handler arg0 arg1 arg2 arg3) + ) + ) + ) + ) + :enter (behavior ((arg0 symbol)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (target-start-attack) + (target-danger-set! 'spin-air #f) + (set! (-> self control unknown-surface00) *jump-attack-mods*) + (let ((f0-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + (cond + ((or (>= 0.0 f0-1) (= arg0 'flop)) + (let ((gp-1 (new-stack-vector0))) + (let ((f0-3 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-1 (-> self control transv) (vector-float*! gp-1 (-> self control dynam gravity-normal) f0-3)) + ) + (let* ((f0-4 (vector-length gp-1)) + (f1-2 f0-4) + (f2-0 33775.48) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) + (vector-float*! gp-1 gp-1 (/ f0-4 f1-2)) + ) + ) + ) + ) + (else + (let* ((f1-5 (/ f0-1 (* (-> self control dynam gravity-length) (-> *display* seconds-per-frame)))) + (f30-0 (* 0.5 f1-5 (-> *display* seconds-per-frame) f0-1)) + ) + (if (ja-group? (-> self draw art-group data 62)) + (set! f30-0 + (fmax + 0.0 + (- (-> *TARGET-bank* attack-jump-height-max) + (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control unknown-vector52)) + ) + ) + ) + ) + ) + (let ((gp-2 (new-stack-vector0))) + (let ((f0-8 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-2 (-> self control transv) (vector-float*! gp-2 (-> self control dynam gravity-normal) f0-8)) + ) + (let* ((f0-9 (vector-length gp-2)) + (f1-11 f0-9) + (f2-7 (+ 1024.0 (sqrtf (* 245760.0 (+ 2048.0 f30-0))))) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-7) + (vector-float*! gp-2 gp-2 (/ f0-9 f1-11)) + ) + ) + ) + ) + ) + ) + ) + (set! (-> self control dynam gravity-length) 122880.0) + (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) + (none) + ) + :exit (behavior () + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + ((-> target-attack exit)) + (none) + ) + :trans (behavior () + (when (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (set-quaternion! (-> self control) (-> self control dir-targ)) + (go target-hit-ground #f) + ) + (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.5)) + (seek! + (-> self control dynam gravity-length) + (-> self control unknown-dynamics00 gravity-length) + (* 245760.0 (-> *display* seconds-per-frame)) + ) + ) + (when (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.05)) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control unknown-vector10)) + (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) + ) + ) + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + ) + (when (and (= (-> self fact-info-target eco-type) (pickup-type eco-red)) + (>= (-> self fact-info-target eco-level) 1.0) + ) + (dummy-10 (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 70) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) + (level-hint-spawn + (game-text-id misty-eco-red-first-use) + "sksp0072" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + (none) + ) + :code (behavior ((arg0 symbol)) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! (-> self draw art-group data 56) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (align! (-> self align) (align-opts adjust-quat) (the-as float 1.0) (the-as float 1.0) (the-as float 1.0)) + (suspend) + (ja :num! (seek!)) + ) + (ja :group! (-> self draw art-group data 57) :num! min) + (let ((f30-0 393216.0)) + (let ((f0-8 (target-height-above-ground)) + (f1-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + ) + (while (not (or (and (< (fabs (/ f0-8 (* 0.0033333334 f1-1))) 150.0) (< f1-1 0.0)) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 1.7)) + ) + ) + (quaternion-rotate-y! + (-> self control unknown-quaternion00) + (-> self control unknown-quaternion00) + (* f30-0 (-> *display* seconds-per-frame)) + ) + (suspend) + (ja :num! (loop!)) + (set! f0-8 (target-height-above-ground)) + (set! f1-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + ) + ) + (ja-no-eval :group! (-> self draw art-group data 58) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (cond + ((< (ja-aframe-num 0) 32.0) + (quaternion-rotate-y! + (-> self control unknown-quaternion00) + (-> self control unknown-quaternion00) + (* f30-0 (-> *display* seconds-per-frame)) + ) + ) + (else + (let ((f0-22 + (deg-diff + (quaternion-y-angle (-> self control unknown-quaternion00)) + (quaternion-y-angle (-> self control dir-targ)) + ) + ) + ) + (quaternion-rotate-y! + (-> self control unknown-quaternion00) + (-> self control unknown-quaternion00) + (* 0.2 (fabs f0-22)) + ) + ) + ) + ) + (suspend) + (ja :num! (seek!)) + ) + ) + (go target-falling #f) + (none) + ) + :post target-post + ) + (defstate target-attack-uppercut (target) + :event target-dangerous-event-handler + :enter (behavior ((arg0 float) (arg1 float)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (target-start-attack) + (target-danger-set! 'uppercut #f) + (set! (-> self control unknown-surface00) *turn-around-mods*) + (none) + ) + :exit target-exit + :code (behavior ((arg0 float) (arg1 float)) + (let ((s3-0 (ja-group? (-> self draw art-group data 31)))) + (ja-no-eval :group! (-> self draw art-group data 62) + :num! (seek! (ja-aframe (the-as float 7.0) 0)) + :frame-num (the-as float (if s3-0 + (ja-aframe (the-as float 5.0) 0) + 0.0 + ) + ) + ) + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 7.0) 0))) + ) + (go target-attack-uppercut-jump arg0 arg1) + (none) + ) + :post target-post + ) + (defstate target-attack-uppercut-jump (target) + :event target-dangerous-event-handler + :enter (behavior ((arg0 float) (arg1 float)) + (if (and (= (-> self control ground-pat material) (pat-material ice)) + (< 32768.0 (-> self control unknown-float01)) + ) + (set-forward-vel (the-as float 32768.0)) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *uppercut-jump-mods*) + (target-start-attack) + (target-danger-set! 'uppercut #f) + (none) + ) + :exit target-exit + :trans (behavior () + (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (go target-hit-ground #f) + ) + (when (and (cpad-pressed? (-> self control unknown-cpad-info00 number) square) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 22118.4) + (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword36)) + (the-as time-frame (-> *TARGET-bank* stuck-timeout)) + ) + (zero? (logand (-> self state-flags) (state-flags prevent-attack))) + (zero? (logand (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08)) + ) + ) + ) + (set-quaternion! (-> self control) (-> self control dir-targ)) + (build-conversions (-> self control transv)) + (go + target-flop + (the-as float 65502.96) + (the-as float -163840.0) + (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + 0.0 + 68812.8 + ) + ) + ) + ) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) + (can-feet?) + (ja-group? (-> self draw art-group data 62)) + (>= (ja-aframe-num 0) 12.0) + ) + (go target-attack-air 'uppercut) + ) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) + (when (and (= (-> self fact-info-target eco-type) (pickup-type eco-red)) + (>= (-> self fact-info-target eco-level) 1.0) + ) + (dummy-10 (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 23) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) + ) + (if (and (= (-> self control unknown-symbol30) 'uppercut) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) -8192.0) + ) + (target-danger-set! 'harmless #f) + ) + (slide-down-test) + (none) + ) + :code (behavior ((arg0 float) (arg1 float)) + (compute-alignment! (-> self align)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.9)) + (compute-alignment! (-> self align)) + (let* ((gp-0 (-> self align)) + (s5-0 (method-of-object gp-0 align!)) + (a1-2 (cond + ((>= 30.0 (ja-aframe-num 0)) + 18 + ) + ((>= 43.0 (ja-aframe-num 0)) + (set! (-> self control unknown-surface00) *double-jump-mods*) + 2 + ) + (else + 0 + ) + ) + ) + ) + (s5-0 gp-0 (the-as align-opts a1-2) (the-as float 1.0) (the-as float 0.95) (the-as float 1.0)) + ) + ) + (go target-falling #f) + (none) + ) + :post target-post + ) + (defstate target-flop (target) + :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v0-0 (target-bonk-event-handler arg0 arg1 arg2 arg3))) + (cond + (v0-0 + (empty) + v0-0 + ) + ((let ((v1-0 arg2)) + (= v1-0 'swim) + ) + (cond + ((< 6144.0 (target-height-above-ground)) + (dummy-10 (-> self skel effect) 'swim-flop (the-as float -1.0) -1) + (let ((t9-3 enter-state)) + (set! (-> self next-state) target-swim-down) + ((the-as (function object :behavior target) t9-3)) + ) + ) + (else + (let ((t9-4 enter-state) + (a0-4 'swim) + ) + (set! (-> self next-state) target-flop-hit-ground) + ((the-as (function symbol object :behavior target) t9-4) a0-4) + ) + ) + ) + ) + (else + (target-dangerous-event-handler arg0 arg1 arg2 arg3) + ) + ) + ) + ) + :enter (behavior ((arg0 float) (arg1 float) (arg2 float)) + (if (and (= (-> self fact-info-target eco-type) (pickup-type eco-yellow)) + (>= (-> self fact-info-target eco-level) 1.0) + ) + (go target-yellow-jump-blast) + ) + (if (= arg2 0.0) + (set-forward-vel arg2) + (set-forward-vel (-> self control unknown-float01)) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *flop-mods*) + (set! (-> self control unknown-uint20) (the-as uint 0)) + (set! (-> self control dynam gravity-max) 245760.0) + (set! (-> self control dynam gravity-length) 245760.0) + (let ((gp-1 (new-stack-vector0))) + (let ((f0-6 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-1 (-> self control transv) (vector-float*! gp-1 (-> self control dynam gravity-normal) f0-6)) + ) + (let* ((f0-7 (vector-length gp-1)) + (f1-3 f0-7) + (f2-0 29491.2) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) + (vector-float*! gp-1 gp-1 (/ f0-7 f1-3)) + ) + ) + ) + (none) + ) + :exit (behavior () + (target-danger-set! 'harmless #f) + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (set! (-> self control dynam gravity quad) (-> self control unknown-dynamics00 gravity quad)) + (none) + ) + :trans (behavior () + (delete-back-vel) + (let ((gp-1 (logtest? (-> self control status) (cshape-moving-flags onsurf)))) + (when (and (not gp-1) (let ((v1-6 (ja-group))) + (or (= v1-6 (-> self draw art-group data 64)) (= v1-6 (-> self draw art-group data 66))) + ) + ) + (when (and (or (< (target-move-dist (seconds 0.1)) 1638.4) + (and (logtest? (-> self control status) (cshape-moving-flags twall)) (< 0.7 (-> self control poly-angle))) + ) + (zero? (logand (-> self control status) (cshape-moving-flags t-act))) + (>= (-> self control unknown-uint20) (the-as uint 2)) + ) + (set! (-> self control unknown-dword36) (-> *display* base-frame-counter)) + (set! gp-1 'stuck) + ) + ) + (when gp-1 + (logior! (-> self control status) (cshape-moving-flags onsurf)) + (when (and (= (-> self fact-info-target eco-type) (pickup-type eco-red)) + (>= (-> self fact-info-target eco-level) 1.0) + ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.5)) + (dummy-10 (-> self skel effect) 'group-red-eco-strike-ground (ja-frame-num 0) 0) + (let ((s5-1 (process-spawn touch-tracker :init touch-tracker-init (-> self control trans) 4096.0 30 :to self))) + (send-event (ppointer->process s5-1) 'event 'attack 'flop) + (send-event + (ppointer->process s5-1) + 'function + (lambda ((arg0 target)) (let ((f0-3 (seek + (-> arg0 control root-prim local-sphere w) + (the-as float 28672.0) + (* 286720.0 (-> *display* seconds-per-frame)) + ) + ) + ) + (set! (-> arg0 control root-prim local-sphere w) f0-3) + f0-3 + ) + ) + ) + ) + ) + (go target-flop-hit-ground gp-1) + ) + ) + (when (and (= (-> self fact-info-target eco-type) (pickup-type eco-red)) + (>= (-> self fact-info-target eco-level) 1.0) + ) + (dummy-10 + (-> self skel effect) + 'group-red-eco-spinkick + (ja-frame-num 0) + (if (rand-vu-percent? (the-as float 0.5)) + 23 + 17 + ) + ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) + ) + (when (and (not (-> self control unknown-symbol30)) + (ja-group? (-> self draw art-group data 63)) + (>= (ja-aframe-num 0) 8.0) + ) + (target-start-attack) + (target-danger-set! 'flop #f) + ) + (none) + ) + :code (behavior ((arg0 float) (arg1 float) (arg2 float)) + (ja-channel-set! 2) + (ja-no-eval :group! (-> self draw art-group data 63) :num! (seek!) :frame-num 0.0) + (ja :chan 1 :group! (-> self draw art-group data 66) :num! (chan 0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + (ja :chan 1 :num! (seek!) :frame-interp (lerp-scale + (the-as float 0.0) + (the-as float 1.0) + (-> self control unknown-float01) + (the-as float 0.0) + (the-as float 40960.0) + ) + ) + ) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (set! (-> self control dynam gravity quad) (-> self control unknown-dynamics00 gravity quad)) + (target-danger-set! 'flop-down #f) + (ja :group! (-> self draw art-group data 64) :num! min) + (ja :chan 1 :group! (-> self draw art-group data 67) :num! min) + (let ((f30-0 1.0)) + (let ((gp-3 (new-stack-vector0))) + (let ((f0-18 (vector-dot (-> self control dynam gravity-normal) (-> self control unknown-vector120)))) + 0.0 + (vector-! + gp-3 + (-> self control unknown-vector120) + (vector-float*! gp-3 (-> self control dynam gravity-normal) f0-18) + ) + ) + (let* ((f0-19 (vector-length gp-3)) + (f1-1 f0-19) + (f2-0 -368640.0) + ) + (vector+! + (-> self control unknown-vector120) + (vector-float*! (-> self control unknown-vector120) (-> self control dynam gravity-normal) f2-0) + (vector-float*! gp-3 gp-3 (/ f0-19 f1-1)) + ) + ) + ) + (let ((gp-4 (new-stack-vector0))) + (let ((f0-22 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-4 (-> self control transv) (vector-float*! gp-4 (-> self control dynam gravity-normal) f0-22)) + ) + (let* ((f0-23 (vector-length gp-4)) + (f1-3 f0-23) + (f2-2 (* -368640.0 f30-0)) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2) + (vector-float*! gp-4 gp-4 (/ f0-23 f1-3)) + ) + ) + ) + (suspend) + (loop + (+! (-> self control unknown-uint20) 1) + (ja :num! (+!)) + (ja :chan 1 :num! (chan 0) :frame-interp (lerp-scale + (the-as float 0.0) + (the-as float 1.0) + (-> self control unknown-float01) + (the-as float 0.0) + (the-as float 40960.0) + ) + ) + (set! f30-0 (* f30-0 (fmin 1.0 (-> self control unknown-float140)))) + (let ((gp-6 (new-stack-vector0)) + (f28-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + ) + 0.0 + (vector-! gp-6 (-> self control transv) (vector-float*! gp-6 (-> self control dynam gravity-normal) f28-0)) + (let* ((f1-5 (vector-length gp-6)) + (f0-34 f1-5) + ) + (if (< (-> self control unknown-surface01 transv-max) f1-5) + (set! f1-5 (-> self control unknown-surface01 transv-max)) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f28-0) + (vector-float*! gp-6 gp-6 (/ f1-5 f0-34)) + ) + ) + ) + (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> *TARGET-bank* fall-timeout)) + (go target-falling #f) + ) + (if (and (= *cheat-mode* 'debug) (cpad-hold? (-> self control unknown-cpad-info00 number) r2) (not *pause-lock*)) + (go target-falling #f) + ) + (suspend) + ) + ) + (none) + ) + :post target-post + ) + (defstate target-flop-hit-ground (target) + :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('swim) + #f + ) + (else + (target-standard-event-handler arg0 arg1 arg2 arg3) + ) + ) + ) + :enter (behavior ((arg0 symbol)) + (let ((f0-1 (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector111) (-> self control trans)) + ) + ) + ) + (if (< (-> *TARGET-bank* fall-far) f0-1) + (go target-hit-ground-hard f0-1) + ) + ) + (target-land-effect) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.1)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self control unknown-uint20) (the-as uint arg0)) + (set-forward-vel (the-as float 0.0)) + (set! (-> self control unknown-surface00) *flop-land-mods*) + (logclear! (-> *flop-land-mods* flags) (surface-flags allow-edge-grab)) + (set! (-> self state-flags) (logior (state-flags flop-hit-ground) (-> self state-flags))) + (none) + ) + :exit target-exit + :trans (behavior () + (when (!= (-> self control unknown-spoolanim00) 'stuck) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) + (go target-attack-air 'flop) + ) + ) + (when (and (and (= (-> self fact-info-target eco-type) (pickup-type eco-red)) + (>= (-> self fact-info-target eco-level) 1.0) + ) + (< (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.25)) + ) + (dummy-10 + (-> self skel effect) + 'group-red-eco-spinkick + (ja-frame-num 0) + (if (rand-vu-percent? (the-as float 0.5)) + 23 + 17 + ) + ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) + ) + (let ((v1-33 (ja-group))) + (if (and (or (= v1-33 (-> self draw art-group data 65)) (= v1-33 (-> self draw art-group data 68))) + (>= (ja-aframe-num 0) 28.0) + ) + (logior! (-> *flop-land-mods* flags) (surface-flags allow-edge-grab)) + ) + ) + (slide-down-test) + (none) + ) + :code (behavior ((arg0 symbol)) + (target-hit-ground-anim arg0) + (go target-falling #f) + (none) + ) + :post target-post + ) + (defstate target-wheel (target) + :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (if (= arg2 'touched) + (send-event arg0 'roll) + ) + (target-standard-event-handler arg0 arg1 arg2 arg3) + ) + :enter (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self control unknown-surface00) *wheel-mods*) + (+! (-> self control unknown-int50) 1) + (rot->dir-targ! (-> self control)) + (set-forward-vel (+ (-> *TARGET-bank* wheel-speed-min) + (* (-> *TARGET-bank* wheel-speed-inc) (the float (+ (-> self control unknown-int50) -1))) + ) + ) + (if (or (< (fabs (-> self control unknown-float62)) 0.3) (< 0.3 (fabs (-> self control unknown-float61)))) + (set! (-> self control unknown-float81) 1.0) + ) + (set! (-> self control unknown-uint20) (the-as uint 0)) + (set! (-> self control unknown-int21) 0) + 0 + (none) + ) + :exit (behavior () + (when (!= (-> self next-state name) 'target-wheel) + (set! (-> self control unknown-int50) 0) + (set! (-> self control unknown-dword30) (-> *display* base-frame-counter)) + ) + (target-exit) + (none) + ) + :code (behavior () + (let ((gp-0 0)) + 0 + (let ((s5-0 0) + (f30-0 1.0) + ) + (ja-channel-push! 1 (seconds 0.04)) + (ja :group! (-> self draw art-group data 69) :num! min) + (until (ja-done? 0) + (if (cpad-pressed? (-> self control unknown-cpad-info00 number) x) + (set! gp-0 (the-as int (-> *display* base-frame-counter))) + ) + (when (and (or (smack-surface? #f) (>= (-> self control unknown-float63) 0.7)) + (>= (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> self control unknown-uint20)))) + (the-as uint 3) + ) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) 1) + ) + (if (>= 6.0 (ja-aframe-num 0)) + (target-shoved + (-> *TARGET-bank* smack-surface-dist) + (-> *TARGET-bank* smack-surface-height) + (the-as process #f) + target-hit + ) + ) + (if (zero? s5-0) + (set! s5-0 (the-as int (-> *display* base-frame-counter))) + ) + ) + (if (cpad-pressed? (-> self control unknown-cpad-info00 number) square) + (-> *display* base-frame-counter) + ) + (compute-alignment! (-> self align)) + (cond + ((nonzero? s5-0) + ) + (else + (align! (-> self align) (align-opts adjust-xz-vel) (the-as float 1.0) (the-as float 1.0) f30-0) + (let ((s4-1 (new-stack-vector0))) + (vector-matrix*! s4-1 (-> self control transv) (-> self control unknown-matrix00)) + (set! (-> s4-1 y) 0.0) + (vector-matrix*! (-> self control unknown-vector120) s4-1 (-> self control unknown-matrix01)) + ) + ) + ) + (suspend) + (ja :num! (seek!)) + (set! f30-0 (* f30-0 (fmin 1.0 (-> self control unknown-float140)))) + ) + ) + (if (and (or (< (- (-> *display* base-frame-counter) (the-as time-frame gp-0)) (-> *TARGET-bank* wheel-jump-pre-window)) + (cpad-pressed? (-> self control unknown-cpad-info00 number) x) + ) + (can-jump? 'target-wheel-flip) + ) + (go target-wheel-flip (-> *TARGET-bank* wheel-flip-height) (-> *TARGET-bank* wheel-flip-dist)) + ) + ) + (set! (-> self state-hook-time) (-> *display* base-frame-counter)) + (set! (-> self state-hook) + (lambda :behavior target + () + (cond + ((>= (- (-> *display* base-frame-counter) (-> self state-hook-time)) (-> *TARGET-bank* wheel-jump-post-window)) + (set! (-> self state-hook) (the-as (function none :behavior target) nothing)) + ) + (else + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? 'target-wheel-flip) + ) + (go target-wheel-flip (-> *TARGET-bank* wheel-flip-height) (-> *TARGET-bank* wheel-flip-dist)) + ) + ) + ) + (none) + ) + ) + (go target-duck-stance) + (none) + ) + :post target-post + ) + (defstate target-wheel-flip (target) + :event target-standard-event-handler + :enter (behavior ((arg0 float) (arg1 float)) + (set! (-> self control unknown-surface00) *wheel-flip-mods*) + (none) + ) + :exit target-exit + :trans (behavior () + (if (and (or (smack-surface? #f) + (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) + ) + (!= (-> self state-time) (-> *display* base-frame-counter)) + ) + (target-shoved + (-> *TARGET-bank* smack-surface-dist) + (-> *TARGET-bank* smack-surface-height) + (the-as process #f) + target-hit + ) + ) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) + (can-feet?) + (and (ja-group? (-> self draw art-group data 38)) (= (-> self skel root-channel 0) (-> self skel channel))) + ) + (go target-attack-air #f) + ) + (none) + ) + :code (behavior ((arg0 float) (arg1 float)) + (ja-channel-push! 1 (seconds 0.04)) + (ja :group! (-> self draw art-group data 71) :num! min) + (let ((f30-0 1.0)) + (until (or (ja-max? 0) + (and (>= (ja-aframe-num 0) 4.0) (logtest? (-> self control status) (cshape-moving-flags onsurf))) + ) + (when (and (>= (ja-aframe-num 0) 3.0) (not (-> self control unknown-symbol30))) + (set! (-> self event-hook) target-dangerous-event-handler) + (target-start-attack) + (target-danger-set! 'flip #f) + ) + (compute-alignment! (-> self align)) + (if (not (ja-max? 0)) + (align! + (-> self align) + (align-opts adjust-y-vel adjust-xz-vel) + (the-as float 1.0) + (/ arg0 (-> *TARGET-bank* wheel-flip-art-height)) + (* f30-0 (/ arg1 (-> *TARGET-bank* wheel-flip-art-dist))) + ) + (align! + (-> self align) + (align-opts adjust-xz-vel) + (the-as float 1.0) + (the-as float 1.0) + (* f30-0 (/ arg1 (-> *TARGET-bank* wheel-flip-art-dist))) + ) + ) + (let ((s4-1 (new-stack-vector0))) + (vector-matrix*! s4-1 (-> self control transv) (-> self control unknown-matrix00)) + (set! (-> s4-1 y) 0.0) + (vector-matrix*! (-> self control unknown-vector120) s4-1 (-> self control unknown-matrix01)) + ) + (suspend) + (ja :num! (seek!)) + (set! f30-0 (* f30-0 (fmin 1.0 (-> self control unknown-float140)))) + ) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (while (zero? (logand (-> self control status) (cshape-moving-flags onsurf))) + (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.01)) + (when (not (ja-group? (-> self draw art-group data 38))) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! (-> self draw art-group data 38) :num! min) + ) + ) + (let ((gp-2 (new-stack-vector0)) + (f30-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + ) + 0.0 + (vector-! gp-2 (-> self control transv) (vector-float*! gp-2 (-> self control dynam gravity-normal) f30-1)) + (let* ((f1-6 (vector-length gp-2)) + (f0-21 f1-6) + (f1-7 (* 0.9 f1-6)) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f30-1) + (vector-float*! gp-2 gp-2 (/ f1-7 f0-21)) + ) + ) + ) + (suspend) + (if (ja-group? (-> self draw art-group data 38)) + (ja :num! (loop!)) + (ja :num-func num-func-identity :frame-num max) + ) + ) + (target-land-effect) + (set! (-> self state-hook-time) (-> *display* base-frame-counter)) + (set! (-> self state-hook) + (lambda :behavior target + () + (cond + ((>= (- (-> *display* base-frame-counter) (-> self state-hook-time)) (seconds 0.1)) + (set! (-> self state-hook) (the-as (function none :behavior target) nothing)) + ) + (else + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) + (go target-high-jump (-> *TARGET-bank* flip-jump-height-min) (-> *TARGET-bank* flip-jump-height-max) 'flip) + ) + ) + ) + (none) + ) + ) + (if (ja-group? (-> self draw art-group data 38)) + (go target-hit-ground #f) + (go target-stance) + ) + (none) + ) + :post target-post + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +L816: + .word 0x0 + .word 0x0 + +;------------------------------------------ +; debug segment +;------------------------------------------ + + +;------------------------------------------ +; main segment +;------------------------------------------ + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-wheel-flip) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x70, fp? 1 ra? 1 ep? 1 + ;stack_vars: 32 bytes at 16 + ;gprs: gp s5 s4 + ;fprs: f30 +;; Warnings: +;; INFO: Return type mismatch object vs none. +;; Used lq/sq + +;; a0-0: float a1-0: float s4-1: vector s6-0: target gp-2: vector f0-21: float f1-6: float f1-7: float +;; f30-0: float f30-1: float L1: - addiu v1, r0, 0 ;; [ 0] (set! v1-0 0) [] -> [v1: ] - beq r0, r0, L16 ;; [ 1] (b! #t L16 (nop!)) [] -> [] + daddiu sp, sp, -112 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s4, 48(sp) + sq s5, 64(sp) + sq gp, 80(sp) + swc1 f30, 96(sp) +B0: + or gp, a0, r0 ;; [ 0] (set! arg0 arg0) [a0: float ] -> [gp: float ] + or s5, a1, r0 ;; [ 1] (set! arg1 arg1) [a1: float ] -> [s5: float ] + lw t9, ja-channel-push!(s7);; [ 2] (set! t9-0 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [ 3] (set! a0-1 1) [] -> [a0: ] + addiu a1, r0, 12 ;; [ 4] (set! a1-1 12) [] -> [a1: ] + jalr ra, t9 ;; [ 5] (call! a0-1 a1-1) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [ 6] (set! v1-0 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 7] (set! v1-1 (l.wu (+ v1-0 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s4, r0, v1 ;; [ 8] (set! s4-0 (+ v1-1 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s4: joint-control-channel ] + lw t9, joint-control-channel-group-eval!(s7);; [ 9] (set! t9-1 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a0, s4, r0 ;; [ 10] (set! a0-2 s4-0) [s4: joint-control-channel ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 11] (set! v1-2 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 12] (set! v1-3 (l.wu (+ v1-2 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 312(v1) ;; [ 13] (set! a1-2 (l.wu (+ v1-3 312))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-identity(s7);; [ 14] (set! a2-0 num-func-identity) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 15] (call! a0-2 a1-2 a2-0) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + mtc1 f0, r0 ;; [ 16] (set! f0-0 0) [] -> [] + swc1 f0, 16(s4) ;; [ 17] (s.f! (+ s4-0 16) f0-0) [s4: joint-control-channel ] -> [] + mfc1 v1, f0 ;; [ 18] (set! v1-4 (fpr->gpr f0-0)) [] -> [v1: float ] + lui v1, L786 ;; [ 19] (set! v1-5 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f30, 0(v1) ;; [ 20] (set! f30-0 (l.f v1-5)) [v1: ] -> [] +B1: +L2: + lw t9, ja-aframe-num(s7) ;; [ 21] (set! t9-2 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 22] (set! a0-3 0) [] -> [a0: ] + jalr ra, t9 ;; [ 23] (call! a0-3) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 24] (set! f0-1 (gpr->fpr v0-2)) [v0: float ] -> [] + lui v1, L750 ;; [ 25] (set! v1-6 L750) [] -> [v1: ] + ori v1, v1, L750 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 26] (set! f1-0 (l.f v1-6)) [v1: ] -> [] + c.lt.s f0, f1 ;; [ 27] (b! (>=.s f0-1 f1-0) L3 (set! v1-7 #t)) [] -> [v1: symbol ] + bc1f L3 + daddiu v1, s7, 8 + +B2: + or v1, s7, r0 ;; [ 28] (set! v1-7 #f) [] -> [v1: '#f ] +B3: +L3: + beql s7, v1, L4 ;; [ 29] (bl! (not v1-7) L4 (no-delay!)) [v1: symbol ] -> [] +B4: + or v1, v1, r0 ;; [ 30] (set! v1-8 v1-7) [v1: symbol ] -> [v1: symbol ] + +B5: + lwu v1, 108(s6) ;; [ 31] (set! v1-9 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 2380(v1) ;; [ 32] (set! v1-10 (l.wu (+ v1-9 2380))) [v1: control-info ] -> [v1: symbol ] + beq s7, v1, L4 ;; [ 33] (b! (not v1-10) L4 (set! v1-8 #t)) [v1: symbol ] -> [v1: symbol ] + daddiu v1, s7, 8 + +B6: + or v1, s7, r0 ;; [ 34] (set! v1-8 #f) [] -> [v1: '#f ] +B7: +L4: + beq s7, v1, L5 ;; [ 35] (b! (not v1-8) L5 (set! v1-11 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B8: + lw v1, target-dangerous-event-handler(s7);; [ 36] (set! v1-12 target-dangerous-event-handler) + ;; [] -> [v1: (function process int symbol event-message-block object :behavior target) ] + sw v1, 64(s6) ;; [ 37] (s.w! (+ self 64) v1-12) + ;; [v1: (function process int symbol event-message-block object :behavior target) s6: target ] -> [] + lw t9, target-start-attack(s7);; [ 38] (set! t9-3 target-start-attack) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 39] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, target-danger-set!(s7);; [ 40] (set! t9-4 target-danger-set!) + ;; [] -> [t9: (function symbol symbol float :behavior target) ] + daddiu a0, s7, flip ;; [ 41] (set! a0-4 'flip) [] -> [a0: symbol ] + or a1, s7, r0 ;; [ 42] (set! a1-3 #f) [] -> [a1: '#f ] + jalr ra, t9 ;; [ 43] (call! a0-4 a1-3) + ;; [a0: symbol a1: '#f t9: (function symbol symbol float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 44] (set! v1-13 v0-4) [v0: float ] -> [v1: float ] +B9: +L5: + lwu a0, 128(s6) ;; [ 45] (set! a0-5 (l.wu (+ self 128))) [s6: target ] -> [a0: align-control ] + lwu v1, -4(a0) ;; [ 46] (set! v1-14 (l.wu (+ a0-5 -4))) + ;; [a0: align-control ] -> [v1: ] + lwu t9, 52(v1) ;; [ 47] (set! t9-5 (l.wu (+ v1-14 52))) + ;; [v1: ] -> [t9: ] + jalr ra, t9 ;; [ 48] (call! a0-5) + ;; [a0: align-control t9: ] -> [v0: transformq ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 49] (set! v1-15 v0-5) [v0: transformq ] -> [v1: transformq ] + lw t9, ja-max?(s7) ;; [ 50] (set! t9-6 ja-max?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 51] (set! a0-6 0) [] -> [a0: ] + jalr ra, t9 ;; [ 52] (call! a0-6) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + bne s7, v0, L6 ;; [ 53] (b! (truthy v0-6) L6 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B10: + lwu a0, 128(s6) ;; [ 54] (set! a0-7 (l.wu (+ self 128))) [s6: target ] -> [a0: align-control ] + lwu v1, -4(a0) ;; [ 55] (set! v1-16 (l.wu (+ a0-7 -4))) + ;; [a0: align-control ] -> [v1: ] + lwu t9, 56(v1) ;; [ 56] (set! t9-7 (l.wu (+ v1-16 56))) + ;; [v1: ] -> [t9: ] + addiu a1, r0, 6 ;; [ 57] (set! a1-4 6) [] -> [a1: ] + lui v1, L786 ;; [ 58] (set! v1-17 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw a2, 0(v1) ;; [ 59] (set! a2-1 (l.w v1-17)) [v1: ] -> [a2: int ] + mtc1 f0, gp ;; [ 60] (set! f0-2 (gpr->fpr arg0)) [gp: float ] -> [] + lw v1, *TARGET-bank*(s7) ;; [ 61] (set! v1-18 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f1, 132(v1) ;; [ 62] (set! f1-1 (l.f (+ v1-18 132))) [v1: target-bank ] -> [] + div.s f0, f0, f1 ;; [ 63] (set! f0-3 (/.s f0-2 f1-1)) [] -> [] + mfc1 a3, f0 ;; [ 64] (set! a3-0 (fpr->gpr f0-3)) [] -> [a3: float ] + mtc1 f0, s5 ;; [ 65] (set! f0-4 (gpr->fpr arg1)) [s5: float ] -> [] + lw v1, *TARGET-bank*(s7) ;; [ 66] (set! v1-19 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f1, 136(v1) ;; [ 67] (set! f1-2 (l.f (+ v1-19 136))) [v1: target-bank ] -> [] + div.s f0, f0, f1 ;; [ 68] (set! f0-5 (/.s f0-4 f1-2)) [] -> [] + mul.s f0, f30, f0 ;; [ 69] (set! f0-6 (*.s f30-0 f0-5)) [] -> [] + mfc1 t0, f0 ;; [ 70] (set! t0-0 (fpr->gpr f0-6)) [] -> [t0: float ] + jalr ra, t9 ;; [ 71] (call! a0-7 a1-4 a2-1 a3-0 t0-0) + ;; [a0: align-control a1: a2: int a3: float t0: float t9: ] -> [v0: trsqv ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 72] (set! v1-20 v0-7) [v0: trsqv ] -> [v1: trsqv ] + beq r0, r0, L7 ;; [ 73] (b! #t L7 (nop!)) [] -> [] + sll r0, r0, 0 + +B11: +L6: + lwu a0, 128(s6) ;; [ 74] (set! a0-8 (l.wu (+ self 128))) [s6: target ] -> [a0: align-control ] + lwu v1, -4(a0) ;; [ 75] (set! v1-21 (l.wu (+ a0-8 -4))) + ;; [a0: align-control ] -> [v1: ] + lwu t9, 56(v1) ;; [ 76] (set! t9-8 (l.wu (+ v1-21 56))) + ;; [v1: ] -> [t9: ] + addiu a1, r0, 4 ;; [ 77] (set! a1-5 4) [] -> [a1: ] + lui v1, L786 ;; [ 78] (set! v1-22 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw a2, 0(v1) ;; [ 79] (set! a2-2 (l.w v1-22)) [v1: ] -> [a2: int ] + lui v1, L786 ;; [ 80] (set! v1-23 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw a3, 0(v1) ;; [ 81] (set! a3-1 (l.w v1-23)) [v1: ] -> [a3: int ] + mtc1 f0, s5 ;; [ 82] (set! f0-7 (gpr->fpr arg1)) [s5: float ] -> [] + lw v1, *TARGET-bank*(s7) ;; [ 83] (set! v1-24 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f1, 136(v1) ;; [ 84] (set! f1-3 (l.f (+ v1-24 136))) [v1: target-bank ] -> [] + div.s f0, f0, f1 ;; [ 85] (set! f0-8 (/.s f0-7 f1-3)) [] -> [] + mul.s f0, f30, f0 ;; [ 86] (set! f0-9 (*.s f30-0 f0-8)) [] -> [] + mfc1 t0, f0 ;; [ 87] (set! t0-1 (fpr->gpr f0-9)) [] -> [t0: float ] + jalr ra, t9 ;; [ 88] (call! a0-8 a1-5 a2-2 a3-1 t0-1) + ;; [a0: align-control a1: a2: int a3: int t0: float t9: ] -> [v0: trsqv ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 89] (set! v1-25 v0-8) [v0: trsqv ] -> [v1: trsqv ] +B12: +L7: + daddiu s4, sp, 16 ;; [ 90] (set! s4-1 (+ sp-0 16)) [sp: ] -> [s4: vector ] + sq r0, 0(s4) ;; [ 91] (s.q! s4-1 0) [s4: vector ] -> [] + lw t9, vector-matrix*!(s7);; [ 92] (set! t9-9 vector-matrix*!) [] -> [t9: (function vector vector matrix vector) ] + or a0, s4, r0 ;; [ 93] (set! a0-9 s4-1) [s4: vector ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 94] (set! v1-26 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a1, v1, 60 ;; [ 95] (set! a1-6 (+ v1-26 60)) [v1: control-info ] -> [a1: vector ] + lwu v1, 108(s6) ;; [ 96] (set! v1-27 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a2, v1, 924 ;; [ 97] (set! a2-3 (+ v1-27 924)) [v1: control-info ] -> [a2: matrix ] + jalr ra, t9 ;; [ 98] (call! a0-9 a1-6 a2-3) + ;; [a0: vector a1: vector a2: matrix t9: (function vector vector matrix vector) ] -> [v0: vector ] + sll v0, ra, 0 + + mtc1 f0, r0 ;; [ 99] (set! f0-10 0) [] -> [] + swc1 f0, 4(s4) ;; [100] (s.f! (+ s4-1 4) f0-10) [s4: vector ] -> [] + lw t9, vector-matrix*!(s7);; [101] (set! t9-10 vector-matrix*!) [] -> [t9: (function vector vector matrix vector) ] + lwu v1, 108(s6) ;; [102] (set! v1-28 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a0, v1, 18924 ;; [103] (set! a0-10 (+ v1-28 #x49ec)) [v1: control-info ] -> [a0: vector ] + lwu v1, 108(s6) ;; [104] (set! v1-29 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a2, v1, 988 ;; [105] (set! a2-4 (+ v1-29 988)) [v1: control-info ] -> [a2: matrix ] + or a1, s4, r0 ;; [106] (set! a1-7 s4-1) [s4: vector ] -> [a1: vector ] + jalr ra, t9 ;; [107] (call! a0-10 a1-7 a2-4) + ;; [a0: vector a1: vector a2: matrix t9: (function vector vector matrix vector) ] -> [v0: vector ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [108] (set! v1-30 v0-10) [v0: vector ] -> [v1: vector ] + lwu s6, 44(s6) ;; [109] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [110] (set! v1-31 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [111] (set! v1-32 (l.wu (+ v1-31 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [112] (set! a0-11 (+ v1-32 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [113] (set! v1-33 (l.wu (+ a0-11 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [114] (set! v1-34 (l.wu (+ v1-33 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [115] (set! v1-35 (l.h (+ v1-34 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [116] (set! v1-36 (+ v1-35 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [117] (set! f0-11 (gpr->fpr v1-36)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [118] (set! f0-12 (i2f f0-11)) [] -> [] + swc1 f0, 24(a0) ;; [119] (s.f! (+ a0-11 24) f0-12) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [120] (set! v1-37 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [121] (set! f0-13 (l.f v1-37)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [122] (s.f! (+ a0-11 28) f0-13) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [123] (set! t9-11 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [124] (set! a1-8 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [125] (set! a2-5 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [126] (call! a0-11 a1-8 a2-5) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [127] (set! v1-38 v0-11) [v0: int ] -> [v1: int ] + lui v1, L786 ;; [128] (set! v1-39 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [129] (set! f0-14 (l.f v1-39)) [v1: ] -> [] + lwu v1, 108(s6) ;; [130] (set! v1-40 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f1, 18940(v1) ;; [131] (set! f1-4 (l.f (+ v1-40 #x49fc))) [v1: control-info ] -> [] + min.s f0, f0, f1 ;; [132] (set! f0-15 (min.s f0-14 f1-4)) [] -> [] + mul.s f30, f30, f0 ;; [133] (set! f30-0 (*.s f30-0 f0-15)) [] -> [] + lw t9, ja-max?(s7) ;; [134] (set! t9-12 ja-max?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [135] (set! a0-12 0) [] -> [a0: ] + jalr ra, t9 ;; [136] (call! a0-12) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + bnel s7, v0, L9 ;; [137] (bl! (truthy v0-12) L9 (no-delay!)) [v0: symbol ] -> [] +B13: + or v1, v0, r0 ;; [138] (set! v1-41 v0-12) [v0: symbol ] -> [v1: symbol ] + +B14: + lw t9, ja-aframe-num(s7) ;; [139] (set! t9-13 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [140] (set! a0-13 0) [] -> [a0: ] + jalr ra, t9 ;; [141] (call! a0-13) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [142] (set! f0-16 (gpr->fpr v0-13)) [v0: float ] -> [] + lui v1, L749 ;; [143] (set! v1-42 L749) [] -> [v1: ] + ori v1, v1, L749 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [144] (set! f1-5 (l.f v1-42)) [v1: ] -> [] + c.lt.s f0, f1 ;; [145] (b! (>=.s f0-16 f1-5) L8 (set! v1-43 #t)) [] -> [v1: symbol ] + bc1f L8 + daddiu v1, s7, 8 + +B15: + or v1, s7, r0 ;; [146] (set! v1-43 #f) [] -> [v1: '#f ] +B16: +L8: + beql s7, v1, L9 ;; [147] (bl! (not v1-43) L9 (no-delay!)) [v1: symbol ] -> [] +B17: + or v1, v1, r0 ;; [148] (set! v1-41 v1-43) [v1: symbol ] -> [v1: symbol ] + +B18: + daddiu v1, s7, 8 ;; [149] (set! v1-44 #t) [] -> [v1: symbol ] + lwu a0, 108(s6) ;; [150] (set! a0-14 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 268(a0) ;; [151] (set! a0-15 (l.d (+ a0-14 268))) [a0: control-info ] -> [a0: cshape-moving-flags ] + andi a0, a0, 1 ;; [152] (set! a0-16 (logand a0-15 1)) + ;; [a0: cshape-moving-flags ] -> [a0: cshape-moving-flags ] + movz v1, s7, a0 ;; [153] (cmove-#f-zero v1-41 a0-16 v1-44) + ;; [v1: symbol a0: cshape-moving-flags ] -> [v1: symbol ] +B19: +L9: + beq s7, v1, L2 ;; [154] (b! (not v1-41) L2 (nop!)) [v1: symbol ] -> [] + sll r0, r0, 0 + +B20: + or v1, s7, r0 ;; [155] (set! v1-45 #f) [] -> [v1: '#f ] + lw v1, *display*(s7) ;; [156] (set! v1-46 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [157] (set! v1-47 (l.d (+ v1-46 780))) [v1: display ] -> [v1: time-frame ] + sd v1, 164(s6) ;; [158] (s.d! (+ self 164) v1-47) [v1: time-frame s6: target ] -> [] + beq r0, r0, L15 ;; [159] (b! #t L15 (nop!)) [] -> [] + sll r0, r0, 0 + +B21: +L10: + lw v1, *display*(s7) ;; [160] (set! v1-48 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [161] (set! v1-49 (l.d (+ v1-48 780))) [v1: display ] -> [v1: time-frame ] + ld a0, 164(s6) ;; [162] (set! a0-17 (l.d (+ self 164))) [s6: target ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [163] (set! v1-50 (- v1-49 a0-17)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + slti v1, v1, 3 ;; [164] (b! (<.si v1-50 3) L12 (set! v1-51 #f)) [v1: time-frame ] -> [v1: '#f ] + bne v1, r0, L12 + or v1, s7, r0 + +B22: + lwu v1, 120(s6) ;; [165] (set! v1-52 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [166] (set! v1-53 (l.w (+ v1-52 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [167] (b! (<=0.si v1-53) L11 (set! v1-54 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L11 + or v1, s7, r0 + +B23: + lwu v1, 120(s6) ;; [168] (set! v1-55 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [169] (set! v1-56 (l.wu (+ v1-55 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [170] (set! v1-54 (l.wu (+ v1-56 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B24: +L11: + lwu a0, 116(s6) ;; [171] (set! a0-18 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [172] (set! a0-19 (l.wu (+ a0-18 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 180(a0) ;; [173] (set! a0-20 (l.wu (+ a0-19 180))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [174] (set! a0-21 (= v1-54 a0-20)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + bne s7, a0, L12 ;; [175] (b! (truthy a0-21) L12 (set! v1-57 #f)) [a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B25: + lw t9, ja-channel-push!(s7);; [176] (set! t9-14 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [177] (set! a0-22 1) [] -> [a0: ] + addiu a1, r0, 30 ;; [178] (set! a1-9 30) [] -> [a1: ] + jalr ra, t9 ;; [179] (call! a0-22 a1-9) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [180] (set! v1-58 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [181] (set! v1-59 (l.wu (+ v1-58 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu gp, r0, v1 ;; [182] (set! gp-1 (+ v1-59 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lw t9, joint-control-channel-group-eval!(s7);; [183] (set! t9-15 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a0, gp, r0 ;; [184] (set! a0-23 gp-1) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [185] (set! v1-60 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [186] (set! v1-61 (l.wu (+ v1-60 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 180(v1) ;; [187] (set! a1-10 (l.wu (+ v1-61 180))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-identity(s7);; [188] (set! a2-6 num-func-identity) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [189] (call! a0-23 a1-10 a2-6) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + mtc1 f0, r0 ;; [190] (set! f0-17 0) [] -> [] + swc1 f0, 16(gp) ;; [191] (s.f! (+ gp-1 16) f0-17) [gp: joint-control-channel ] -> [] + mfc1 v1, f0 ;; [192] (set! v1-62 (fpr->gpr f0-17)) [] -> [v1: float ] +B26: +L12: + daddiu gp, sp, 32 ;; [193] (set! gp-2 (+ sp-0 32)) [sp: ] -> [gp: vector ] + sq r0, 0(gp) ;; [194] (s.q! gp-2 0) [gp: vector ] -> [] + lwu v1, 108(s6) ;; [195] (set! v1-63 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [196] (set! v1-64 (l.wu (+ v1-63 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [197] (set! a0-24 (+ v1-64 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [198] (set! v1-65 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [199] (set! v1-66 (+ v1-65 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [200] (set! f0-18 (vec3dot a0-24 v1-66)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [201] (set! v1-67 (fpr->gpr f0-18)) [] -> [v1: float ] + mtc1 f30, v1 ;; [202] (set! f30-1 (gpr->fpr v1-67)) [v1: float ] -> [] + mtc1 f0, r0 ;; [203] (set! f0-19 0) [] -> [] + or v1, gp, r0 ;; [204] (set! v1-68 gp-2) [gp: vector ] -> [v1: vector ] + lwu a0, 108(s6) ;; [205] (set! a0-25 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + daddiu a0, a0, 60 ;; [206] (set! a0-26 (+ a0-25 60)) [a0: control-info ] -> [a0: vector ] + or a1, gp, r0 ;; [207] (set! a1-11 gp-2) [gp: vector ] -> [a1: vector ] + lwu a2, 108(s6) ;; [208] (set! a2-7 (l.wu (+ self 108))) [s6: target ] -> [a2: control-info ] + lwu a2, 432(a2) ;; [209] (set! a2-8 (l.wu (+ a2-7 432))) [a2: control-info ] -> [a2: dynamics ] + daddiu a2, a2, 28 ;; [210] (set! a2-9 (+ a2-8 28)) [a2: dynamics ] -> [a2: vector ] + mov.s f0, f30 ;; [211] (set! f0-20 f30-1) [] -> [] + lqc2 vf1, 0(a2) ;; [212] (set! a1-12 (vector-float*!2 a1-11 a2-9 f0-20)) + ;; [a1: vector a2: vector ] -> [a1: vector ] + mfc1 a2, f0 + qmtc2.i vf2, a2 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a1) + lqc2 vf4, 0(a0) ;; [213] (set! v1-69 (vector-!2 v1-68 a0-26 a1-12)) + ;; [v1: vector a0: vector a1: vector ] -> [v1: vector ] + lqc2 vf5, 0(a1) + vmove.w vf6, vf0 + vsub.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) + lw t9, vector-length(s7) ;; [214] (set! t9-16 vector-length) [] -> [t9: (function vector float) ] + or a0, gp, r0 ;; [215] (set! a0-27 gp-2) [gp: vector ] -> [a0: vector ] + jalr ra, t9 ;; [216] (call! a0-27) [a0: vector t9: (function vector float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f1, v0 ;; [217] (set! f1-6 (gpr->fpr v0-16)) [v0: float ] -> [] + mov.s f0, f1 ;; [218] (set! f0-21 f1-6) [] -> [] + lui v1, L772 ;; [219] (set! v1-70 L772) [] -> [v1: ] + ori v1, v1, L772 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [220] (set! f2-0 (l.f v1-70)) [v1: ] -> [] + mul.s f1, f2, f1 ;; [221] (set! f1-7 (*.s f2-0 f1-6)) [] -> [] + lwu v1, 108(s6) ;; [222] (set! v1-71 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [223] (set! v1-72 (+ v1-71 60)) [v1: control-info ] -> [v1: vector ] + lwu a0, 108(s6) ;; [224] (set! a0-28 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + daddiu a0, a0, 60 ;; [225] (set! a0-29 (+ a0-28 60)) [a0: control-info ] -> [a0: vector ] + lwu a1, 108(s6) ;; [226] (set! a1-13 (l.wu (+ self 108))) [s6: target ] -> [a1: control-info ] + lwu a1, 432(a1) ;; [227] (set! a1-14 (l.wu (+ a1-13 432))) [a1: control-info ] -> [a1: dynamics ] + daddiu a1, a1, 28 ;; [228] (set! a1-15 (+ a1-14 28)) [a1: dynamics ] -> [a1: vector ] + lqc2 vf1, 0(a1) ;; [229] (set! a0-30 (vector-float*!2 a0-29 a1-15 f30-1)) + ;; [a0: vector a1: vector ] -> [a0: vector ] + mfc1 a1, f30 + qmtc2.i vf2, a1 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a0) + or a1, gp, r0 ;; [230] (set! a1-16 gp-2) [gp: vector ] -> [a1: vector ] + div.s f0, f1, f0 ;; [231] (set! f0-22 (/.s f1-7 f0-21)) [] -> [] + lqc2 vf1, 0(gp) ;; [232] (set! a1-17 (vector-float*!2 a1-16 gp-2 f0-22)) + ;; [a1: vector gp: vector ] -> [a1: vector ] + mfc1 a2, f0 + qmtc2.i vf2, a2 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a1) + vmove.w vf6, vf0 ;; [233] (set! v1-73 (vector+!2 v1-72 a0-30 a1-17)) + ;; [v1: vector a0: vector a1: vector ] -> [v1: vector ] + lqc2 vf4, 0(a0) + lqc2 vf5, 0(a1) + vadd.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) + lwu s6, 44(s6) ;; [234] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [235] (set! v1-74 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [236] (set! v1-75 (l.w (+ v1-74 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [237] (b! (<=0.si v1-75) L13 (set! v1-76 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L13 + or v1, s7, r0 + +B27: + lwu v1, 120(s6) ;; [238] (set! v1-77 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [239] (set! v1-78 (l.wu (+ v1-77 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [240] (set! v1-76 (l.wu (+ v1-78 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B28: +L13: + lwu a0, 116(s6) ;; [241] (set! a0-31 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [242] (set! a0-32 (l.wu (+ a0-31 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 180(a0) ;; [243] (set! a0-33 (l.wu (+ a0-32 180))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [244] (set! a0-34 (= v1-76 a0-33)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L14 ;; [245] (b! (not a0-34) L14 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B29: + lwu v1, 120(s6) ;; [246] (set! v1-79 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [247] (set! v1-80 (l.wu (+ v1-79 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [248] (set! a0-35 (+ v1-80 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lui v1, L786 ;; [249] (set! v1-81 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [250] (set! f0-23 (l.f v1-81)) [v1: ] -> [] + swc1 f0, 24(a0) ;; [251] (s.f! (+ a0-35 24) f0-23) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [252] (set! t9-17 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [253] (set! a1-18 #f) [] -> [a1: '#f ] + lw a2, num-func-loop!(s7) ;; [254] (set! a2-10 num-func-loop!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [255] (call! a0-35 a1-18 a2-10) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [256] (set! v1-82 v0-17) [v0: int ] -> [v1: int ] + beq r0, r0, L15 ;; [257] (b! #t L15 (nop!)) [] -> [] + sll r0, r0, 0 + +B30: +L14: + lwu v1, 120(s6) ;; [258] (set! v1-83 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [259] (set! v1-84 (l.wu (+ v1-83 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu v1, r0, v1 ;; [260] (set! v1-85 (+ v1-84 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + lw a0, num-func-identity(s7);; [261] (set! a0-36 num-func-identity) + ;; [] -> [a0: (function joint-control-channel float float float) ] + sw a0, 20(v1) ;; [262] (s.w! (+ v1-85 20) a0-36) + ;; [v1: joint-control-channel a0: (function joint-control-channel float float float) ] -> [] + lwu a0, 12(v1) ;; [263] (set! a0-37 (l.wu (+ v1-85 12))) + ;; [v1: joint-control-channel ] -> [a0: art-joint-anim ] + lwu a0, 44(a0) ;; [264] (set! a0-38 (l.wu (+ a0-37 44))) + ;; [a0: art-joint-anim ] -> [a0: joint-anim-compressed ] + lh a0, 6(a0) ;; [265] (set! a0-39 (l.h (+ a0-38 6))) [a0: joint-anim-compressed ] -> [a0: int ] + daddiu a0, a0, -1 ;; [266] (set! a0-40 (+ a0-39 -1)) [a0: int ] -> [a0: ] + mtc1 f0, a0 ;; [267] (set! f0-24 (gpr->fpr a0-40)) [a0: ] -> [] + cvt.s.w f0, f0 ;; [268] (set! f0-25 (i2f f0-24)) [] -> [] + swc1 f0, 16(v1) ;; [269] (s.f! (+ v1-85 16) f0-25) [v1: joint-control-channel ] -> [] + mfc1 v1, f0 ;; [270] (set! v1-86 (fpr->gpr f0-25)) [] -> [v1: float ] +B31: +L15: + lwu v1, 108(s6) ;; [271] (set! v1-87 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld v1, 268(v1) ;; [272] (set! v1-88 (l.d (+ v1-87 268))) [v1: control-info ] -> [v1: cshape-moving-flags ] + andi v1, v1, 1 ;; [273] (set! v1-89 (logand v1-88 1)) + ;; [v1: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + beq v1, r0, L10 ;; [274] (b! (zero? v1-89) L10 (nop!)) [v1: cshape-moving-flags ] -> [] + sll r0, r0, 0 + +B32: + or v1, s7, r0 ;; [275] (set! v1-90 #f) [] -> [v1: '#f ] + lw t9, target-land-effect(s7);; [276] (set! t9-18 target-land-effect) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [277] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw v1, *display*(s7) ;; [278] (set! v1-91 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [279] (set! v1-92 (l.d (+ v1-91 780))) [v1: display ] -> [v1: time-frame ] + sd v1, 188(s6) ;; [280] (s.d! (+ self 188) v1-92) [v1: time-frame s6: target ] -> [] + lui v1, L19 ;; [281] (set! v1-93 L19) [] -> [v1: (function none :behavior target) ] + ori v1, v1, L19 + daddu v1, v1, fp + sw v1, 196(s6) ;; [282] (s.w! (+ self 196) v1-93) [v1: (function none :behavior target) s6: target ] -> [] + lwu v1, 120(s6) ;; [283] (set! v1-94 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [284] (set! v1-95 (l.w (+ v1-94 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [285] (b! (<=0.si v1-95) L16 (set! v1-96 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L16 + or v1, s7, r0 + +B33: + lwu v1, 120(s6) ;; [286] (set! v1-97 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [287] (set! v1-98 (l.wu (+ v1-97 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [288] (set! v1-96 (l.wu (+ v1-98 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B34: +L16: + lwu a0, 116(s6) ;; [289] (set! a0-41 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [290] (set! a0-42 (l.wu (+ a0-41 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 180(a0) ;; [291] (set! a0-43 (l.wu (+ a0-42 180))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [292] (set! a0-44 (= v1-96 a0-43)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L17 ;; [293] (b! (not a0-44) L17 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B35: + lw t9, enter-state(s7) ;; [294] (set! t9-19 enter-state) [] -> [t9: ] + or a0, s7, r0 ;; [295] (set! a0-45 #f) [] -> [a0: '#f ] + lw v1, target-hit-ground(s7);; [296] (set! v1-99 target-hit-ground) [] -> [v1: (state symbol target) ] + sw v1, 72(s6) ;; [297] (s.w! (+ self 72) v1-99) [v1: (state symbol target) s6: target ] -> [] + jalr ra, t9 ;; [298] (call! a0-45) [a0: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + beq r0, r0, L18 ;; [299] (b! #t L18 (nop!)) [] -> [] + sll r0, r0, 0 + +B36: +L17: + lw t9, enter-state(s7) ;; [300] (set! t9-20 enter-state) [] -> [t9: ] + lw v1, target-stance(s7) ;; [301] (set! v1-100 target-stance) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [302] (s.w! (+ self 72) v1-100) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [303] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + +B37: +L18: + ld ra, 0(sp) + ld fp, 8(sp) + lwc1 f30, 96(sp) + lq gp, 80(sp) + lq s5, 64(sp) + lq s4, 48(sp) + jr ra + daddiu sp, sp, 112 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-wheel-flip) + ((arg0 float) (arg1 float)) + (ja-channel-push! 1 (seconds 0.04)) + (ja :group! (-> self draw art-group data 71) :num! min) + (let ((f30-0 1.0)) + (until (or (ja-max? 0) + (and (>= (ja-aframe-num 0) 4.0) (logtest? (-> self control status) (cshape-moving-flags onsurf))) + ) + (when (and (>= (ja-aframe-num 0) 3.0) (not (-> self control unknown-symbol30))) + (set! (-> self event-hook) target-dangerous-event-handler) + (target-start-attack) + (target-danger-set! 'flip #f) + ) + (compute-alignment! (-> self align)) + (if (not (ja-max? 0)) + (align! + (-> self align) + (align-opts adjust-y-vel adjust-xz-vel) + (the-as float 1.0) + (/ arg0 (-> *TARGET-bank* wheel-flip-art-height)) + (* f30-0 (/ arg1 (-> *TARGET-bank* wheel-flip-art-dist))) + ) + (align! + (-> self align) + (align-opts adjust-xz-vel) + (the-as float 1.0) + (the-as float 1.0) + (* f30-0 (/ arg1 (-> *TARGET-bank* wheel-flip-art-dist))) + ) + ) + (let ((s4-1 (new-stack-vector0))) + (vector-matrix*! s4-1 (-> self control transv) (-> self control unknown-matrix00)) + (set! (-> s4-1 y) 0.0) + (vector-matrix*! (-> self control unknown-vector120) s4-1 (-> self control unknown-matrix01)) + ) + (suspend) + (ja :num! (seek!)) + (set! f30-0 (* f30-0 (fmin 1.0 (-> self control unknown-float140)))) + ) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (while (zero? (logand (-> self control status) (cshape-moving-flags onsurf))) + (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.01)) + (when (not (ja-group? (-> self draw art-group data 38))) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! (-> self draw art-group data 38) :num! min) + ) + ) + (let ((gp-2 (new-stack-vector0)) + (f30-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + ) + 0.0 + (vector-! gp-2 (-> self control transv) (vector-float*! gp-2 (-> self control dynam gravity-normal) f30-1)) + (let* ((f1-6 (vector-length gp-2)) + (f0-21 f1-6) + (f1-7 (* 0.9 f1-6)) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f30-1) + (vector-float*! gp-2 gp-2 (/ f1-7 f0-21)) + ) + ) + ) + (suspend) + (if (ja-group? (-> self draw art-group data 38)) + (ja :num! (loop!)) + (ja :num-func num-func-identity :frame-num max) + ) + ) + (target-land-effect) + (set! (-> self state-hook-time) (-> *display* base-frame-counter)) + (set! (-> self state-hook) + (lambda :behavior target + () + (cond + ((>= (- (-> *display* base-frame-counter) (-> self state-hook-time)) (seconds 0.1)) + (set! (-> self state-hook) (the-as (function none :behavior target) nothing)) + ) + (else + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) + (go target-high-jump (-> *TARGET-bank* flip-jump-height-min) (-> *TARGET-bank* flip-jump-height-max) 'flip) + ) + ) + ) + (none) + ) + ) + (if (ja-group? (-> self draw art-group data 38)) + (go target-hit-ground #f) + (go target-stance) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (anon-function 1 target) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; Warnings: +;; INFO: Return type mismatch object vs none. + +;; s6-0: target +L19: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lw v1, *display*(s7) ;; [ 0] (set! v1-0 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 1] (set! v1-1 (l.d (+ v1-0 780))) [v1: display ] -> [v1: time-frame ] + ld a0, 188(s6) ;; [ 2] (set! a0-0 (l.d (+ self 188))) [s6: target ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [ 3] (set! v1-2 (- v1-1 a0-0)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + slti v1, v1, 30 ;; [ 4] (b! (<.si v1-2 30) L20 (nop!)) [v1: time-frame ] -> [] + bne v1, r0, L20 sll r0, r0, 0 B1: -L2: - dsll t0, v1, 5 ;; [ 2] (set! t0-0 (sll v1-0 5)) [v1: int ] -> [t0: ] - daddu t0, a2, t0 ;; [ 3] (set! t0-1 (+ arg2 t0-0)) - ;; [a2: (inline-array air-box) t0: ] -> [t0: air-box ] - lwc1 f0, 4(t0) ;; [ 4] (set! f0-0 (l.f (+ t0-1 4))) [t0: air-box ] -> [] - lwc1 f1, 4(a0) ;; [ 5] (set! f1-0 (l.f (+ arg0 4))) [a0: vector ] -> [] - c.lt.s f0, f1 ;; [ 6] (b! (<.s f0-0 f1-0) L3 (set! t1-0 #t)) [] -> [t1: symbol ] - bc1t L3 - daddiu t1, s7, 8 + lw v0, nothing(s7) ;; [ 5] (set! v0-0 nothing) [] -> [v0: (function none) ] + sw v0, 196(s6) ;; [ 6] (s.w! (+ self 196) v0-0) [v0: (function none) s6: target ] -> [] + beq r0, r0, L22 ;; [ 7] (b! #t L22 (nop!)) [] -> [] + sll r0, r0, 0 B2: - or t1, s7, r0 ;; [ 7] (set! t1-0 #f) [] -> [t1: '#f ] +L20: + lwu v1, 108(s6) ;; [ 8] (set! v1-3 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 9] (set! v1-4 (l.wu (+ v1-3 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 10] (set! v1-5 (l.w (+ v1-4 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 11] (set! v1-6 (sll v1-5 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 12] (set! a0-1 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 13] (set! v1-7 (+ v1-6 a0-1)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 14] (set! v1-8 (l.wu (+ v1-7 4))) [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 15] (set! v1-9 (l.wu (+ v1-8 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 16] (set! a0-2 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 17] (set! a0-3 (l.wu (+ a0-2 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 18] (set! a0-4 (l.w (+ a0-3 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 19] (set! a0-5 (sll a0-4 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 20] (set! a1-0 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 21] (set! a0-6 (+ a0-5 a1-0)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 22] (set! a0-7 (l.wu (+ a0-6 4))) [a0: ] -> [a0: cpad-info ] + lwu a0, 60(a0) ;; [ 23] (set! a0-8 (l.wu (+ a0-7 60))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 24] (set! v1-10 (logior v1-9 a0-8)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 25] (set! a0-9 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 26] (set! a0-10 (l.wu (+ a0-9 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 27] (set! a0-11 (l.w (+ a0-10 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 28] (set! a0-12 (sll a0-11 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 29] (set! a1-1 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 30] (set! a0-13 (+ a0-12 a1-1)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 31] (set! a0-14 (l.wu (+ a0-13 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 64(a0) ;; [ 32] (set! a0-15 (l.wu (+ a0-14 64))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 33] (set! v1-11 (logior v1-10 a0-15)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + andi v1, v1, 16384 ;; [ 34] (set! v1-12 (logand v1-11 #x4000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L21 ;; [ 35] (bl! (zero? v1-12) L21 (no-delay!)) [v1: pad-buttons ] -> [] B3: -L3: - beql s7, t1, L4 ;; [ 8] (bl! (not t1-0) L4 (no-delay!)) [t1: symbol ] -> [] -B4: - or t1, t1, r0 ;; [ 9] (set! t1-1 t1-0) [t1: symbol ] -> [t1: symbol ] + or v1, s7, r0 ;; [ 36] (set! v1-13 #f) [] -> [v1: '#f ] +B4: + lw t9, can-jump?(s7) ;; [ 37] (set! t9-0 can-jump?) [] -> [t9: (function symbol symbol :behavior target) ] + or a0, s7, r0 ;; [ 38] (set! a0-16 #f) [] -> [a0: '#f ] + jalr ra, t9 ;; [ 39] (call! a0-16) + ;; [a0: '#f t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 40] (set! v1-13 v0-1) [v0: symbol ] -> [v1: symbol ] B5: - lwc1 f1, 4(a1) ;; [ 10] (set! f1-1 (l.f (+ arg1 4))) [a1: vector ] -> [] - c.lt.s f0, f1 ;; [ 11] (b! (<.s f0-0 f1-1) L4 (set! t1-1 #t)) [] -> [t1: symbol ] - bc1t L4 - daddiu t1, s7, 8 +L21: + beq s7, v1, L22 ;; [ 41] (b! (not v1-13) L22 (set! v0-2 #f)) [v1: symbol ] -> [v0: '#f ] + or v0, s7, r0 B6: - or t1, s7, r0 ;; [ 12] (set! t1-1 #f) [] -> [t1: '#f ] + lw t9, enter-state(s7) ;; [ 42] (set! t9-1 enter-state) [] -> [t9: ] + lw v1, *TARGET-bank*(s7) ;; [ 43] (set! v1-14 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 20(v1) ;; [ 44] (set! f0-0 (l.f (+ v1-14 20))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [ 45] (set! a0-17 (fpr->gpr f0-0)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [ 46] (set! v1-15 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 24(v1) ;; [ 47] (set! f0-1 (l.f (+ v1-15 24))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [ 48] (set! a1-2 (fpr->gpr f0-1)) [] -> [a1: meters ] + daddiu a2, s7, flip ;; [ 49] (set! a2-0 'flip) [] -> [a2: symbol ] + lw v1, target-high-jump(s7);; [ 50] (set! v1-16 target-high-jump) [] -> [v1: (state float float basic target) ] + sw v1, 72(s6) ;; [ 51] (s.w! (+ self 72) v1-16) [v1: (state float float basic target) s6: target ] -> [] + jalr ra, t9 ;; [ 52] (call! a0-17 a1-2 a2-0) + ;; [a0: meters a1: meters a2: symbol t9: ] -> [v0: object ] + sll v0, ra, 0 + B7: -L4: - beq s7, t1, L15 ;; [ 13] (b! (not t1-1) L15 (set! t1-2 #f)) [t1: symbol ] -> [t1: '#f ] - or t1, s7, r0 +L22: + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(defun-anon + (anon-function 1 target) + () + (cond + ((>= (- (-> *display* base-frame-counter) (-> self state-hook-time)) (seconds 0.1)) + (set! (-> self state-hook) (the-as (function none :behavior target) nothing)) + ) + (else + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) + (go target-high-jump (-> *TARGET-bank* flip-jump-height-min) (-> *TARGET-bank* flip-jump-height-max) 'flip) + ) + ) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (trans target-wheel-flip) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; Warnings: +;; INFO: Return type mismatch object vs none. + +;; s6-0: target +L23: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lw t9, smack-surface?(s7) ;; [ 0] (set! t9-0 smack-surface?) [] -> [t9: (function symbol symbol :behavior target) ] + or a0, s7, r0 ;; [ 1] (set! a0-0 #f) [] -> [a0: '#f ] + jalr ra, t9 ;; [ 2] (call! a0-0) + ;; [a0: '#f t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + bnel s7, v0, L24 ;; [ 3] (bl! (truthy v0-0) L24 (no-delay!)) [v0: symbol ] -> [] +B1: + or v1, v0, r0 ;; [ 4] (set! v1-0 v0-0) [v0: symbol ] -> [v1: symbol ] + +B2: + lw t9, target-move-dist(s7);; [ 5] (set! t9-1 target-move-dist) + ;; [] -> [t9: (function time-frame float :behavior target) ] + lw v1, *TARGET-bank*(s7) ;; [ 6] (set! v1-1 *TARGET-bank*) [] -> [v1: target-bank ] + ld a0, 556(v1) ;; [ 7] (set! a0-1 (l.d (+ v1-1 556))) [v1: target-bank ] -> [a0: seconds ] + jalr ra, t9 ;; [ 8] (call! a0-1) + ;; [a0: seconds t9: (function time-frame float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 9] (set! f0-0 (gpr->fpr v0-1)) [v0: float ] -> [] + lw v1, *TARGET-bank*(s7) ;; [ 10] (set! v1-2 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f1, 572(v1) ;; [ 11] (set! f1-0 (l.f (+ v1-2 572))) [v1: target-bank ] -> [] + c.lt.s f0, f1 ;; [ 12] (b! (<.s f0-0 f1-0) L24 (set! v1-0 #t)) [] -> [v1: symbol ] + bc1t L24 + daddiu v1, s7, 8 + +B3: + or v1, s7, r0 ;; [ 13] (set! v1-0 #f) [] -> [v1: '#f ] +B4: +L24: + beql s7, v1, L25 ;; [ 14] (bl! (not v1-0) L25 (no-delay!)) [v1: symbol ] -> [] +B5: + or v1, v1, r0 ;; [ 15] (set! v1-3 v1-0) [v1: symbol ] -> [v1: symbol ] + +B6: + ld v1, 164(s6) ;; [ 16] (set! v1-4 (l.d (+ self 164))) [s6: target ] -> [v1: time-frame ] + lw a0, *display*(s7) ;; [ 17] (set! a0-2 *display*) [] -> [a0: display ] + ld a0, 780(a0) ;; [ 18] (set! a0-3 (l.d (+ a0-2 780))) [a0: display ] -> [a0: time-frame ] + dsubu a0, v1, a0 ;; [ 19] (set! v1-3 (!= v1-4 a0-3)) [v1: time-frame a0: time-frame ] -> [v1: symbol ] + daddiu v1, s7, 8 + movz v1, s7, a0 +B7: +L25: + beq s7, v1, L26 ;; [ 20] (b! (not v1-3) L26 (set! v1-5 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 B8: - lwc1 f0, 0(a0) ;; [ 14] (set! f0-1 (l.f arg0)) [a0: vector ] -> [] - lwc1 f1, 0(t0) ;; [ 15] (set! f1-2 (l.f t0-1)) [t0: air-box ] -> [] - sub.s f2, f0, f1 ;; [ 16] (set! f2-0 (-.s f0-1 f1-2)) [] -> [] - lwc1 f0, 8(a0) ;; [ 17] (set! f0-2 (l.f (+ arg0 8))) [a0: vector ] -> [] - lwc1 f1, 8(t0) ;; [ 18] (set! f1-3 (l.f (+ t0-1 8))) [t0: air-box ] -> [] - sub.s f4, f0, f1 ;; [ 19] (set! f4-0 (-.s f0-2 f1-3)) [] -> [] - lwc1 f0, 0(a1) ;; [ 20] (set! f0-3 (l.f arg1)) [a1: vector ] -> [] - lwc1 f1, 0(t0) ;; [ 21] (set! f1-4 (l.f t0-1)) [t0: air-box ] -> [] - sub.s f0, f0, f1 ;; [ 22] (set! f0-4 (-.s f0-3 f1-4)) [] -> [] - lwc1 f1, 8(a1) ;; [ 23] (set! f1-5 (l.f (+ arg1 8))) [a1: vector ] -> [] - lwc1 f3, 8(t0) ;; [ 24] (set! f3-0 (l.f (+ t0-1 8))) [t0: air-box ] -> [] - sub.s f1, f1, f3 ;; [ 25] (set! f1-6 (-.s f1-5 f3-0)) [] -> [] - or t2, t0, r0 ;; [ 26] (set! t2-0 t0-1) [t0: air-box ] -> [t2: air-box ] - or t1, s7, r0 ;; [ 27] (set! t1-3 #f) [] -> [t1: '#f ] - lwc1 f3, 12(t2) ;; [ 28] (set! f3-1 (l.f (+ t2-0 12))) [t2: air-box ] -> [] - mul.s f3, f2, f3 ;; [ 29] (set! f3-2 (*.s f2-0 f3-1)) [] -> [] - lwc1 f5, 28(t2) ;; [ 30] (set! f5-0 (l.f (+ t2-0 28))) [t2: air-box ] -> [] - mul.s f5, f4, f5 ;; [ 31] (set! f5-1 (*.s f4-0 f5-0)) [] -> [] - add.s f3, f3, f5 ;; [ 32] (set! f3-3 (+.s f3-2 f5-1)) [] -> [] - lwc1 f5, 12(t2) ;; [ 33] (set! f5-2 (l.f (+ t2-0 12))) [t2: air-box ] -> [] - mul.s f4, f4, f5 ;; [ 34] (set! f4-1 (*.s f4-0 f5-2)) [] -> [] - lwc1 f5, 28(t2) ;; [ 35] (set! f5-3 (l.f (+ t2-0 28))) [t2: air-box ] -> [] - mul.s f2, f2, f5 ;; [ 36] (set! f2-1 (*.s f2-0 f5-3)) [] -> [] - sub.s f2, f4, f2 ;; [ 37] (set! f2-2 (-.s f4-1 f2-1)) [] -> [] - mtc1 f4, r0 ;; [ 38] (set! f4-2 0) [] -> [] - c.lt.s f3, f4 ;; [ 39] (b! (>=.s f3-3 f4-2) L5 (set! t3-0 #t)) [] -> [t3: symbol ] - bc1f L5 - daddiu t3, s7, 8 + lw t9, target-shoved(s7) ;; [ 21] (set! t9-2 target-shoved) + ;; [] -> [t9: (function meters meters process (state object object target) object :behavior target) ] + lw v1, *TARGET-bank*(s7) ;; [ 22] (set! v1-6 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 256(v1) ;; [ 23] (set! f0-1 (l.f (+ v1-6 256))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [ 24] (set! a0-4 (fpr->gpr f0-1)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [ 25] (set! v1-7 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 260(v1) ;; [ 26] (set! f0-2 (l.f (+ v1-7 260))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [ 27] (set! a1-0 (fpr->gpr f0-2)) [] -> [a1: meters ] + or a2, s7, r0 ;; [ 28] (set! a2-0 #f) [] -> [a2: '#f ] + lw a3, target-hit(s7) ;; [ 29] (set! a3-0 target-hit) [] -> [a3: (state symbol attack-info target) ] + jalr ra, t9 ;; [ 30] (call! a0-4 a1-0 a2-0 a3-0) + ;; [a0: meters a1: meters a2: '#f a3: (state symbol attack-info target) t9: (function meters meters process (state object object target) object :behavior target) ] -> [v0: object ] + sll v0, ra, 0 + or v1, v0, r0 ;; [ 31] (set! v1-8 v0-2) [v0: object ] -> [v1: object ] B9: - or t3, s7, r0 ;; [ 40] (set! t3-0 #f) [] -> [t3: '#f ] +L26: + lwu v1, 108(s6) ;; [ 32] (set! v1-9 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 33] (set! v1-10 (l.wu (+ v1-9 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 34] (set! v1-11 (l.w (+ v1-10 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 35] (set! v1-12 (sll v1-11 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 36] (set! a0-5 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 37] (set! v1-13 (+ v1-12 a0-5)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 38] (set! v1-14 (l.wu (+ v1-13 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 39] (set! v1-15 (l.wu (+ v1-14 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 8192 ;; [ 40] (set! v1-16 (logand v1-15 8192)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L28 ;; [ 41] (bl! (zero? v1-16) L28 (no-delay!)) [v1: pad-buttons ] -> [] B10: -L5: - beql s7, t3, L8 ;; [ 41] (bl! (not t3-0) L8 (no-delay!)) [t3: symbol ] -> [] -B11: - or t2, t3, r0 ;; [ 42] (set! t2-1 t3-0) [t3: symbol ] -> [t2: symbol ] + or v1, s7, r0 ;; [ 42] (set! v1-17 #f) [] -> [v1: '#f ] +B11: + lw t9, can-feet?(s7) ;; [ 43] (set! t9-3 can-feet?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [ 44] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + beql s7, v0, L28 ;; [ 45] (bl! (not v0-3) L28 (no-delay!)) [v0: symbol ] -> [] B12: - mtc1 f4, r0 ;; [ 43] (set! f4-3 0) [] -> [] - c.lt.s f2, f4 ;; [ 44] (b! (>=.s f2-2 f4-3) L6 (set! t3-1 #t)) [] -> [t3: symbol ] - bc1f L6 - daddiu t3, s7, 8 + or v1, v0, r0 ;; [ 46] (set! v1-17 v0-3) [v0: symbol ] -> [v1: symbol ] B13: - or t3, s7, r0 ;; [ 45] (set! t3-1 #f) [] -> [t3: '#f ] -B14: -L6: - beql s7, t3, L8 ;; [ 46] (bl! (not t3-1) L8 (no-delay!)) [t3: symbol ] -> [] -B15: - or t2, t3, r0 ;; [ 47] (set! t2-1 t3-1) [t3: symbol ] -> [t2: symbol ] + lwu v1, 120(s6) ;; [ 47] (set! v1-18 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 48] (set! v1-19 (l.w (+ v1-18 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 49] (b! (<=0.si v1-19) L27 (set! v1-20 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L27 + or v1, s7, r0 +B14: + lwu v1, 120(s6) ;; [ 50] (set! v1-21 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 51] (set! v1-22 (l.wu (+ v1-21 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 52] (set! v1-20 (l.wu (+ v1-22 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B15: +L27: + lwu a0, 116(s6) ;; [ 53] (set! a0-6 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 54] (set! a0-7 (l.wu (+ a0-6 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 180(a0) ;; [ 55] (set! a0-8 (l.wu (+ a0-7 180))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 56] (set! a0-9 (= v1-20 a0-8)) [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L28 ;; [ 57] (bl! (not a0-9) L28 (no-delay!)) [a0: symbol ] -> [] B16: - lwc1 f4, 16(t2) ;; [ 48] (set! f4-4 (l.f (+ t2-0 16))) [t2: air-box ] -> [] - c.lt.s f3, f4 ;; [ 49] (b! (<.s f3-3 f4-4) L7 (set! t3-2 #t)) [] -> [t3: symbol ] - bc1t L7 - daddiu t3, s7, 8 + or v1, a0, r0 ;; [ 58] (set! v1-17 a0-9) [a0: symbol ] -> [v1: symbol ] B17: - or t3, s7, r0 ;; [ 50] (set! t3-2 #f) [] -> [t3: '#f ] + lwu v1, 120(s6) ;; [ 59] (set! v1-23 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 60] (set! v1-24 (l.wu (+ v1-23 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu v1, r0, v1 ;; [ 61] (set! v1-25 (+ v1-24 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + lwu a0, 120(s6) ;; [ 62] (set! a0-10 (l.wu (+ self 120))) [s6: target ] -> [a0: joint-control ] + daddiu a0, a0, 44 ;; [ 63] (set! a0-11 (+ a0-10 44)) + ;; [a0: joint-control ] -> [a0: (inline-array joint-control-channel) ] + dsubu a0, v1, a0 ;; [ 64] (set! v1-17 (= v1-25 a0-11)) + ;; [v1: joint-control-channel a0: (inline-array joint-control-channel) ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 B18: -L7: - beql s7, t3, L8 ;; [ 51] (bl! (not t3-2) L8 (no-delay!)) [t3: symbol ] -> [] +L28: + beq s7, v1, L29 ;; [ 65] (b! (not v1-17) L29 (set! v0-4 #f)) [v1: symbol ] -> [v0: '#f ] + or v0, s7, r0 + B19: - or t2, t3, r0 ;; [ 52] (set! t2-1 t3-2) [t3: symbol ] -> [t2: symbol ] + lw t9, enter-state(s7) ;; [ 66] (set! t9-4 enter-state) [] -> [t9: ] + or a0, s7, r0 ;; [ 67] (set! a0-12 #f) [] -> [a0: '#f ] + lw v1, target-attack-air(s7);; [ 68] (set! v1-26 target-attack-air) [] -> [v1: (state symbol target) ] + sw v1, 72(s6) ;; [ 69] (s.w! (+ self 72) v1-26) [v1: (state symbol target) s6: target ] -> [] + jalr ra, t9 ;; [ 70] (call! a0-12) [a0: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 B20: - lwc1 f3, 24(t2) ;; [ 53] (set! f3-4 (l.f (+ t2-0 24))) [t2: air-box ] -> [] - c.lt.s f2, f3 ;; [ 54] (b! (<.s f2-2 f3-4) L8 (set! t2-1 #t)) [] -> [t2: symbol ] - bc1t L8 - daddiu t2, s7, 8 +L29: + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 -B21: - or t2, s7, r0 ;; [ 55] (set! t2-1 #f) [] -> [t2: '#f ] -B22: -L8: - beq s7, t2, L9 ;; [ 56] (b! (not t2-1) L9 (set! t2-2 #f)) [t2: symbol ] -> [t2: '#f ] - or t2, s7, r0 - -B23: - daddiu t1, s7, #t ;; [ 57] (set! t1-3 #t) [] -> [t1: symbol ] - or t2, t1, r0 ;; [ 58] (set! t2-3 t1-3) [t1: symbol ] -> [t2: symbol ] -B24: -L9: - beql s7, t1, L14 ;; [ 59] (bl! (not t1-3) L14 (no-delay!)) [t1: symbol ] -> [] -B25: - or t1, t1, r0 ;; [ 60] (set! t1-4 t1-3) [t1: symbol ] -> [t1: symbol ] - -B26: - or t1, s7, r0 ;; [ 61] (set! t1-4 #f) [] -> [t1: '#f ] - lwc1 f2, 12(t0) ;; [ 62] (set! f2-3 (l.f (+ t0-1 12))) [t0: air-box ] -> [] - mul.s f2, f0, f2 ;; [ 63] (set! f2-4 (*.s f0-4 f2-3)) [] -> [] - lwc1 f3, 28(t0) ;; [ 64] (set! f3-5 (l.f (+ t0-1 28))) [t0: air-box ] -> [] - mul.s f3, f1, f3 ;; [ 65] (set! f3-6 (*.s f1-6 f3-5)) [] -> [] - add.s f2, f2, f3 ;; [ 66] (set! f2-5 (+.s f2-4 f3-6)) [] -> [] - lwc1 f3, 12(t0) ;; [ 67] (set! f3-7 (l.f (+ t0-1 12))) [t0: air-box ] -> [] - mul.s f1, f1, f3 ;; [ 68] (set! f1-7 (*.s f1-6 f3-7)) [] -> [] - lwc1 f3, 28(t0) ;; [ 69] (set! f3-8 (l.f (+ t0-1 28))) [t0: air-box ] -> [] - mul.s f0, f0, f3 ;; [ 70] (set! f0-5 (*.s f0-4 f3-8)) [] -> [] - sub.s f0, f1, f0 ;; [ 71] (set! f0-6 (-.s f1-7 f0-5)) [] -> [] - mtc1 f1, r0 ;; [ 72] (set! f1-8 0) [] -> [] - c.lt.s f2, f1 ;; [ 73] (b! (>=.s f2-5 f1-8) L10 (set! t2-4 #t)) [] -> [t2: symbol ] - bc1f L10 - daddiu t2, s7, 8 - -B27: - or t2, s7, r0 ;; [ 74] (set! t2-4 #f) [] -> [t2: '#f ] -B28: -L10: - beql s7, t2, L13 ;; [ 75] (bl! (not t2-4) L13 (no-delay!)) [t2: symbol ] -> [] -B29: - or t0, t2, r0 ;; [ 76] (set! t0-2 t2-4) [t2: symbol ] -> [t0: symbol ] - -B30: - mtc1 f1, r0 ;; [ 77] (set! f1-9 0) [] -> [] - c.lt.s f0, f1 ;; [ 78] (b! (>=.s f0-6 f1-9) L11 (set! t2-5 #t)) [] -> [t2: symbol ] - bc1f L11 - daddiu t2, s7, 8 - -B31: - or t2, s7, r0 ;; [ 79] (set! t2-5 #f) [] -> [t2: '#f ] -B32: -L11: - beql s7, t2, L13 ;; [ 80] (bl! (not t2-5) L13 (no-delay!)) [t2: symbol ] -> [] -B33: - or t0, t2, r0 ;; [ 81] (set! t0-2 t2-5) [t2: symbol ] -> [t0: symbol ] - -B34: - lwc1 f1, 16(t0) ;; [ 82] (set! f1-10 (l.f (+ t0-1 16))) [t0: air-box ] -> [] - c.lt.s f2, f1 ;; [ 83] (b! (<.s f2-5 f1-10) L12 (set! t2-6 #t)) [] -> [t2: symbol ] - bc1t L12 - daddiu t2, s7, 8 - -B35: - or t2, s7, r0 ;; [ 84] (set! t2-6 #f) [] -> [t2: '#f ] -B36: -L12: - beql s7, t2, L13 ;; [ 85] (bl! (not t2-6) L13 (no-delay!)) [t2: symbol ] -> [] -B37: - or t0, t2, r0 ;; [ 86] (set! t0-2 t2-6) [t2: symbol ] -> [t0: symbol ] - -B38: - lwc1 f1, 24(t0) ;; [ 87] (set! f1-11 (l.f (+ t0-1 24))) [t0: air-box ] -> [] - c.lt.s f0, f1 ;; [ 88] (b! (<.s f0-6 f1-11) L13 (set! t0-2 #t)) [] -> [t0: symbol ] - bc1t L13 - daddiu t0, s7, 8 - -B39: - or t0, s7, r0 ;; [ 89] (set! t0-2 #f) [] -> [t0: '#f ] -B40: -L13: - beq s7, t0, L14 ;; [ 90] (b! (not t0-2) L14 (set! t0-3 #f)) [t0: symbol ] -> [t0: '#f ] - or t0, s7, r0 - -B41: - daddiu t1, s7, #t ;; [ 91] (set! t1-4 #t) [] -> [t1: symbol ] - or t0, t1, r0 ;; [ 92] (set! t0-4 t1-4) [t1: symbol ] -> [t0: symbol ] -B42: -L14: - beq s7, t1, L15 ;; [ 93] (b! (not t1-4) L15 (set! t1-5 #f)) [t1: symbol ] -> [t1: '#f ] - or t1, s7, r0 - -B43: - daddiu v1, s7, #t ;; [ 94] (set! v1-1 #t) [] -> [v1: symbol ] - or v0, v1, r0 ;; [ 95] (set! v0-0 v1-1) [v1: symbol ] -> [v0: symbol ] - beq r0, r0, L17 ;; [ 96] (b! #t L17 (nop!)) [] -> [] + sll r0, r0, 0 sll r0, r0, 0 -B44: - or v1, r0, r0 ;; [ 97] (set! v1-0 0) [] -> [v1: ] -B45: -L15: - daddiu v1, v1, 1 ;; [ 98] (set! v1-0 (+ v1-0 1)) [v1: int ] -> [v1: ] -B46: -L16: - slt t0, v1, a3 ;; [ 99] (b! (<.si v1-0 arg3) L2 (nop!)) [v1: int a3: int ] -> [] - bne t0, r0, L2 - sll r0, r0, 0 -B47: - or v1, s7, r0 ;; [100] (set! v1-2 #f) [] -> [v1: '#f ] - or v1, s7, r0 ;; [101] (set! v1-3 #f) [] -> [v1: '#f ] - or v0, s7, r0 ;; [102] (set! v0-0 #f) [] -> [v0: '#f ] -B48: -L17: +;;-*-OpenGOAL-Start-*- + +(state-handler + (trans target-wheel-flip) + () + (if (and (or (smack-surface? #f) + (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) + ) + (!= (-> self state-time) (-> *display* base-frame-counter)) + ) + (target-shoved + (-> *TARGET-bank* smack-surface-dist) + (-> *TARGET-bank* smack-surface-height) + (the-as process #f) + target-hit + ) + ) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) + (can-feet?) + (and (ja-group? (-> self draw art-group data 38)) (= (-> self skel root-channel 0) (-> self skel channel))) + ) + (go target-attack-air #f) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-wheel-flip) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x00, fp? 0 ra? 0 ep? 1 +;; Warnings: +;; INFO: Return type mismatch surface vs none. + +;; s6-0: target +B0: +L30: + lw v0, *wheel-flip-mods*(s7);; [ 0] (set! v0-0 *wheel-flip-mods*) [] -> [v0: surface ] + lwu v1, 108(s6) ;; [ 1] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw v0, 656(v1) ;; [ 2] (s.w! (+ v1-0 656) v0-0) [v0: surface v1: control-info ] -> [] jr ra daddu sp, sp, r0 @@ -239,52 +4358,25687 @@ L17: ;;-*-OpenGOAL-Start-*- -defun -(defun points-in-air? ((arg0 vector) (arg1 vector) (arg2 (inline-array air-box)) (arg3 int)) - (local-vars (t1-4 symbol)) - (dotimes (v1-0 arg3) - (let* ((t0-1 (-> arg2 v1-0)) - (f0-0 (-> t0-1 height-level)) - ) - (when (and (< f0-0 (-> arg0 y)) (< f0-0 (-> arg1 y))) - (let ((f2-0 (- (-> arg0 x) (-> t0-1 x-pos))) - (f4-0 (- (-> arg0 z) (-> t0-1 z-pos))) - (f0-4 (- (-> arg1 x) (-> t0-1 x-pos))) - (f1-6 (- (-> arg1 z) (-> t0-1 z-pos))) - (t2-0 t0-1) - (t1-3 #f) - ) - (let ((f3-3 (+ (* f2-0 (-> t2-0 cos-angle)) (* f4-0 (-> t2-0 sin-angle)))) - (f2-2 (- (* f4-0 (-> t2-0 cos-angle)) (* f2-0 (-> t2-0 sin-angle)))) - ) - (if (and (>= f3-3 0.0) (>= f2-2 0.0) (< f3-3 (-> t2-0 x-length)) (< f2-2 (-> t2-0 z-length))) - (set! t1-3 #t) - ) + +(state-handler + (enter target-wheel-flip) + ((arg0 float) (arg1 float)) + (set! (-> self control unknown-surface00) *wheel-flip-mods*) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-wheel) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x60, fp? 1 ra? 1 ep? 1 + ;stack_vars: 16 bytes at 16 + ;gprs: gp s5 s4 + ;fprs: f30 f28 +;; Warnings: +;; INFO: Return type mismatch object vs none. +;; Used lq/sq + +;; s4-1: vector s5-0: int s6-0: target gp-0: int f30-0: float +L31: + daddiu sp, sp, -96 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s4, 32(sp) + sq s5, 48(sp) + sq gp, 64(sp) + swc1 f28, 80(sp) + swc1 f30, 84(sp) +B0: + addiu gp, r0, 0 ;; [ 0] (set! gp-0 0) [] -> [gp: ] + addiu v1, r0, 0 ;; [ 1] (set! v1-0 0) [] -> [v1: ] + addiu s5, r0, 0 ;; [ 2] (set! s5-0 0) [] -> [s5: ] + lui v1, L786 ;; [ 3] (set! v1-1 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f30, 0(v1) ;; [ 4] (set! f30-0 (l.f v1-1)) [v1: ] -> [] + lw t9, ja-channel-push!(s7);; [ 5] (set! t9-0 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [ 6] (set! a0-0 1) [] -> [a0: ] + addiu a1, r0, 12 ;; [ 7] (set! a1-0 12) [] -> [a1: ] + jalr ra, t9 ;; [ 8] (call! a0-0 a1-0) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [ 9] (set! v1-2 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 10] (set! v1-3 (l.wu (+ v1-2 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s4, r0, v1 ;; [ 11] (set! s4-0 (+ v1-3 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s4: joint-control-channel ] + lw t9, joint-control-channel-group-eval!(s7);; [ 12] (set! t9-1 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a0, s4, r0 ;; [ 13] (set! a0-1 s4-0) [s4: joint-control-channel ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 14] (set! v1-4 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 15] (set! v1-5 (l.wu (+ v1-4 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 304(v1) ;; [ 16] (set! a1-1 (l.wu (+ v1-5 304))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-identity(s7);; [ 17] (set! a2-0 num-func-identity) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 18] (call! a0-1 a1-1 a2-0) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + mtc1 f0, r0 ;; [ 19] (set! f0-0 0) [] -> [] + swc1 f0, 16(s4) ;; [ 20] (s.f! (+ s4-0 16) f0-0) [s4: joint-control-channel ] -> [] + mfc1 v1, f0 ;; [ 21] (set! v1-6 (fpr->gpr f0-0)) [] -> [v1: float ] +B1: +L32: + lwu v1, 108(s6) ;; [ 22] (set! v1-7 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 23] (set! v1-8 (l.wu (+ v1-7 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 24] (set! v1-9 (l.w (+ v1-8 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 25] (set! v1-10 (sll v1-9 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 26] (set! a0-2 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 27] (set! v1-11 (+ v1-10 a0-2)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 28] (set! v1-12 (l.wu (+ v1-11 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 29] (set! v1-13 (l.wu (+ v1-12 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 16384 ;; [ 30] (set! v1-14 (logand v1-13 #x4000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beq v1, r0, L33 ;; [ 31] (b! (zero? v1-14) L33 (set! v1-15 #f)) [v1: pad-buttons ] -> [v1: '#f ] + or v1, s7, r0 + +B2: + lw v1, *display*(s7) ;; [ 32] (set! v1-16 *display*) [] -> [v1: display ] + ld gp, 780(v1) ;; [ 33] (set! gp-0 (l.d (+ v1-16 780))) [v1: display ] -> [gp: time-frame ] + or v1, gp, r0 ;; [ 34] (set! v1-17 (the-as time-frame gp-0)) [gp: time-frame ] -> [v1: time-frame ] +B3: +L33: + lw t9, smack-surface?(s7) ;; [ 35] (set! t9-2 smack-surface?) [] -> [t9: (function symbol symbol :behavior target) ] + or a0, s7, r0 ;; [ 36] (set! a0-3 #f) [] -> [a0: '#f ] + jalr ra, t9 ;; [ 37] (call! a0-3) + ;; [a0: '#f t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + bnel s7, v0, L34 ;; [ 38] (bl! (truthy v0-2) L34 (no-delay!)) [v0: symbol ] -> [] +B4: + or v1, v0, r0 ;; [ 39] (set! v1-18 v0-2) [v0: symbol ] -> [v1: symbol ] + +B5: + lwu v1, 108(s6) ;; [ 40] (set! v1-19 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 1308(v1) ;; [ 41] (set! f0-1 (l.f (+ v1-19 1308))) [v1: control-info ] -> [] + lui v1, L762 ;; [ 42] (set! v1-20 L762) [] -> [v1: ] + ori v1, v1, L762 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 43] (set! f1-0 (l.f v1-20)) [v1: ] -> [] + c.lt.s f0, f1 ;; [ 44] (b! (>=.s f0-1 f1-0) L34 (set! v1-18 #t)) [] -> [v1: symbol ] + bc1f L34 + daddiu v1, s7, 8 + +B6: + or v1, s7, r0 ;; [ 45] (set! v1-18 #f) [] -> [v1: '#f ] +B7: +L34: + beql s7, v1, L35 ;; [ 46] (bl! (not v1-18) L35 (no-delay!)) [v1: symbol ] -> [] +B8: + or v1, v1, r0 ;; [ 47] (set! v1-21 v1-18) [v1: symbol ] -> [v1: symbol ] + +B9: + lw v1, *display*(s7) ;; [ 48] (set! v1-22 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 49] (set! v1-23 (l.d (+ v1-22 780))) [v1: display ] -> [v1: time-frame ] + lwu a0, 108(s6) ;; [ 50] (set! a0-4 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 2180(a0) ;; [ 51] (set! a0-5 (l.wu (+ a0-4 2180))) [a0: control-info ] -> [a0: uint ] + dsubu v1, v1, a0 ;; [ 52] (set! v1-24 (- v1-23 a0-5)) [v1: time-frame a0: uint ] -> [v1: time-frame ] + sltiu v1, v1, 3 ;; [ 53] (set! a0-6 (>=.ui v1-24 3)) [v1: time-frame ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L35 ;; [ 54] (bl! (not a0-6) L35 (no-delay!)) [a0: symbol ] -> [] +B10: + or v1, a0, r0 ;; [ 55] (set! v1-21 a0-6) [a0: symbol ] -> [v1: symbol ] + +B11: + lw v1, *display*(s7) ;; [ 56] (set! v1-25 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 57] (set! v1-26 (l.d (+ v1-25 780))) [v1: display ] -> [v1: time-frame ] + ld a0, 164(s6) ;; [ 58] (set! a0-7 (l.d (+ self 164))) [s6: target ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [ 59] (set! v1-27 (- v1-26 a0-7)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + slti a0, v1, 1 ;; [ 60] (set! v1-21 (>=.si v1-27 1)) [v1: time-frame ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 +B12: +L35: + beq s7, v1, L37 ;; [ 61] (b! (not v1-21) L37 (set! v1-28 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B13: + lui v1, L811 ;; [ 62] (set! v1-29 L811) [] -> [v1: ] + ori v1, v1, L811 + addu v1, fp, v1 + lwc1 f28, 0(v1) ;; [ 63] (set! f28-0 (l.f v1-29)) [v1: ] -> [] + lw t9, ja-aframe-num(s7) ;; [ 64] (set! t9-3 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 65] (set! a0-8 0) [] -> [a0: ] + jalr ra, t9 ;; [ 66] (call! a0-8) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 67] (set! f0-2 (gpr->fpr v0-3)) [v0: float ] -> [] + c.lt.s f28, f0 ;; [ 68] (b! (<.s f28-0 f0-2) L36 (set! v1-30 #f)) [] -> [v1: '#f ] + bc1t L36 + or v1, s7, r0 + +B14: + lw t9, target-shoved(s7) ;; [ 69] (set! t9-4 target-shoved) + ;; [] -> [t9: (function meters meters process (state object object target) object :behavior target) ] + lw v1, *TARGET-bank*(s7) ;; [ 70] (set! v1-31 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 256(v1) ;; [ 71] (set! f0-3 (l.f (+ v1-31 256))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [ 72] (set! a0-9 (fpr->gpr f0-3)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [ 73] (set! v1-32 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 260(v1) ;; [ 74] (set! f0-4 (l.f (+ v1-32 260))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [ 75] (set! a1-2 (fpr->gpr f0-4)) [] -> [a1: meters ] + or a2, s7, r0 ;; [ 76] (set! a2-1 #f) [] -> [a2: '#f ] + lw a3, target-hit(s7) ;; [ 77] (set! a3-0 target-hit) [] -> [a3: (state symbol attack-info target) ] + jalr ra, t9 ;; [ 78] (call! a0-9 a1-2 a2-1 a3-0) + ;; [a0: meters a1: meters a2: '#f a3: (state symbol attack-info target) t9: (function meters meters process (state object object target) object :behavior target) ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 79] (set! v1-33 v0-4) [v0: object ] -> [v1: object ] +B15: +L36: + bne s5, r0, L37 ;; [ 80] (b! (nonzero? s5-0) L37 (set! v1-34 #f)) [s5: int ] -> [v1: '#f ] + or v1, s7, r0 + +B16: + lw v1, *display*(s7) ;; [ 81] (set! v1-35 *display*) [] -> [v1: display ] + ld s5, 780(v1) ;; [ 82] (set! s5-0 (l.d (+ v1-35 780))) [v1: display ] -> [s5: time-frame ] + or v1, s5, r0 ;; [ 83] (set! v1-36 (the-as time-frame s5-0)) [s5: time-frame ] -> [v1: time-frame ] +B17: +L37: + lwu v1, 108(s6) ;; [ 84] (set! v1-37 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 85] (set! v1-38 (l.wu (+ v1-37 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 86] (set! v1-39 (l.w (+ v1-38 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 87] (set! v1-40 (sll v1-39 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 88] (set! a0-10 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 89] (set! v1-41 (+ v1-40 a0-10)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 90] (set! v1-42 (l.wu (+ v1-41 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 91] (set! v1-43 (l.wu (+ v1-42 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 32768 ;; [ 92] (set! v1-44 (logand v1-43 #x8000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beq v1, r0, L38 ;; [ 93] (b! (zero? v1-44) L38 (set! v1-45 #f)) [v1: pad-buttons ] -> [v1: '#f ] + or v1, s7, r0 + +B18: + lw v1, *display*(s7) ;; [ 94] (set! v1-46 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 95] (set! v1-47 (l.d (+ v1-46 780))) [v1: display ] -> [v1: time-frame ] +B19: +L38: + lwu a0, 128(s6) ;; [ 96] (set! a0-11 (l.wu (+ self 128))) [s6: target ] -> [a0: align-control ] + lwu v1, -4(a0) ;; [ 97] (set! v1-48 (l.wu (+ a0-11 -4))) + ;; [a0: align-control ] -> [v1: ] + lwu t9, 52(v1) ;; [ 98] (set! t9-5 (l.wu (+ v1-48 52))) + ;; [v1: ] -> [t9: ] + jalr ra, t9 ;; [ 99] (call! a0-11) + ;; [a0: align-control t9: ] -> [v0: transformq ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [100] (set! v1-49 v0-5) [v0: transformq ] -> [v1: transformq ] + beq s5, r0, L39 ;; [101] (b! (zero? s5-0) L39 (nop!)) [s5: int ] -> [] + sll r0, r0, 0 + +B20: + or v1, s7, r0 ;; [102] (set! v1-50 #f) [] -> [v1: '#f ] + beq r0, r0, L40 ;; [103] (b! #t L40 (nop!)) [] -> [] + sll r0, r0, 0 + +B21: +L39: + lwu a0, 128(s6) ;; [104] (set! a0-12 (l.wu (+ self 128))) [s6: target ] -> [a0: align-control ] + lwu v1, -4(a0) ;; [105] (set! v1-51 (l.wu (+ a0-12 -4))) + ;; [a0: align-control ] -> [v1: ] + lwu t9, 56(v1) ;; [106] (set! t9-6 (l.wu (+ v1-51 56))) + ;; [v1: ] -> [t9: ] + addiu a1, r0, 4 ;; [107] (set! a1-3 4) [] -> [a1: ] + lui v1, L786 ;; [108] (set! v1-52 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw a2, 0(v1) ;; [109] (set! a2-2 (l.w v1-52)) [v1: ] -> [a2: int ] + lui v1, L786 ;; [110] (set! v1-53 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw a3, 0(v1) ;; [111] (set! a3-1 (l.w v1-53)) [v1: ] -> [a3: int ] + mfc1 t0, f30 ;; [112] (set! t0-0 (fpr->gpr f30-0)) [] -> [t0: float ] + jalr ra, t9 ;; [113] (call! a0-12 a1-3 a2-2 a3-1 t0-0) + ;; [a0: align-control a1: a2: int a3: int t0: float t9: ] -> [v0: trsqv ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [114] (set! v1-54 v0-6) [v0: trsqv ] -> [v1: trsqv ] + daddiu s4, sp, 16 ;; [115] (set! s4-1 (+ sp-0 16)) [sp: ] -> [s4: vector ] + sq r0, 0(s4) ;; [116] (s.q! s4-1 0) [s4: vector ] -> [] + lw t9, vector-matrix*!(s7);; [117] (set! t9-7 vector-matrix*!) [] -> [t9: (function vector vector matrix vector) ] + or a0, s4, r0 ;; [118] (set! a0-13 s4-1) [s4: vector ] -> [a0: vector ] + lwu v1, 108(s6) ;; [119] (set! v1-55 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a1, v1, 60 ;; [120] (set! a1-4 (+ v1-55 60)) [v1: control-info ] -> [a1: vector ] + lwu v1, 108(s6) ;; [121] (set! v1-56 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a2, v1, 924 ;; [122] (set! a2-3 (+ v1-56 924)) [v1: control-info ] -> [a2: matrix ] + jalr ra, t9 ;; [123] (call! a0-13 a1-4 a2-3) + ;; [a0: vector a1: vector a2: matrix t9: (function vector vector matrix vector) ] -> [v0: vector ] + sll v0, ra, 0 + + mtc1 f0, r0 ;; [124] (set! f0-5 0) [] -> [] + swc1 f0, 4(s4) ;; [125] (s.f! (+ s4-1 4) f0-5) [s4: vector ] -> [] + lw t9, vector-matrix*!(s7);; [126] (set! t9-8 vector-matrix*!) [] -> [t9: (function vector vector matrix vector) ] + lwu v1, 108(s6) ;; [127] (set! v1-57 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a0, v1, 18924 ;; [128] (set! a0-14 (+ v1-57 #x49ec)) [v1: control-info ] -> [a0: vector ] + lwu v1, 108(s6) ;; [129] (set! v1-58 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a2, v1, 988 ;; [130] (set! a2-4 (+ v1-58 988)) [v1: control-info ] -> [a2: matrix ] + or a1, s4, r0 ;; [131] (set! a1-5 s4-1) [s4: vector ] -> [a1: vector ] + jalr ra, t9 ;; [132] (call! a0-14 a1-5 a2-4) + ;; [a0: vector a1: vector a2: matrix t9: (function vector vector matrix vector) ] -> [v0: vector ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [133] (set! v1-59 v0-8) [v0: vector ] -> [v1: vector ] +B22: +L40: + lwu s6, 44(s6) ;; [134] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [135] (set! v1-60 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [136] (set! v1-61 (l.wu (+ v1-60 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [137] (set! a0-15 (+ v1-61 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [138] (set! v1-62 (l.wu (+ a0-15 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [139] (set! v1-63 (l.wu (+ v1-62 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [140] (set! v1-64 (l.h (+ v1-63 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [141] (set! v1-65 (+ v1-64 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [142] (set! f0-6 (gpr->fpr v1-65)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [143] (set! f0-7 (i2f f0-6)) [] -> [] + swc1 f0, 24(a0) ;; [144] (s.f! (+ a0-15 24) f0-7) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [145] (set! v1-66 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [146] (set! f0-8 (l.f v1-66)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [147] (s.f! (+ a0-15 28) f0-8) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [148] (set! t9-9 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [149] (set! a1-6 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [150] (set! a2-5 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [151] (call! a0-15 a1-6 a2-5) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [152] (set! v1-67 v0-9) [v0: int ] -> [v1: int ] + lui v1, L786 ;; [153] (set! v1-68 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [154] (set! f0-9 (l.f v1-68)) [v1: ] -> [] + lwu v1, 108(s6) ;; [155] (set! v1-69 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f1, 18940(v1) ;; [156] (set! f1-1 (l.f (+ v1-69 #x49fc))) [v1: control-info ] -> [] + min.s f0, f0, f1 ;; [157] (set! f0-10 (min.s f0-9 f1-1)) [] -> [] + mul.s f30, f30, f0 ;; [158] (set! f30-0 (*.s f30-0 f0-10)) [] -> [] + lw t9, ja-done?(s7) ;; [159] (set! t9-10 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [160] (set! a0-16 0) [] -> [a0: ] + jalr ra, t9 ;; [161] (call! a0-16) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L32 ;; [162] (b! (not v0-10) L32 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B23: + or v1, s7, r0 ;; [163] (set! v1-70 #f) [] -> [v1: '#f ] + lw v1, *display*(s7) ;; [164] (set! v1-71 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [165] (set! v1-72 (l.d (+ v1-71 780))) [v1: display ] -> [v1: time-frame ] + dsubu v1, v1, gp ;; [166] (set! v1-73 (- v1-72 gp-0)) [v1: time-frame gp: int ] -> [v1: time-frame ] + lw a0, *TARGET-bank*(s7) ;; [167] (set! a0-17 *TARGET-bank*) [] -> [a0: target-bank ] + ld a0, 84(a0) ;; [168] (set! a0-18 (l.d (+ a0-17 84))) [a0: target-bank ] -> [a0: time-frame ] + slt v1, v1, a0 ;; [169] (set! a0-19 (<.si v1-73 a0-18)) [v1: time-frame a0: time-frame ] -> [a0: symbol ] + daddiu a0, s7, 8 + movz a0, s7, v1 + bnel s7, a0, L41 ;; [170] (bl! (truthy a0-19) L41 (no-delay!)) [a0: symbol ] -> [] +B24: + or v1, a0, r0 ;; [171] (set! v1-74 a0-19) [a0: symbol ] -> [v1: symbol ] + +B25: + daddiu v1, s7, 8 ;; [172] (set! v1-75 #t) [] -> [v1: symbol ] + lwu a0, 108(s6) ;; [173] (set! a0-20 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [174] (set! a0-21 (l.wu (+ a0-20 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [175] (set! a0-22 (l.w (+ a0-21 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [176] (set! a0-23 (sll a0-22 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [177] (set! a1-7 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [178] (set! a0-24 (+ a0-23 a1-7)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [179] (set! a0-25 (l.wu (+ a0-24 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 56(a0) ;; [180] (set! a0-26 (l.wu (+ a0-25 56))) [a0: cpad-info ] -> [a0: pad-buttons ] + andi a0, a0, 16384 ;; [181] (set! a0-27 (logand a0-26 #x4000)) [a0: pad-buttons ] -> [a0: pad-buttons ] + movz v1, s7, a0 ;; [182] (cmove-#f-zero v1-74 a0-27 v1-75) [v1: symbol a0: pad-buttons ] -> [v1: symbol ] +B26: +L41: + beql s7, v1, L42 ;; [183] (bl! (not v1-74) L42 (no-delay!)) [v1: symbol ] -> [] +B27: + or v1, v1, r0 ;; [184] (set! v1-76 v1-74) [v1: symbol ] -> [v1: symbol ] + +B28: + lw t9, can-jump?(s7) ;; [185] (set! t9-11 can-jump?) [] -> [t9: (function symbol symbol :behavior target) ] + daddiu a0, s7, target-wheel-flip;; [186] (set! a0-28 'target-wheel-flip) [] -> [a0: symbol ] + jalr ra, t9 ;; [187] (call! a0-28) + ;; [a0: symbol t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [188] (set! v1-76 v0-11) [v0: symbol ] -> [v1: symbol ] +B29: +L42: + beq s7, v1, L43 ;; [189] (b! (not v1-76) L43 (set! v1-77 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B30: + lw t9, enter-state(s7) ;; [190] (set! t9-12 enter-state) [] -> [t9: ] + lw v1, *TARGET-bank*(s7) ;; [191] (set! v1-78 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 124(v1) ;; [192] (set! f0-11 (l.f (+ v1-78 124))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [193] (set! a0-29 (fpr->gpr f0-11)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [194] (set! v1-79 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 128(v1) ;; [195] (set! f0-12 (l.f (+ v1-79 128))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [196] (set! a1-8 (fpr->gpr f0-12)) [] -> [a1: meters ] + lw v1, target-wheel-flip(s7);; [197] (set! v1-80 target-wheel-flip) [] -> [v1: (state float float target) ] + sw v1, 72(s6) ;; [198] (s.w! (+ self 72) v1-80) [v1: (state float float target) s6: target ] -> [] + jalr ra, t9 ;; [199] (call! a0-29 a1-8) + ;; [a0: meters a1: meters t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [200] (set! v1-81 v0-12) [v0: object ] -> [v1: object ] +B31: +L43: + lw v1, *display*(s7) ;; [201] (set! v1-82 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [202] (set! v1-83 (l.d (+ v1-82 780))) [v1: display ] -> [v1: time-frame ] + sd v1, 188(s6) ;; [203] (s.d! (+ self 188) v1-83) [v1: time-frame s6: target ] -> [] + lui v1, L44 ;; [204] (set! v1-84 L44) [] -> [v1: (function none :behavior target) ] + ori v1, v1, L44 + daddu v1, v1, fp + sw v1, 196(s6) ;; [205] (s.w! (+ self 196) v1-84) [v1: (function none :behavior target) s6: target ] -> [] + lw t9, enter-state(s7) ;; [206] (set! t9-13 enter-state) [] -> [t9: ] + lw v1, target-duck-stance(s7);; [207] (set! v1-85 target-duck-stance) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [208] (s.w! (+ self 72) v1-85) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [209] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + ld ra, 0(sp) + ld fp, 8(sp) + lwc1 f30, 84(sp) + lwc1 f28, 80(sp) + lq gp, 64(sp) + lq s5, 48(sp) + lq s4, 32(sp) + jr ra + daddiu sp, sp, 96 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-wheel) + () + (let ((gp-0 0)) + 0 + (let ((s5-0 0) + (f30-0 1.0) + ) + (ja-channel-push! 1 (seconds 0.04)) + (ja :group! (-> self draw art-group data 69) :num! min) + (until (ja-done? 0) + (if (cpad-pressed? (-> self control unknown-cpad-info00 number) x) + (set! gp-0 (the-as int (-> *display* base-frame-counter))) ) - (set! t1-4 - (and t1-3 (begin - (set! t1-4 #f) - (let ((f2-5 (+ (* f0-4 (-> t0-1 cos-angle)) (* f1-6 (-> t0-1 sin-angle)))) - (f0-6 (- (* f1-6 (-> t0-1 cos-angle)) (* f0-4 (-> t0-1 sin-angle)))) - ) - (if (and (>= f2-5 0.0) (>= f0-6 0.0) (< f2-5 (-> t0-1 x-length)) (< f0-6 (-> t0-1 z-length))) - (set! t1-4 #t) - ) - ) - t1-4 + (when (and (or (smack-surface? #f) (>= (-> self control unknown-float63) 0.7)) + (>= (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> self control unknown-uint20)))) + (the-as uint 3) + ) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) 1) + ) + (if (>= 6.0 (ja-aframe-num 0)) + (target-shoved + (-> *TARGET-bank* smack-surface-dist) + (-> *TARGET-bank* smack-surface-height) + (the-as process #f) + target-hit + ) + ) + (if (zero? s5-0) + (set! s5-0 (the-as int (-> *display* base-frame-counter))) + ) + ) + (if (cpad-pressed? (-> self control unknown-cpad-info00 number) square) + (-> *display* base-frame-counter) + ) + (compute-alignment! (-> self align)) + (cond + ((nonzero? s5-0) + ) + (else + (align! (-> self align) (align-opts adjust-xz-vel) (the-as float 1.0) (the-as float 1.0) f30-0) + (let ((s4-1 (new-stack-vector0))) + (vector-matrix*! s4-1 (-> self control transv) (-> self control unknown-matrix00)) + (set! (-> s4-1 y) 0.0) + (vector-matrix*! (-> self control unknown-vector120) s4-1 (-> self control unknown-matrix01)) + ) + ) + ) + (suspend) + (ja :num! (seek!)) + (set! f30-0 (* f30-0 (fmin 1.0 (-> self control unknown-float140)))) + ) + ) + (if (and (or (< (- (-> *display* base-frame-counter) (the-as time-frame gp-0)) (-> *TARGET-bank* wheel-jump-pre-window)) + (cpad-pressed? (-> self control unknown-cpad-info00 number) x) + ) + (can-jump? 'target-wheel-flip) + ) + (go target-wheel-flip (-> *TARGET-bank* wheel-flip-height) (-> *TARGET-bank* wheel-flip-dist)) + ) + ) + (set! (-> self state-hook-time) (-> *display* base-frame-counter)) + (set! (-> self state-hook) + (lambda :behavior target + () + (cond + ((>= (- (-> *display* base-frame-counter) (-> self state-hook-time)) (-> *TARGET-bank* wheel-jump-post-window)) + (set! (-> self state-hook) (the-as (function none :behavior target) nothing)) + ) + (else + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? 'target-wheel-flip) + ) + (go target-wheel-flip (-> *TARGET-bank* wheel-flip-height) (-> *TARGET-bank* wheel-flip-dist)) + ) + ) + ) + (none) + ) + ) + (go target-duck-stance) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (anon-function 5 target) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; Warnings: +;; INFO: Return type mismatch object vs none. + +;; s6-0: target +L44: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lw v1, *display*(s7) ;; [ 0] (set! v1-0 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 1] (set! v1-1 (l.d (+ v1-0 780))) [v1: display ] -> [v1: time-frame ] + ld a0, 188(s6) ;; [ 2] (set! a0-0 (l.d (+ self 188))) [s6: target ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [ 3] (set! v1-2 (- v1-1 a0-0)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + lw a0, *TARGET-bank*(s7) ;; [ 4] (set! a0-1 *TARGET-bank*) [] -> [a0: target-bank ] + ld a0, 92(a0) ;; [ 5] (set! a0-2 (l.d (+ a0-1 92))) [a0: target-bank ] -> [a0: time-frame ] + slt v1, v1, a0 ;; [ 6] (b! (<.si v1-2 a0-2) L45 (nop!)) [v1: time-frame a0: time-frame ] -> [] + bne v1, r0, L45 + sll r0, r0, 0 + +B1: + lw v0, nothing(s7) ;; [ 7] (set! v0-0 nothing) [] -> [v0: (function none) ] + sw v0, 196(s6) ;; [ 8] (s.w! (+ self 196) v0-0) [v0: (function none) s6: target ] -> [] + beq r0, r0, L47 ;; [ 9] (b! #t L47 (nop!)) [] -> [] + sll r0, r0, 0 + +B2: +L45: + lwu v1, 108(s6) ;; [ 10] (set! v1-3 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 11] (set! v1-4 (l.wu (+ v1-3 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 12] (set! v1-5 (l.w (+ v1-4 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 13] (set! v1-6 (sll v1-5 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 14] (set! a0-3 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 15] (set! v1-7 (+ v1-6 a0-3)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 16] (set! v1-8 (l.wu (+ v1-7 4))) [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 17] (set! v1-9 (l.wu (+ v1-8 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 18] (set! a0-4 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 19] (set! a0-5 (l.wu (+ a0-4 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 20] (set! a0-6 (l.w (+ a0-5 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 21] (set! a0-7 (sll a0-6 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 22] (set! a1-0 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 23] (set! a0-8 (+ a0-7 a1-0)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 24] (set! a0-9 (l.wu (+ a0-8 4))) [a0: ] -> [a0: cpad-info ] + lwu a0, 60(a0) ;; [ 25] (set! a0-10 (l.wu (+ a0-9 60))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 26] (set! v1-10 (logior v1-9 a0-10)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 27] (set! a0-11 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 28] (set! a0-12 (l.wu (+ a0-11 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 29] (set! a0-13 (l.w (+ a0-12 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 30] (set! a0-14 (sll a0-13 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 31] (set! a1-1 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 32] (set! a0-15 (+ a0-14 a1-1)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 33] (set! a0-16 (l.wu (+ a0-15 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 64(a0) ;; [ 34] (set! a0-17 (l.wu (+ a0-16 64))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 35] (set! v1-11 (logior v1-10 a0-17)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + andi v1, v1, 16384 ;; [ 36] (set! v1-12 (logand v1-11 #x4000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L46 ;; [ 37] (bl! (zero? v1-12) L46 (no-delay!)) [v1: pad-buttons ] -> [] +B3: + or v1, s7, r0 ;; [ 38] (set! v1-13 #f) [] -> [v1: '#f ] + +B4: + lw t9, can-jump?(s7) ;; [ 39] (set! t9-0 can-jump?) [] -> [t9: (function symbol symbol :behavior target) ] + daddiu a0, s7, target-wheel-flip;; [ 40] (set! a0-18 'target-wheel-flip) [] -> [a0: symbol ] + jalr ra, t9 ;; [ 41] (call! a0-18) + ;; [a0: symbol t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 42] (set! v1-13 v0-1) [v0: symbol ] -> [v1: symbol ] +B5: +L46: + beq s7, v1, L47 ;; [ 43] (b! (not v1-13) L47 (set! v0-2 #f)) [v1: symbol ] -> [v0: '#f ] + or v0, s7, r0 + +B6: + lw t9, enter-state(s7) ;; [ 44] (set! t9-1 enter-state) [] -> [t9: ] + lw v1, *TARGET-bank*(s7) ;; [ 45] (set! v1-14 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 124(v1) ;; [ 46] (set! f0-0 (l.f (+ v1-14 124))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [ 47] (set! a0-19 (fpr->gpr f0-0)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [ 48] (set! v1-15 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 128(v1) ;; [ 49] (set! f0-1 (l.f (+ v1-15 128))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [ 50] (set! a1-2 (fpr->gpr f0-1)) [] -> [a1: meters ] + lw v1, target-wheel-flip(s7);; [ 51] (set! v1-16 target-wheel-flip) [] -> [v1: (state float float target) ] + sw v1, 72(s6) ;; [ 52] (s.w! (+ self 72) v1-16) [v1: (state float float target) s6: target ] -> [] + jalr ra, t9 ;; [ 53] (call! a0-19 a1-2) + ;; [a0: meters a1: meters t9: ] -> [v0: object ] + sll v0, ra, 0 + +B7: +L47: + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(defun-anon + (anon-function 5 target) + () + (cond + ((>= (- (-> *display* base-frame-counter) (-> self state-hook-time)) (-> *TARGET-bank* wheel-jump-post-window)) + (set! (-> self state-hook) (the-as (function none :behavior target) nothing)) + ) + (else + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? 'target-wheel-flip) + ) + (go target-wheel-flip (-> *TARGET-bank* wheel-flip-height) (-> *TARGET-bank* wheel-flip-dist)) + ) + ) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (exit target-wheel) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; s6-0: target +L48: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + daddiu v1, s7, target-wheel;; [ 0] (set! v1-0 'target-wheel) [] -> [v1: symbol ] + lwu a0, 72(s6) ;; [ 1] (set! a0-0 (l.wu (+ self 72))) [s6: target ] -> [a0: state ] + lwu a0, 0(a0) ;; [ 2] (set! a0-1 (l.wu a0-0)) [a0: state ] -> [a0: symbol ] + beq a0, v1, L49 ;; [ 3] (b! (= a0-1 v1-0) L49 (set! v1-1 #f)) [v1: symbol a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B1: + lwu v1, 108(s6) ;; [ 4] (set! v1-2 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw r0, 1652(v1) ;; [ 5] (s.w! (+ v1-2 1652) 0) [v1: control-info ] -> [] + lw v1, *display*(s7) ;; [ 6] (set! v1-3 *display*) [] -> [v1: display ] + ld a0, 780(v1) ;; [ 7] (set! a0-2 (l.d (+ v1-3 780))) [v1: display ] -> [a0: time-frame ] + lwu v1, 108(s6) ;; [ 8] (set! v1-4 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sd a0, 1660(v1) ;; [ 9] (s.d! (+ v1-4 1660) a0-2) [v1: control-info a0: time-frame ] -> [] +B2: +L49: + lw t9, target-exit(s7) ;; [ 10] (set! t9-0 target-exit) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 11] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (exit target-wheel) + () + (when (!= (-> self next-state name) 'target-wheel) + (set! (-> self control unknown-int50) 0) + (set! (-> self control unknown-dword30) (-> *display* base-frame-counter)) + ) + (target-exit) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-wheel) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 1 ra? 1 ep? 1 +;; Warnings: +;; INFO: Return type mismatch int vs none. + +;; s6-0: target +L50: + daddiu sp, sp, -16 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 +B0: + lw v1, *display*(s7) ;; [ 0] (set! v1-0 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 1] (set! v1-1 (l.d (+ v1-0 780))) [v1: display ] -> [v1: time-frame ] + sd v1, 164(s6) ;; [ 2] (s.d! (+ self 164) v1-1) [v1: time-frame s6: target ] -> [] + lw v1, *wheel-mods*(s7) ;; [ 3] (set! v1-2 *wheel-mods*) [] -> [v1: surface ] + lwu a0, 108(s6) ;; [ 4] (set! a0-0 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sw v1, 656(a0) ;; [ 5] (s.w! (+ a0-0 656) v1-2) [v1: surface a0: control-info ] -> [] + lwu v1, 108(s6) ;; [ 6] (set! v1-3 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lw v1, 1652(v1) ;; [ 7] (set! v1-4 (l.w (+ v1-3 1652))) [v1: control-info ] -> [v1: int ] + daddiu v1, v1, 1 ;; [ 8] (set! v1-5 (+ v1-4 1)) [v1: int ] -> [v1: ] + lwu a0, 108(s6) ;; [ 9] (set! a0-1 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sw v1, 1652(a0) ;; [ 10] (s.w! (+ a0-1 1652) v1-5) [v1: a0: control-info ] -> [] + lwu a0, 108(s6) ;; [ 11] (set! a0-2 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu v1, -4(a0) ;; [ 12] (set! v1-6 (l.wu (+ a0-2 -4))) + ;; [a0: control-info ] -> [v1: ] + lwu t9, 100(v1) ;; [ 13] (set! t9-0 (l.wu (+ v1-6 100))) + ;; [v1: ] -> [t9: ] + jalr ra, t9 ;; [ 14] (call! a0-2) + ;; [a0: control-info t9: ] -> [v0: quaternion ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 15] (set! v1-7 v0-0) [v0: quaternion ] -> [v1: quaternion ] + lw t9, set-forward-vel(s7);; [ 16] (set! t9-1 set-forward-vel) [] -> [t9: (function float vector :behavior target) ] + lw v1, *TARGET-bank*(s7) ;; [ 17] (set! v1-8 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 108(v1) ;; [ 18] (set! f0-0 (l.f (+ v1-8 108))) [v1: target-bank ] -> [] + lw v1, *TARGET-bank*(s7) ;; [ 19] (set! v1-9 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f1, 112(v1) ;; [ 20] (set! f1-0 (l.f (+ v1-9 112))) [v1: target-bank ] -> [] + lwu v1, 108(s6) ;; [ 21] (set! v1-10 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lw v1, 1652(v1) ;; [ 22] (set! v1-11 (l.w (+ v1-10 1652))) [v1: control-info ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 23] (set! v1-12 (+ v1-11 -1)) [v1: int ] -> [v1: ] + mtc1 f2, v1 ;; [ 24] (set! f2-0 (gpr->fpr v1-12)) [v1: ] -> [] + cvt.s.w f2, f2 ;; [ 25] (set! f2-1 (i2f f2-0)) [] -> [] + mul.s f1, f1, f2 ;; [ 26] (set! f1-1 (*.s f1-0 f2-1)) [] -> [] + add.s f0, f0, f1 ;; [ 27] (set! f0-1 (+.s f0-0 f1-1)) [] -> [] + mfc1 a0, f0 ;; [ 28] (set! a0-3 (fpr->gpr f0-1)) [] -> [a0: float ] + jalr ra, t9 ;; [ 29] (call! a0-3) + ;; [a0: float t9: (function float vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + lwu v1, 108(s6) ;; [ 30] (set! v1-13 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 1304(v1) ;; [ 31] (set! f0-2 (l.f (+ v1-13 1304))) [v1: control-info ] -> [] + abs.s f0, f0 ;; [ 32] (set! f0-3 (abs.s f0-2)) [] -> [] + lui v1, L751 ;; [ 33] (set! v1-14 L751) [] -> [v1: ] + ori v1, v1, L751 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 34] (set! f1-2 (l.f v1-14)) [v1: ] -> [] + c.lt.s f0, f1 ;; [ 35] (b! (<.s f0-3 f1-2) L51 (set! v1-15 #t)) [] -> [v1: symbol ] + bc1t L51 + daddiu v1, s7, 8 + +B1: + or v1, s7, r0 ;; [ 36] (set! v1-15 #f) [] -> [v1: '#f ] +B2: +L51: + bnel s7, v1, L52 ;; [ 37] (bl! (truthy v1-15) L52 (no-delay!)) [v1: symbol ] -> [] +B3: + or v1, v1, r0 ;; [ 38] (set! v1-16 v1-15) [v1: symbol ] -> [v1: symbol ] + +B4: + lui v1, L751 ;; [ 39] (set! v1-17 L751) [] -> [v1: ] + ori v1, v1, L751 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 40] (set! f0-4 (l.f v1-17)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 41] (set! v1-18 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f1, 1300(v1) ;; [ 42] (set! f1-3 (l.f (+ v1-18 1300))) [v1: control-info ] -> [] + abs.s f1, f1 ;; [ 43] (set! f1-4 (abs.s f1-3)) [] -> [] + c.lt.s f0, f1 ;; [ 44] (b! (<.s f0-4 f1-4) L52 (set! v1-16 #t)) [] -> [v1: symbol ] + bc1t L52 + daddiu v1, s7, 8 + +B5: + or v1, s7, r0 ;; [ 45] (set! v1-16 #f) [] -> [v1: '#f ] +B6: +L52: + beq s7, v1, L53 ;; [ 46] (b! (not v1-16) L53 (set! v1-19 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B7: + lui v1, L786 ;; [ 47] (set! v1-20 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 48] (set! f0-5 (l.f v1-20)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 49] (set! v1-21 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 1724(v1) ;; [ 50] (s.f! (+ v1-21 1724) f0-5) [v1: control-info ] -> [] + mfc1 v1, f0 ;; [ 51] (set! v1-22 (fpr->gpr f0-5)) [] -> [v1: float ] +B8: +L53: + lwu v1, 108(s6) ;; [ 52] (set! v1-23 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw r0, 2180(v1) ;; [ 53] (s.w! (+ v1-23 2180) 0) [v1: control-info ] -> [] + lwu v1, 108(s6) ;; [ 54] (set! v1-24 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw r0, 2184(v1) ;; [ 55] (s.w! (+ v1-24 2184) 0) [v1: control-info ] -> [] + or v0, r0, r0 ;; [ 56] (set! v0-2 0) [] -> [v0: ] + ld ra, 0(sp) + ld fp, 8(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-wheel) + () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self control unknown-surface00) *wheel-mods*) + (+! (-> self control unknown-int50) 1) + (rot->dir-targ! (-> self control)) + (set-forward-vel (+ (-> *TARGET-bank* wheel-speed-min) + (* (-> *TARGET-bank* wheel-speed-inc) (the float (+ (-> self control unknown-int50) -1))) + ) + ) + (if (or (< (fabs (-> self control unknown-float62)) 0.3) (< 0.3 (fabs (-> self control unknown-float61)))) + (set! (-> self control unknown-float81) 1.0) + ) + (set! (-> self control unknown-uint20) (the-as uint 0)) + (set! (-> self control unknown-int21) 0) + 0 + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (event target-wheel) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0xa0, fp? 0 ra? 1 ep? 1 + ;stack_vars: 88 bytes at 8 + ;gprs: gp s5 s4 s3 +;; a0-0: process a1-0: int a2-0: symbol a3-0: event-message-block +L54: + daddiu sp, sp, -160 + sd ra, 0(sp) + sq s3, 96(sp) + sq s4, 112(sp) + sq s5, 128(sp) + sq gp, 144(sp) +B0: + or gp, a0, r0 ;; [ 0] (set! arg0 arg0) [a0: process ] -> [gp: process ] + or s5, a1, r0 ;; [ 1] (set! arg1 arg1) [a1: int ] -> [s5: int ] + or s4, a2, r0 ;; [ 2] (set! arg2 arg2) [a2: symbol ] -> [s4: symbol ] + or s3, a3, r0 ;; [ 3] (set! arg3 arg3) [a3: event-message-block ] -> [s3: event-message-block ] + daddiu v1, s7, touched ;; [ 4] (set! v1-0 'touched) [] -> [v1: symbol ] + bne s4, v1, L55 ;; [ 5] (b! (!= arg2 v1-0) L55 (set! v1-1 #f)) [v1: symbol s4: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B1: + daddiu a1, sp, 16 ;; [ 6] (set! a1-1 (+ sp-0 16)) [sp: ] -> [a1: event-message-block ] + sw s6, 4(a1) ;; [ 7] (s.w! (+ a1-1 4) self) [a1: event-message-block s6: target ] -> [] + sw r0, 8(a1) ;; [ 8] (s.w! (+ a1-1 8) 0) [a1: event-message-block ] -> [] + daddiu v1, s7, roll ;; [ 9] (set! v1-2 'roll) [] -> [v1: symbol ] + sw v1, 12(a1) ;; [ 10] (s.w! (+ a1-1 12) v1-2) [v1: symbol a1: event-message-block ] -> [] + lw t9, send-event-function(s7);; [ 11] (set! t9-0 send-event-function) + ;; [] -> [t9: (function process-tree event-message-block object) ] + or a0, gp, r0 ;; [ 12] (set! a0-1 arg0) [gp: process ] -> [a0: process ] + jalr ra, t9 ;; [ 13] (call! a0-1 a1-1) + ;; [a0: process a1: event-message-block t9: (function process-tree event-message-block object) ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 14] (set! v1-3 v0-0) [v0: object ] -> [v1: object ] +B2: +L55: + lw t9, target-standard-event-handler(s7);; [ 15] (set! t9-1 target-standard-event-handler) + ;; [] -> [t9: (function process int symbol event-message-block object :behavior target) ] + or a0, gp, r0 ;; [ 16] (set! a0-2 arg0) [gp: process ] -> [a0: process ] + or a1, s5, r0 ;; [ 17] (set! a1-2 arg1) [s5: int ] -> [a1: int ] + or a2, s4, r0 ;; [ 18] (set! a2-1 arg2) [s4: symbol ] -> [a2: symbol ] + or a3, s3, r0 ;; [ 19] (set! a3-1 arg3) [s3: event-message-block ] -> [a3: event-message-block ] + jalr ra, t9 ;; [ 20] (call! a0-2 a1-2 a2-1 a3-1) + ;; [a0: process a1: int a2: symbol a3: event-message-block t9: (function process int symbol event-message-block object :behavior target) ] -> [v0: object ] + sll v0, ra, 0 + + ld ra, 0(sp) + lq gp, 144(sp) + lq s5, 128(sp) + lq s4, 112(sp) + lq s3, 96(sp) + jr ra + daddiu sp, sp, 160 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (event target-wheel) + ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (if (= arg2 'touched) + (send-event arg0 'roll) + ) + (target-standard-event-handler arg0 arg1 arg2 arg3) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-flop-hit-ground) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; Warnings: +;; INFO: Return type mismatch object vs none. + +;; a0-0: symbol +L56: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lw t9, target-hit-ground-anim(s7);; [ 0] (set! t9-0 target-hit-ground-anim) + ;; [] -> [t9: (function symbol symbol :behavior target) ] + jalr ra, t9 ;; [ 1] (call! arg0) + ;; [a0: symbol t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + lw t9, enter-state(s7) ;; [ 2] (set! t9-1 enter-state) [] -> [t9: ] + or a0, s7, r0 ;; [ 3] (set! a0-1 #f) [] -> [a0: '#f ] + lw v1, target-falling(s7) ;; [ 4] (set! v1-0 target-falling) [] -> [v1: (state symbol target) ] + sw v1, 72(s6) ;; [ 5] (s.w! (+ self 72) v1-0) [v1: (state symbol target) s6: target ] -> [] + jalr ra, t9 ;; [ 6] (call! a0-1) [a0: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-flop-hit-ground) + ((arg0 symbol)) + (target-hit-ground-anim arg0) + (go target-falling #f) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (trans target-flop-hit-ground) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x50, fp? 1 ra? 1 ep? 1 + ;gprs: gp s5 s4 s3 +;; v1-33: art-joint-anim s6-0: target +L57: + daddiu sp, sp, -80 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s3, 16(sp) + sq s4, 32(sp) + sq s5, 48(sp) + sq gp, 64(sp) +B0: + daddiu v1, s7, stuck ;; [ 0] (set! v1-0 'stuck) [] -> [v1: symbol ] + lwu a0, 108(s6) ;; [ 1] (set! a0-0 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lw a0, 2180(a0) ;; [ 2] (set! a0-1 (l.w (+ a0-0 2180))) [a0: control-info ] -> [a0: spool-anim ] + beq a0, v1, L59 ;; [ 3] (b! (= a0-1 v1-0) L59 (set! v1-1 #f)) [v1: symbol a0: spool-anim ] -> [v1: '#f ] + or v1, s7, r0 + +B1: + lwu v1, 108(s6) ;; [ 4] (set! v1-2 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 5] (set! v1-3 (l.wu (+ v1-2 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 6] (set! v1-4 (l.w (+ v1-3 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 7] (set! v1-5 (sll v1-4 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 8] (set! a0-2 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 9] (set! v1-6 (+ v1-5 a0-2)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 10] (set! v1-7 (l.wu (+ v1-6 4))) [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 11] (set! v1-8 (l.wu (+ v1-7 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 8192 ;; [ 12] (set! v1-9 (logand v1-8 8192)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L58 ;; [ 13] (bl! (zero? v1-9) L58 (no-delay!)) [v1: pad-buttons ] -> [] +B2: + or v1, s7, r0 ;; [ 14] (set! v1-10 #f) [] -> [v1: '#f ] + +B3: + lw t9, can-feet?(s7) ;; [ 15] (set! t9-0 can-feet?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [ 16] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 17] (set! v1-10 v0-0) [v0: symbol ] -> [v1: symbol ] +B4: +L58: + beq s7, v1, L59 ;; [ 18] (b! (not v1-10) L59 (set! v1-11 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B5: + lw t9, enter-state(s7) ;; [ 19] (set! t9-1 enter-state) [] -> [t9: ] + daddiu a0, s7, flop ;; [ 20] (set! a0-3 'flop) [] -> [a0: symbol ] + lw v1, target-attack-air(s7);; [ 21] (set! v1-12 target-attack-air) [] -> [v1: (state symbol target) ] + sw v1, 72(s6) ;; [ 22] (s.w! (+ self 72) v1-12) [v1: (state symbol target) s6: target ] -> [] + jalr ra, t9 ;; [ 23] (call! a0-3) [a0: symbol t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 24] (set! v1-13 v0-1) [v0: object ] -> [v1: object ] +B6: +L59: + lwu v1, 140(s6) ;; [ 25] (set! v1-14 (l.wu (+ self 140))) [s6: target ] -> [v1: fact-info-target ] + lw v1, 36(v1) ;; [ 26] (set! v1-15 (l.w (+ v1-14 36))) [v1: fact-info-target ] -> [v1: pickup-type ] + daddiu v1, v1, -2 ;; [ 27] (set! v1-16 (+ v1-15 -2)) [v1: pickup-type ] -> [v1: ] + daddiu a0, s7, 8 ;; [ 28] (set! a0-4 (zero? v1-16)) [v1: ] -> [a0: symbol ] + movn a0, s7, v1 + beql s7, a0, L60 ;; [ 29] (bl! (not a0-4) L60 (no-delay!)) [a0: symbol ] -> [] +B7: + or v1, a0, r0 ;; [ 30] (set! v1-17 a0-4) [a0: symbol ] -> [v1: symbol ] + +B8: + lwu v1, 140(s6) ;; [ 31] (set! v1-18 (l.wu (+ self 140))) [s6: target ] -> [v1: fact-info-target ] + lwc1 f0, 40(v1) ;; [ 32] (set! f0-0 (l.f (+ v1-18 40))) [v1: fact-info-target ] -> [] + lui v1, L786 ;; [ 33] (set! v1-19 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 34] (set! f1-0 (l.f v1-19)) [v1: ] -> [] + c.lt.s f0, f1 ;; [ 35] (b! (>=.s f0-0 f1-0) L60 (set! v1-17 #t)) [] -> [v1: symbol ] + bc1f L60 + daddiu v1, s7, 8 + +B9: + or v1, s7, r0 ;; [ 36] (set! v1-17 #f) [] -> [v1: '#f ] +B10: +L60: + beql s7, v1, L61 ;; [ 37] (bl! (not v1-17) L61 (no-delay!)) [v1: symbol ] -> [] +B11: + or v1, v1, r0 ;; [ 38] (set! v1-20 v1-17) [v1: symbol ] -> [v1: symbol ] + +B12: + lw v1, *display*(s7) ;; [ 39] (set! v1-21 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 40] (set! v1-22 (l.d (+ v1-21 780))) [v1: display ] -> [v1: time-frame ] + ld a0, 164(s6) ;; [ 41] (set! a0-5 (l.d (+ self 164))) [s6: target ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [ 42] (set! v1-23 (- v1-22 a0-5)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + slti a0, v1, 75 ;; [ 43] (set! v1-20 (<.si v1-23 75)) [v1: time-frame ] -> [v1: symbol ] + daddiu v1, s7, 8 + movz v1, s7, a0 +B13: +L61: + beq s7, v1, L64 ;; [ 44] (b! (not v1-20) L64 (set! v1-24 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B14: + lwu v1, 120(s6) ;; [ 45] (set! v1-25 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu gp, 36(v1) ;; [ 46] (set! gp-0 (l.wu (+ v1-25 36))) [v1: joint-control ] -> [gp: effect-control ] + lwu v1, -4(gp) ;; [ 47] (set! v1-26 (l.wu (+ gp-0 -4))) + ;; [gp: effect-control ] -> [v1: ] + lwu s5, 56(v1) ;; [ 48] (set! s5-0 (l.wu (+ v1-26 56))) + ;; [v1: ] -> [s5: ] + daddiu s4, s7, group-red-eco-spinkick;; [ 49] (set! s4-0 'group-red-eco-spinkick) [] -> [s4: symbol ] + lw t9, ja-frame-num(s7) ;; [ 50] (set! t9-2 ja-frame-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 51] (set! a0-6 0) [] -> [a0: ] + jalr ra, t9 ;; [ 52] (call! a0-6) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + or s3, v0, r0 ;; [ 53] (set! s3-0 v0-2) [v0: float ] -> [s3: float ] + lw t9, rand-vu-percent?(s7);; [ 54] (set! t9-3 rand-vu-percent?) [] -> [t9: (function float symbol) ] + lui v1, L752 ;; [ 55] (set! v1-27 L752) [] -> [v1: ] + ori v1, v1, L752 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 56] (set! a0-7 (l.w v1-27)) [v1: ] -> [a0: int ] + jalr ra, t9 ;; [ 57] (call! a0-7) [a0: int t9: (function float symbol) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L62 ;; [ 58] (b! (not v0-3) L62 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B15: + addiu a3, r0, 23 ;; [ 59] (set! a3-0 23) [] -> [a3: ] + beq r0, r0, L63 ;; [ 60] (b! #t L63 (nop!)) [] -> [] + sll r0, r0, 0 + +B16: +L62: + addiu a3, r0, 17 ;; [ 61] (set! a3-0 17) [] -> [a3: ] +B17: +L63: + or t9, s5, r0 ;; [ 62] (set! t9-4 s5-0) + ;; [s5: ] -> [t9: ] + or a0, gp, r0 ;; [ 63] (set! a0-8 gp-0) [gp: effect-control ] -> [a0: effect-control ] + or a1, s4, r0 ;; [ 64] (set! a1-0 s4-0) [s4: symbol ] -> [a1: symbol ] + or a2, s3, r0 ;; [ 65] (set! a2-0 s3-0) [s3: float ] -> [a2: float ] + jalr ra, t9 ;; [ 66] (call! a0-8 a1-0 a2-0 a3-0) + ;; [a0: effect-control a1: symbol a2: float a3: int t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 67] (set! v1-28 v0-4) [v0: object ] -> [v1: object ] + lw t9, cpad-set-buzz!(s7) ;; [ 68] (set! t9-5 cpad-set-buzz!) + ;; [] -> [t9: (function cpad-info int int time-frame none) ] + lw v1, *cpad-list*(s7) ;; [ 69] (set! v1-29 *cpad-list*) [] -> [v1: cpad-list ] + lwu a0, 4(v1) ;; [ 70] (set! a0-9 (l.wu (+ v1-29 4))) [v1: cpad-list ] -> [a0: cpad-info ] + addiu a1, r0, 1 ;; [ 71] (set! a1-1 1) [] -> [a1: ] + addiu a2, r0, 153 ;; [ 72] (set! a2-1 153) [] -> [a2: ] + addiu a3, r0, 30 ;; [ 73] (set! a3-1 30) [] -> [a3: ] + jalr ra, t9 ;; [ 74] (call! a0-9 a1-1 a2-1 a3-1) + ;; [a0: cpad-info a1: a2: a3: t9: (function cpad-info int int time-frame none) ] -> [v0: none ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 75] (set! v1-30 v0-5) [v0: none ] -> [v1: none ] +B18: +L64: + lwu v1, 120(s6) ;; [ 76] (set! v1-31 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 77] (set! v1-32 (l.w (+ v1-31 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 78] (b! (<=0.si v1-32) L65 (set! v1-33 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L65 + or v1, s7, r0 + +B19: + lwu v1, 120(s6) ;; [ 79] (set! v1-34 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 80] (set! v1-35 (l.wu (+ v1-34 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 81] (set! v1-33 (l.wu (+ v1-35 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B20: +L65: + lwu a0, 116(s6) ;; [ 82] (set! a0-10 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 83] (set! a0-11 (l.wu (+ a0-10 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 288(a0) ;; [ 84] (set! a0-12 (l.wu (+ a0-11 288))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [ 85] (set! a1-2 (= v1-33 a0-12)) [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L66 ;; [ 86] (bl! (truthy a1-2) L66 (no-delay!)) [a1: symbol ] -> [] +B21: + or a0, a1, r0 ;; [ 87] (set! a0-13 a1-2) [a1: symbol ] -> [a0: symbol ] + +B22: + lwu a0, 116(s6) ;; [ 88] (set! a0-14 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 89] (set! a0-15 (l.wu (+ a0-14 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 300(a0) ;; [ 90] (set! a0-16 (l.wu (+ a0-15 300))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 91] (set! a0-13 (= v1-33 a0-16)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 +B23: +L66: + beql s7, a0, L67 ;; [ 92] (bl! (not a0-13) L67 (no-delay!)) [a0: symbol ] -> [] +B24: + or v1, a0, r0 ;; [ 93] (set! v1-36 a0-13) [a0: symbol ] -> [v1: symbol ] + +B25: + lw t9, ja-aframe-num(s7) ;; [ 94] (set! t9-6 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 95] (set! a0-17 0) [] -> [a0: ] + jalr ra, t9 ;; [ 96] (call! a0-17) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 97] (set! f0-1 (gpr->fpr v0-6)) [v0: float ] -> [] + lui v1, L810 ;; [ 98] (set! v1-37 L810) [] -> [v1: ] + ori v1, v1, L810 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 99] (set! f1-1 (l.f v1-37)) [v1: ] -> [] + c.lt.s f0, f1 ;; [100] (b! (>=.s f0-1 f1-1) L67 (set! v1-36 #t)) [] -> [v1: symbol ] + bc1f L67 + daddiu v1, s7, 8 + +B26: + or v1, s7, r0 ;; [101] (set! v1-36 #f) [] -> [v1: '#f ] +B27: +L67: + beq s7, v1, L68 ;; [102] (b! (not v1-36) L68 (set! v1-38 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B28: + lw v1, *flop-land-mods*(s7);; [103] (set! v1-39 *flop-land-mods*) [] -> [v1: surface ] + lwu v1, 144(v1) ;; [104] (set! v1-40 (l.wu (+ v1-39 144))) [v1: surface ] -> [v1: surface-flags ] + ori a0, v1, 1024 ;; [105] (set! a0-18 (logior v1-40 1024)) [v1: surface-flags ] -> [a0: surface-flags ] + lw v1, *flop-land-mods*(s7);; [106] (set! v1-41 *flop-land-mods*) [] -> [v1: surface ] + sw a0, 144(v1) ;; [107] (s.w! (+ v1-41 144) a0-18) [v1: surface a0: surface-flags ] -> [] +B29: +L68: + lw t9, slide-down-test(s7);; [108] (set! t9-7 slide-down-test) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [109] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 64(sp) + lq s5, 48(sp) + lq s4, 32(sp) + lq s3, 16(sp) + jr ra + daddiu sp, sp, 80 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (trans target-flop-hit-ground) + () + (when (!= (-> self control unknown-spoolanim00) 'stuck) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) + (go target-attack-air 'flop) + ) + ) + (when (and (and (= (-> self fact-info-target eco-type) (pickup-type eco-red)) + (>= (-> self fact-info-target eco-level) 1.0) + ) + (< (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.25)) + ) + (dummy-10 + (-> self skel effect) + 'group-red-eco-spinkick + (ja-frame-num 0) + (if (rand-vu-percent? (the-as float 0.5)) + 23 + 17 + ) + ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) + ) + (let ((v1-33 (ja-group))) + (if (and (or (= v1-33 (-> self draw art-group data 65)) (= v1-33 (-> self draw art-group data 68))) + (>= (ja-aframe-num 0) 28.0) + ) + (logior! (-> *flop-land-mods* flags) (surface-flags allow-edge-grab)) + ) + ) + (slide-down-test) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-flop-hit-ground) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x30, fp? 1 ra? 1 ep? 1 + ;stack_vars: 16 bytes at 16 + ;gprs: gp +;; Warnings: +;; INFO: Return type mismatch state-flags vs none. + +;; a0-0: symbol s6-0: target f0-1: float +L69: + daddiu sp, sp, -48 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq gp, 32(sp) +B0: + or gp, a0, r0 ;; [ 0] (set! arg0 arg0) [a0: symbol ] -> [gp: symbol ] + lwu v1, 108(s6) ;; [ 1] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 2] (set! v1-1 (l.wu (+ v1-0 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 3] (set! a0-1 (+ v1-1 28)) [v1: dynamics ] -> [a0: vector ] + daddiu v1, sp, 16 ;; [ 4] (set! v1-2 (+ sp-0 16)) [sp: ] -> [v1: vector ] + lwu a1, 108(s6) ;; [ 5] (set! a1-0 (l.wu (+ self 108))) [s6: target ] -> [a1: control-info ] + daddiu a1, a1, 2332 ;; [ 6] (set! a1-1 (+ a1-0 2332)) [a1: control-info ] -> [a1: vector ] + lwu a2, 108(s6) ;; [ 7] (set! a2-0 (l.wu (+ self 108))) [s6: target ] -> [a2: control-info ] + daddiu a2, a2, 12 ;; [ 8] (set! a2-1 (+ a2-0 12)) [a2: control-info ] -> [a2: vector ] + lqc2 vf4, 0(a1) ;; [ 9] (set! v1-3 (vector-!2 v1-2 a1-1 a2-1)) + ;; [v1: vector a1: vector a2: vector ] -> [v1: vector ] + lqc2 vf5, 0(a2) + vmove.w vf6, vf0 + vsub.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) + lwc1 f0, 0(a0) ;; [ 10] (set! f0-0 (vec3dot a0-1 v1-3)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [ 11] (set! v1-4 (fpr->gpr f0-0)) [] -> [v1: float ] + mtc1 f0, v1 ;; [ 12] (set! f0-1 (gpr->fpr v1-4)) [v1: float ] -> [] + lw v1, *TARGET-bank*(s7) ;; [ 13] (set! v1-5 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f1, 144(v1) ;; [ 14] (set! f1-0 (l.f (+ v1-5 144))) [v1: target-bank ] -> [] + c.lt.s f1, f0 ;; [ 15] (b! (>=.s f1-0 f0-1) L70 (set! v1-6 #f)) [] -> [v1: '#f ] + bc1f L70 + or v1, s7, r0 + +B1: + lw t9, enter-state(s7) ;; [ 16] (set! t9-0 enter-state) [] -> [t9: ] + mfc1 a0, f0 ;; [ 17] (set! a0-2 (fpr->gpr f0-1)) [] -> [a0: float ] + lw v1, target-hit-ground-hard(s7);; [ 18] (set! v1-7 target-hit-ground-hard) [] -> [v1: (state float target) ] + sw v1, 72(s6) ;; [ 19] (s.w! (+ self 72) v1-7) [v1: (state float target) s6: target ] -> [] + jalr ra, t9 ;; [ 20] (call! a0-2) [a0: float t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 21] (set! v1-8 v0-0) [v0: object ] -> [v1: object ] +B2: +L70: + lw t9, target-land-effect(s7);; [ 22] (set! t9-1 target-land-effect) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 23] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, cpad-set-buzz!(s7) ;; [ 24] (set! t9-2 cpad-set-buzz!) + ;; [] -> [t9: (function cpad-info int int time-frame none) ] + lw v1, *cpad-list*(s7) ;; [ 25] (set! v1-9 *cpad-list*) [] -> [v1: cpad-list ] + lwu a0, 4(v1) ;; [ 26] (set! a0-3 (l.wu (+ v1-9 4))) [v1: cpad-list ] -> [a0: cpad-info ] + addiu a1, r0, 1 ;; [ 27] (set! a1-2 1) [] -> [a1: ] + addiu a2, r0, 255 ;; [ 28] (set! a2-2 255) [] -> [a2: ] + addiu a3, r0, 30 ;; [ 29] (set! a3-0 30) [] -> [a3: ] + jalr ra, t9 ;; [ 30] (call! a0-3 a1-2 a2-2 a3-0) + ;; [a0: cpad-info a1: a2: a3: t9: (function cpad-info int int time-frame none) ] -> [v0: none ] + sll v0, ra, 0 + + lw v1, *display*(s7) ;; [ 31] (set! v1-10 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 32] (set! v1-11 (l.d (+ v1-10 780))) [v1: display ] -> [v1: time-frame ] + sd v1, 164(s6) ;; [ 33] (s.d! (+ self 164) v1-11) [v1: time-frame s6: target ] -> [] + lwu v1, 108(s6) ;; [ 34] (set! v1-12 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw gp, 2180(v1) ;; [ 35] (s.w! (+ v1-12 2180) arg0) [v1: control-info gp: symbol ] -> [] + lw t9, set-forward-vel(s7);; [ 36] (set! t9-3 set-forward-vel) [] -> [t9: (function float vector :behavior target) ] + lui v1, L814 ;; [ 37] (set! v1-13 L814) [] -> [v1: ] + ori v1, v1, L814 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 38] (set! a0-4 (l.w v1-13)) [v1: ] -> [a0: int ] + jalr ra, t9 ;; [ 39] (call! a0-4) + ;; [a0: int t9: (function float vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + lw v1, *flop-land-mods*(s7);; [ 40] (set! v1-14 *flop-land-mods*) [] -> [v1: surface ] + lwu a0, 108(s6) ;; [ 41] (set! a0-5 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sw v1, 656(a0) ;; [ 42] (s.w! (+ a0-5 656) v1-14) [v1: surface a0: control-info ] -> [] + addiu v1, r0, -1025 ;; [ 43] (set! v1-15 -1025) [] -> [v1: ] + lw a0, *flop-land-mods*(s7);; [ 44] (set! a0-6 *flop-land-mods*) [] -> [a0: surface ] + lwu a0, 144(a0) ;; [ 45] (set! a0-7 (l.wu (+ a0-6 144))) [a0: surface ] -> [a0: surface-flags ] + and v1, v1, a0 ;; [ 46] (set! v1-16 (logand v1-15 a0-7)) + ;; [v1: a0: surface-flags ] -> [v1: surface-flags ] + lw a0, *flop-land-mods*(s7);; [ 47] (set! a0-8 *flop-land-mods*) [] -> [a0: surface ] + sw v1, 144(a0) ;; [ 48] (s.w! (+ a0-8 144) v1-16) [v1: surface-flags a0: surface ] -> [] + lui v1, 16 ;; [ 49] (set! v1-17 #x100000) [] -> [v1: ] + lwu a0, 160(s6) ;; [ 50] (set! a0-9 (l.wu (+ self 160))) [s6: target ] -> [a0: state-flags ] + or v0, v1, a0 ;; [ 51] (set! v0-4 (logior v1-17 a0-9)) + ;; [v1: a0: state-flags ] -> [v0: state-flags ] + sw v0, 160(s6) ;; [ 52] (s.w! (+ self 160) v0-4) [v0: state-flags s6: target ] -> [] + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 32(sp) + jr ra + daddiu sp, sp, 48 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-flop-hit-ground) + ((arg0 symbol)) + (let ((f0-1 (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector111) (-> self control trans)) + ) + ) + ) + (if (< (-> *TARGET-bank* fall-far) f0-1) + (go target-hit-ground-hard f0-1) + ) + ) + (target-land-effect) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.1)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self control unknown-uint20) (the-as uint arg0)) + (set-forward-vel (the-as float 0.0)) + (set! (-> self control unknown-surface00) *flop-land-mods*) + (logclear! (-> *flop-land-mods* flags) (surface-flags allow-edge-grab)) + (set! (-> self state-flags) (logior (state-flags flop-hit-ground) (-> self state-flags))) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (event target-flop-hit-ground) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; a0-0: process a1-0: int a2-0: symbol a3-0: event-message-block +L71: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + or v1, a2, r0 ;; [ 0] (set! v1-0 arg2) [a2: symbol ] -> [v1: symbol ] + daddiu t0, s7, swim ;; [ 1] (set! t0-0 'swim) [] -> [t0: symbol ] + bne v1, t0, L72 ;; [ 2] (b! (!= v1-0 t0-0) L72 (nop!)) [v1: symbol t0: symbol ] -> [] + sll r0, r0, 0 + +B1: + or v0, s7, r0 ;; [ 3] (set! v0-0 #f) [] -> [v0: '#f ] + beq r0, r0, L73 ;; [ 4] (b! #t L73 (nop!)) [] -> [] + sll r0, r0, 0 + +B2: +L72: + lw t9, target-standard-event-handler(s7);; [ 5] (set! t9-0 target-standard-event-handler) + ;; [] -> [t9: (function process int symbol event-message-block object :behavior target) ] + jalr ra, t9 ;; [ 6] (call! arg0 arg1 arg2 arg3) + ;; [a0: process a1: int a2: symbol a3: event-message-block t9: (function process int symbol event-message-block object :behavior target) ] -> [v0: object ] + sll v0, ra, 0 + +B3: +L73: + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (event target-flop-hit-ground) + ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('swim) + #f + ) + (else + (target-standard-event-handler arg0 arg1 arg2 arg3) + ) + ) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-flop) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x60, fp? 1 ra? 1 ep? 1 + ;stack_vars: 48 bytes at 16 + ;gprs: gp + ;fprs: f30 f28 +;; Warnings: +;; Used lq/sq + +;; s6-0: target gp-3: vector gp-4: vector gp-6: vector f0-18: float f0-19: float f0-22: float f0-23: float +;; f0-34: float f1-1: float f1-3: float f1-5: float f2-0: float f2-2: float f28-0: float f30-0: float +L74: + daddiu sp, sp, -96 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq gp, 64(sp) + swc1 f28, 80(sp) + swc1 f30, 84(sp) +B0: + lw t9, ja-channel-set!(s7);; [ 0] (set! t9-0 ja-channel-set!) + ;; [] -> [t9: (function int int :behavior process-drawable) ] + addiu a0, r0, 2 ;; [ 1] (set! a0-1 2) [] -> [a0: ] + jalr ra, t9 ;; [ 2] (call! a0-1) + ;; [a0: t9: (function int int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [ 3] (set! v1-0 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 4] (set! v1-1 (l.wu (+ v1-0 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 5] (set! a0-2 (+ v1-1 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 6] (set! v1-2 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 7] (set! v1-3 (l.wu (+ v1-2 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 280(v1) ;; [ 8] (set! v1-4 (l.wu (+ v1-3 280))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [ 9] (s.w! (+ a0-2 12) v1-4) [v1: art-element a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [ 10] (set! v1-5 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 11] (set! v1-6 (l.wu (+ v1-5 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 280(v1) ;; [ 12] (set! v1-7 (l.wu (+ v1-6 280))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 13] (set! (the-as art-joint-anim v1-8) (l.wu (+ v1-7 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 14] (set! v1-9 (l.h (+ v1-8 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 15] (set! v1-10 (+ v1-9 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 16] (set! f0-0 (gpr->fpr v1-10)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 17] (set! f0-1 (i2f f0-0)) [] -> [] + swc1 f0, 24(a0) ;; [ 18] (s.f! (+ a0-2 24) f0-1) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [ 19] (set! v1-11 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 20] (set! f0-2 (l.f v1-11)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [ 21] (s.f! (+ a0-2 28) f0-2) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [ 22] (set! f0-3 0) [] -> [] + swc1 f0, 16(a0) ;; [ 23] (s.f! (+ a0-2 16) f0-3) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [ 24] (set! t9-1 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [ 25] (set! v1-12 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 26] (set! v1-13 (l.wu (+ v1-12 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 280(v1) ;; [ 27] (set! a1-1 (l.wu (+ v1-13 280))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [ 28] (set! a2-1 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 29] (call! a0-2 a1-1 a2-1) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 30] (set! v1-14 v0-1) [v0: int ] -> [v1: int ] + lwu v1, 120(s6) ;; [ 31] (set! v1-15 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 32] (set! v1-16 (l.wu (+ v1-15 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu a0, v1, 48 ;; [ 33] (set! a0-3 (+ v1-16 48)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 34] (set! v1-17 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 35] (set! v1-18 (l.wu (+ v1-17 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 292(v1) ;; [ 36] (set! v1-19 (l.wu (+ v1-18 292))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [ 37] (s.w! (+ a0-3 12) v1-19) [v1: art-element a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [ 38] (set! f0-4 0) [] -> [] + swc1 f0, 24(a0) ;; [ 39] (s.f! (+ a0-3 24) f0-4) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [ 40] (set! f0-5 0) [] -> [] + swc1 f0, 16(a0) ;; [ 41] (s.f! (+ a0-3 16) f0-5) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 42] (set! t9-2 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [ 43] (set! v1-20 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 44] (set! v1-21 (l.wu (+ v1-20 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 292(v1) ;; [ 45] (set! a1-2 (l.wu (+ v1-21 292))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-chan(s7) ;; [ 46] (set! a2-2 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 47] (call! a0-3 a1-2 a2-2) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 48] (set! v1-22 v0-2) [v0: int ] -> [v1: int ] +B1: +L75: + lwu s6, 44(s6) ;; [ 49] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [ 50] (set! v1-23 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 51] (set! v1-24 (l.wu (+ v1-23 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 52] (set! a0-4 (+ v1-24 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [ 53] (set! v1-25 (l.wu (+ a0-4 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 54] (set! v1-26 (l.wu (+ v1-25 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 55] (set! v1-27 (l.h (+ v1-26 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 56] (set! v1-28 (+ v1-27 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 57] (set! f0-6 (gpr->fpr v1-28)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 58] (set! f0-7 (i2f f0-6)) [] -> [] + swc1 f0, 24(a0) ;; [ 59] (s.f! (+ a0-4 24) f0-7) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [ 60] (set! v1-29 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 61] (set! f0-8 (l.f v1-29)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [ 62] (s.f! (+ a0-4 28) f0-8) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 63] (set! t9-3 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [ 64] (set! a1-3 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [ 65] (set! a2-3 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 66] (call! a0-4 a1-3 a2-3) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 67] (set! v1-30 v0-3) [v0: int ] -> [v1: int ] + lwu v1, 120(s6) ;; [ 68] (set! v1-31 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 69] (set! v1-32 (l.wu (+ v1-31 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu gp, v1, 48 ;; [ 70] (set! gp-0 (+ v1-32 48)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lw t9, lerp-scale(s7) ;; [ 71] (set! t9-4 lerp-scale) [] -> [t9: (function float float float float float float) ] + lui v1, L814 ;; [ 72] (set! v1-33 L814) [] -> [v1: ] + ori v1, v1, L814 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 73] (set! a0-5 (l.w v1-33)) [v1: ] -> [a0: int ] + lui v1, L786 ;; [ 74] (set! v1-34 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw a1, 0(v1) ;; [ 75] (set! a1-4 (l.w v1-34)) [v1: ] -> [a1: int ] + lwu v1, 108(s6) ;; [ 76] (set! v1-35 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 528(v1) ;; [ 77] (set! f0-9 (l.f (+ v1-35 528))) [v1: control-info ] -> [] + mfc1 a2, f0 ;; [ 78] (set! a2-4 (fpr->gpr f0-9)) [] -> [a2: float ] + lui v1, L814 ;; [ 79] (set! v1-36 L814) [] -> [v1: ] + ori v1, v1, L814 + addu v1, fp, v1 + lw a3, 0(v1) ;; [ 80] (set! a3-0 (l.w v1-36)) [v1: ] -> [a3: int ] + lui v1, L732 ;; [ 81] (set! v1-37 L732) [] -> [v1: ] + ori v1, v1, L732 + addu v1, fp, v1 + lw t0, 0(v1) ;; [ 82] (set! t0-0 (l.w v1-37)) [v1: ] -> [t0: int ] + jalr ra, t9 ;; [ 83] (call! a0-5 a1-4 a2-4 a3-0 t0-0) + ;; [a0: int a1: int a2: float a3: int t0: int t9: (function float float float float float float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 84] (set! f0-10 (gpr->fpr v0-4)) [v0: float ] -> [] + swc1 f0, 8(gp) ;; [ 85] (s.f! (+ gp-0 8) f0-10) [gp: joint-control-channel ] -> [] + lwu v1, 12(gp) ;; [ 86] (set! v1-38 (l.wu (+ gp-0 12))) + ;; [gp: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 87] (set! v1-39 (l.wu (+ v1-38 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 88] (set! v1-40 (l.h (+ v1-39 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 89] (set! v1-41 (+ v1-40 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 90] (set! f0-11 (gpr->fpr v1-41)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 91] (set! f0-12 (i2f f0-11)) [] -> [] + swc1 f0, 24(gp) ;; [ 92] (s.f! (+ gp-0 24) f0-12) [gp: joint-control-channel ] -> [] + lui v1, L786 ;; [ 93] (set! v1-42 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 94] (set! f0-13 (l.f v1-42)) [v1: ] -> [] + swc1 f0, 28(gp) ;; [ 95] (s.f! (+ gp-0 28) f0-13) [gp: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 96] (set! t9-5 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [ 97] (set! a1-5 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [ 98] (set! a2-5 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, gp, r0 ;; [ 99] (set! a0-6 gp-0) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [100] (call! a0-6 a1-5 a2-5) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [101] (set! v1-43 v0-5) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [102] (set! t9-6 ja-done?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [103] (set! a0-7 0) [] -> [a0: ] + jalr ra, t9 ;; [104] (call! a0-7) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L75 ;; [105] (b! (not v0-6) L75 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B2: + or v1, s7, r0 ;; [106] (set! v1-44 #f) [] -> [v1: '#f ] + lwu v1, 108(s6) ;; [107] (set! v1-45 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 652(v1) ;; [108] (set! v1-46 (l.wu (+ v1-45 652))) [v1: control-info ] -> [v1: dynamics ] + lwc1 f0, 8(v1) ;; [109] (set! f0-14 (l.f (+ v1-46 8))) [v1: dynamics ] -> [] + lwu v1, 108(s6) ;; [110] (set! v1-47 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [111] (set! v1-48 (l.wu (+ v1-47 432))) [v1: control-info ] -> [v1: dynamics ] + swc1 f0, 8(v1) ;; [112] (s.f! (+ v1-48 8) f0-14) [v1: dynamics ] -> [] + lwu v1, 108(s6) ;; [113] (set! v1-49 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [114] (set! v1-50 (l.wu (+ v1-49 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu v1, v1, 12 ;; [115] (set! v1-51 (+ v1-50 12)) [v1: dynamics ] -> [v1: vector ] + lwu a0, 108(s6) ;; [116] (set! a0-8 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 652(a0) ;; [117] (set! a0-9 (l.wu (+ a0-8 652))) [a0: control-info ] -> [a0: dynamics ] + daddiu a0, a0, 12 ;; [118] (set! a0-10 (+ a0-9 12)) [a0: dynamics ] -> [a0: vector ] + lq a0, 0(a0) ;; [119] (set! a0-11 (l.q a0-10)) [a0: vector ] -> [a0: uint128 ] + sq a0, 0(v1) ;; [120] (s.q! v1-51 a0-11) [v1: vector a0: uint128 ] -> [] + lw t9, target-danger-set!(s7);; [121] (set! t9-7 target-danger-set!) + ;; [] -> [t9: (function symbol symbol float :behavior target) ] + daddiu a0, s7, flop-down ;; [122] (set! a0-12 'flop-down) [] -> [a0: symbol ] + or a1, s7, r0 ;; [123] (set! a1-6 #f) [] -> [a1: '#f ] + jalr ra, t9 ;; [124] (call! a0-12 a1-6) + ;; [a0: symbol a1: '#f t9: (function symbol symbol float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [125] (set! v1-52 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [126] (set! v1-53 (l.wu (+ v1-52 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu gp, r0, v1 ;; [127] (set! gp-1 (+ v1-53 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lw t9, joint-control-channel-group-eval!(s7);; [128] (set! t9-8 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a0, gp, r0 ;; [129] (set! a0-13 gp-1) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [130] (set! v1-54 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [131] (set! v1-55 (l.wu (+ v1-54 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 284(v1) ;; [132] (set! a1-7 (l.wu (+ v1-55 284))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-identity(s7);; [133] (set! a2-6 num-func-identity) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [134] (call! a0-13 a1-7 a2-6) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + mtc1 f0, r0 ;; [135] (set! f0-15 0) [] -> [] + swc1 f0, 16(gp) ;; [136] (s.f! (+ gp-1 16) f0-15) [gp: joint-control-channel ] -> [] + mfc1 v1, f0 ;; [137] (set! v1-56 (fpr->gpr f0-15)) [] -> [v1: float ] + lwu v1, 120(s6) ;; [138] (set! v1-57 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [139] (set! v1-58 (l.wu (+ v1-57 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu gp, v1, 48 ;; [140] (set! gp-2 (+ v1-58 48)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lw t9, joint-control-channel-group-eval!(s7);; [141] (set! t9-9 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a0, gp, r0 ;; [142] (set! a0-14 gp-2) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [143] (set! v1-59 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [144] (set! v1-60 (l.wu (+ v1-59 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 296(v1) ;; [145] (set! a1-8 (l.wu (+ v1-60 296))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-identity(s7);; [146] (set! a2-7 num-func-identity) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [147] (call! a0-14 a1-8 a2-7) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + mtc1 f0, r0 ;; [148] (set! f0-16 0) [] -> [] + swc1 f0, 16(gp) ;; [149] (s.f! (+ gp-2 16) f0-16) [gp: joint-control-channel ] -> [] + mfc1 v1, f0 ;; [150] (set! v1-61 (fpr->gpr f0-16)) [] -> [v1: float ] + lui v1, L786 ;; [151] (set! v1-62 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f30, 0(v1) ;; [152] (set! f30-0 (l.f v1-62)) [v1: ] -> [] + daddiu gp, sp, 16 ;; [153] (set! gp-3 (+ sp-0 16)) [sp: ] -> [gp: vector ] + sq r0, 0(gp) ;; [154] (s.q! gp-3 0) [gp: vector ] -> [] + lwu v1, 108(s6) ;; [155] (set! v1-63 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [156] (set! v1-64 (l.wu (+ v1-63 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [157] (set! a0-15 (+ v1-64 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [158] (set! v1-65 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 18924 ;; [159] (set! v1-66 (+ v1-65 #x49ec)) [v1: control-info ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [160] (set! f0-17 (vec3dot a0-15 v1-66)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [161] (set! v1-67 (fpr->gpr f0-17)) [] -> [v1: float ] + mtc1 f0, v1 ;; [162] (set! f0-18 (gpr->fpr v1-67)) [v1: float ] -> [] + mtc1 f1, r0 ;; [163] (set! f1-0 0) [] -> [] + or v1, gp, r0 ;; [164] (set! v1-68 gp-3) [gp: vector ] -> [v1: vector ] + lwu a0, 108(s6) ;; [165] (set! a0-16 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + daddiu a0, a0, 18924 ;; [166] (set! a0-17 (+ a0-16 #x49ec)) [a0: control-info ] -> [a0: vector ] + or a1, gp, r0 ;; [167] (set! a1-9 gp-3) [gp: vector ] -> [a1: vector ] + lwu a2, 108(s6) ;; [168] (set! a2-8 (l.wu (+ self 108))) [s6: target ] -> [a2: control-info ] + lwu a2, 432(a2) ;; [169] (set! a2-9 (l.wu (+ a2-8 432))) [a2: control-info ] -> [a2: dynamics ] + daddiu a2, a2, 28 ;; [170] (set! a2-10 (+ a2-9 28)) [a2: dynamics ] -> [a2: vector ] + lqc2 vf1, 0(a2) ;; [171] (set! a1-10 (vector-float*!2 a1-9 a2-10 f0-18)) + ;; [a1: vector a2: vector ] -> [a1: vector ] + mfc1 a2, f0 + qmtc2.i vf2, a2 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a1) + lqc2 vf4, 0(a0) ;; [172] (set! v1-69 (vector-!2 v1-68 a0-17 a1-10)) + ;; [v1: vector a0: vector a1: vector ] -> [v1: vector ] + lqc2 vf5, 0(a1) + vmove.w vf6, vf0 + vsub.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) + lw t9, vector-length(s7) ;; [173] (set! t9-10 vector-length) [] -> [t9: (function vector float) ] + or a0, gp, r0 ;; [174] (set! a0-18 gp-3) [gp: vector ] -> [a0: vector ] + jalr ra, t9 ;; [175] (call! a0-18) [a0: vector t9: (function vector float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [176] (set! f0-19 (gpr->fpr v0-10)) [v0: float ] -> [] + mov.s f1, f0 ;; [177] (set! f1-1 f0-19) [] -> [] + lui v1, L812 ;; [178] (set! v1-70 L812) [] -> [v1: ] + ori v1, v1, L812 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [179] (set! f2-0 (l.f v1-70)) [v1: ] -> [] + lwu v1, 108(s6) ;; [180] (set! v1-71 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 18924 ;; [181] (set! v1-72 (+ v1-71 #x49ec)) [v1: control-info ] -> [v1: vector ] + lwu a0, 108(s6) ;; [182] (set! a0-19 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + daddiu a0, a0, 18924 ;; [183] (set! a0-20 (+ a0-19 #x49ec)) [a0: control-info ] -> [a0: vector ] + lwu a1, 108(s6) ;; [184] (set! a1-11 (l.wu (+ self 108))) [s6: target ] -> [a1: control-info ] + lwu a1, 432(a1) ;; [185] (set! a1-12 (l.wu (+ a1-11 432))) [a1: control-info ] -> [a1: dynamics ] + daddiu a1, a1, 28 ;; [186] (set! a1-13 (+ a1-12 28)) [a1: dynamics ] -> [a1: vector ] + lqc2 vf1, 0(a1) ;; [187] (set! a0-21 (vector-float*!2 a0-20 a1-13 f2-0)) + ;; [a0: vector a1: vector ] -> [a0: vector ] + mfc1 a1, f2 + qmtc2.i vf2, a1 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a0) + or a1, gp, r0 ;; [188] (set! a1-14 gp-3) [gp: vector ] -> [a1: vector ] + div.s f0, f0, f1 ;; [189] (set! f0-20 (/.s f0-19 f1-1)) [] -> [] + lqc2 vf1, 0(gp) ;; [190] (set! a1-15 (vector-float*!2 a1-14 gp-3 f0-20)) + ;; [a1: vector gp: vector ] -> [a1: vector ] + mfc1 a2, f0 + qmtc2.i vf2, a2 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a1) + vmove.w vf6, vf0 ;; [191] (set! v1-73 (vector+!2 v1-72 a0-21 a1-15)) + ;; [v1: vector a0: vector a1: vector ] -> [v1: vector ] + lqc2 vf4, 0(a0) + lqc2 vf5, 0(a1) + vadd.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) + daddiu gp, sp, 32 ;; [192] (set! gp-4 (+ sp-0 32)) [sp: ] -> [gp: vector ] + sq r0, 0(gp) ;; [193] (s.q! gp-4 0) [gp: vector ] -> [] + lwu v1, 108(s6) ;; [194] (set! v1-74 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [195] (set! v1-75 (l.wu (+ v1-74 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [196] (set! a0-22 (+ v1-75 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [197] (set! v1-76 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [198] (set! v1-77 (+ v1-76 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [199] (set! f0-21 (vec3dot a0-22 v1-77)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [200] (set! v1-78 (fpr->gpr f0-21)) [] -> [v1: float ] + mtc1 f0, v1 ;; [201] (set! f0-22 (gpr->fpr v1-78)) [v1: float ] -> [] + mtc1 f1, r0 ;; [202] (set! f1-2 0) [] -> [] + or v1, gp, r0 ;; [203] (set! v1-79 gp-4) [gp: vector ] -> [v1: vector ] + lwu a0, 108(s6) ;; [204] (set! a0-23 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + daddiu a0, a0, 60 ;; [205] (set! a0-24 (+ a0-23 60)) [a0: control-info ] -> [a0: vector ] + or a1, gp, r0 ;; [206] (set! a1-16 gp-4) [gp: vector ] -> [a1: vector ] + lwu a2, 108(s6) ;; [207] (set! a2-11 (l.wu (+ self 108))) [s6: target ] -> [a2: control-info ] + lwu a2, 432(a2) ;; [208] (set! a2-12 (l.wu (+ a2-11 432))) [a2: control-info ] -> [a2: dynamics ] + daddiu a2, a2, 28 ;; [209] (set! a2-13 (+ a2-12 28)) [a2: dynamics ] -> [a2: vector ] + lqc2 vf1, 0(a2) ;; [210] (set! a1-17 (vector-float*!2 a1-16 a2-13 f0-22)) + ;; [a1: vector a2: vector ] -> [a1: vector ] + mfc1 a2, f0 + qmtc2.i vf2, a2 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a1) + lqc2 vf4, 0(a0) ;; [211] (set! v1-80 (vector-!2 v1-79 a0-24 a1-17)) + ;; [v1: vector a0: vector a1: vector ] -> [v1: vector ] + lqc2 vf5, 0(a1) + vmove.w vf6, vf0 + vsub.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) + lw t9, vector-length(s7) ;; [212] (set! t9-11 vector-length) [] -> [t9: (function vector float) ] + or a0, gp, r0 ;; [213] (set! a0-25 gp-4) [gp: vector ] -> [a0: vector ] + jalr ra, t9 ;; [214] (call! a0-25) [a0: vector t9: (function vector float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [215] (set! f0-23 (gpr->fpr v0-11)) [v0: float ] -> [] + mov.s f1, f0 ;; [216] (set! f1-3 f0-23) [] -> [] + lui v1, L812 ;; [217] (set! v1-81 L812) [] -> [v1: ] + ori v1, v1, L812 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [218] (set! f2-1 (l.f v1-81)) [v1: ] -> [] + mul.s f2, f2, f30 ;; [219] (set! f2-2 (*.s f2-1 f30-0)) [] -> [] + lwu v1, 108(s6) ;; [220] (set! v1-82 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [221] (set! v1-83 (+ v1-82 60)) [v1: control-info ] -> [v1: vector ] + lwu a0, 108(s6) ;; [222] (set! a0-26 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + daddiu a0, a0, 60 ;; [223] (set! a0-27 (+ a0-26 60)) [a0: control-info ] -> [a0: vector ] + lwu a1, 108(s6) ;; [224] (set! a1-18 (l.wu (+ self 108))) [s6: target ] -> [a1: control-info ] + lwu a1, 432(a1) ;; [225] (set! a1-19 (l.wu (+ a1-18 432))) [a1: control-info ] -> [a1: dynamics ] + daddiu a1, a1, 28 ;; [226] (set! a1-20 (+ a1-19 28)) [a1: dynamics ] -> [a1: vector ] + lqc2 vf1, 0(a1) ;; [227] (set! a0-28 (vector-float*!2 a0-27 a1-20 f2-2)) + ;; [a0: vector a1: vector ] -> [a0: vector ] + mfc1 a1, f2 + qmtc2.i vf2, a1 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a0) + or a1, gp, r0 ;; [228] (set! a1-21 gp-4) [gp: vector ] -> [a1: vector ] + div.s f0, f0, f1 ;; [229] (set! f0-24 (/.s f0-23 f1-3)) [] -> [] + lqc2 vf1, 0(gp) ;; [230] (set! a1-22 (vector-float*!2 a1-21 gp-4 f0-24)) + ;; [a1: vector gp: vector ] -> [a1: vector ] + mfc1 a2, f0 + qmtc2.i vf2, a2 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a1) + vmove.w vf6, vf0 ;; [231] (set! v1-84 (vector+!2 v1-83 a0-28 a1-22)) + ;; [v1: vector a0: vector a1: vector ] -> [v1: vector ] + lqc2 vf4, 0(a0) + lqc2 vf5, 0(a1) + vadd.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) + lwu s6, 44(s6) ;; [232] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + +B3: +L76: + lwu v1, 108(s6) ;; [233] (set! v1-85 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 2180(v1) ;; [234] (set! v1-86 (l.wu (+ v1-85 2180))) [v1: control-info ] -> [v1: uint ] + daddiu v1, v1, 1 ;; [235] (set! v1-87 (+ v1-86 1)) [v1: uint ] -> [v1: ] + lwu a0, 108(s6) ;; [236] (set! a0-29 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sw v1, 2180(a0) ;; [237] (s.w! (+ a0-29 2180) v1-87) [v1: a0: control-info ] -> [] + lwu v1, 120(s6) ;; [238] (set! v1-88 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [239] (set! v1-89 (l.wu (+ v1-88 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [240] (set! a0-30 (+ v1-89 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lui v1, L786 ;; [241] (set! v1-90 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [242] (set! f0-25 (l.f v1-90)) [v1: ] -> [] + swc1 f0, 24(a0) ;; [243] (s.f! (+ a0-30 24) f0-25) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [244] (set! t9-12 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [245] (set! a1-23 #f) [] -> [a1: '#f ] + lw a2, num-func-+!(s7) ;; [246] (set! a2-14 num-func-+!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [247] (call! a0-30 a1-23 a2-14) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [248] (set! v1-91 v0-12) [v0: int ] -> [v1: int ] + lwu v1, 120(s6) ;; [249] (set! v1-92 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [250] (set! v1-93 (l.wu (+ v1-92 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu gp, v1, 48 ;; [251] (set! gp-5 (+ v1-93 48)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lw t9, lerp-scale(s7) ;; [252] (set! t9-13 lerp-scale) + ;; [] -> [t9: (function float float float float float float) ] + lui v1, L814 ;; [253] (set! v1-94 L814) [] -> [v1: ] + ori v1, v1, L814 + addu v1, fp, v1 + lw a0, 0(v1) ;; [254] (set! a0-31 (l.w v1-94)) [v1: ] -> [a0: int ] + lui v1, L786 ;; [255] (set! v1-95 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw a1, 0(v1) ;; [256] (set! a1-24 (l.w v1-95)) [v1: ] -> [a1: int ] + lwu v1, 108(s6) ;; [257] (set! v1-96 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 528(v1) ;; [258] (set! f0-26 (l.f (+ v1-96 528))) [v1: control-info ] -> [] + mfc1 a2, f0 ;; [259] (set! a2-15 (fpr->gpr f0-26)) [] -> [a2: float ] + lui v1, L814 ;; [260] (set! v1-97 L814) [] -> [v1: ] + ori v1, v1, L814 + addu v1, fp, v1 + lw a3, 0(v1) ;; [261] (set! a3-1 (l.w v1-97)) [v1: ] -> [a3: int ] + lui v1, L732 ;; [262] (set! v1-98 L732) [] -> [v1: ] + ori v1, v1, L732 + addu v1, fp, v1 + lw t0, 0(v1) ;; [263] (set! t0-1 (l.w v1-98)) [v1: ] -> [t0: int ] + jalr ra, t9 ;; [264] (call! a0-31 a1-24 a2-15 a3-1 t0-1) + ;; [a0: int a1: int a2: float a3: int t0: int t9: (function float float float float float float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [265] (set! f0-27 (gpr->fpr v0-13)) [v0: float ] -> [] + swc1 f0, 8(gp) ;; [266] (s.f! (+ gp-5 8) f0-27) [gp: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [267] (set! f0-28 0) [] -> [] + swc1 f0, 24(gp) ;; [268] (s.f! (+ gp-5 24) f0-28) [gp: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [269] (set! t9-14 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [270] (set! a1-25 #f) [] -> [a1: '#f ] + lw a2, num-func-chan(s7) ;; [271] (set! a2-16 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, gp, r0 ;; [272] (set! a0-32 gp-5) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [273] (call! a0-32 a1-25 a2-16) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [274] (set! v1-99 v0-14) [v0: int ] -> [v1: int ] + lui v1, L786 ;; [275] (set! v1-100 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [276] (set! f0-29 (l.f v1-100)) [v1: ] -> [] + lwu v1, 108(s6) ;; [277] (set! v1-101 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f1, 18940(v1) ;; [278] (set! f1-4 (l.f (+ v1-101 #x49fc))) [v1: control-info ] -> [] + min.s f0, f0, f1 ;; [279] (set! f0-30 (min.s f0-29 f1-4)) [] -> [] + mul.s f30, f30, f0 ;; [280] (set! f30-0 (*.s f30-0 f0-30)) [] -> [] + daddiu gp, sp, 48 ;; [281] (set! gp-6 (+ sp-0 48)) [sp: ] -> [gp: vector ] + sq r0, 0(gp) ;; [282] (s.q! gp-6 0) [gp: vector ] -> [] + lwu v1, 108(s6) ;; [283] (set! v1-102 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [284] (set! v1-103 (l.wu (+ v1-102 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [285] (set! a0-33 (+ v1-103 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [286] (set! v1-104 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [287] (set! v1-105 (+ v1-104 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [288] (set! f0-31 (vec3dot a0-33 v1-105)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [289] (set! v1-106 (fpr->gpr f0-31)) [] -> [v1: float ] + mtc1 f28, v1 ;; [290] (set! f28-0 (gpr->fpr v1-106)) [v1: float ] -> [] + mtc1 f0, r0 ;; [291] (set! f0-32 0) [] -> [] + or v1, gp, r0 ;; [292] (set! v1-107 gp-6) [gp: vector ] -> [v1: vector ] + lwu a0, 108(s6) ;; [293] (set! a0-34 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + daddiu a0, a0, 60 ;; [294] (set! a0-35 (+ a0-34 60)) [a0: control-info ] -> [a0: vector ] + or a1, gp, r0 ;; [295] (set! a1-26 gp-6) [gp: vector ] -> [a1: vector ] + lwu a2, 108(s6) ;; [296] (set! a2-17 (l.wu (+ self 108))) [s6: target ] -> [a2: control-info ] + lwu a2, 432(a2) ;; [297] (set! a2-18 (l.wu (+ a2-17 432))) [a2: control-info ] -> [a2: dynamics ] + daddiu a2, a2, 28 ;; [298] (set! a2-19 (+ a2-18 28)) [a2: dynamics ] -> [a2: vector ] + mov.s f0, f28 ;; [299] (set! f0-33 f28-0) [] -> [] + lqc2 vf1, 0(a2) ;; [300] (set! a1-27 (vector-float*!2 a1-26 a2-19 f0-33)) + ;; [a1: vector a2: vector ] -> [a1: vector ] + mfc1 a2, f0 + qmtc2.i vf2, a2 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a1) + lqc2 vf4, 0(a0) ;; [301] (set! v1-108 (vector-!2 v1-107 a0-35 a1-27)) + ;; [v1: vector a0: vector a1: vector ] -> [v1: vector ] + lqc2 vf5, 0(a1) + vmove.w vf6, vf0 + vsub.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) + lw t9, vector-length(s7) ;; [302] (set! t9-15 vector-length) [] -> [t9: (function vector float) ] + or a0, gp, r0 ;; [303] (set! a0-36 gp-6) [gp: vector ] -> [a0: vector ] + jalr ra, t9 ;; [304] (call! a0-36) [a0: vector t9: (function vector float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f1, v0 ;; [305] (set! f1-5 (gpr->fpr v0-15)) [v0: float ] -> [] + mov.s f0, f1 ;; [306] (set! f0-34 f1-5) [] -> [] + lwu v1, 108(s6) ;; [307] (set! v1-109 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 660(v1) ;; [308] (set! v1-110 (l.wu (+ v1-109 660))) [v1: control-info ] -> [v1: surface ] + lwc1 f2, 20(v1) ;; [309] (set! f2-3 (l.f (+ v1-110 20))) [v1: surface ] -> [] + c.lt.s f2, f1 ;; [310] (b! (>=.s f2-3 f1-5) L77 (set! v1-111 #f)) [] -> [v1: '#f ] + bc1f L77 + or v1, s7, r0 + +B4: + lwu v1, 108(s6) ;; [311] (set! v1-112 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 660(v1) ;; [312] (set! v1-113 (l.wu (+ v1-112 660))) [v1: control-info ] -> [v1: surface ] + lwc1 f1, 20(v1) ;; [313] (set! f1-5 (l.f (+ v1-113 20))) [v1: surface ] -> [] + mfc1 v1, f1 ;; [314] (set! v1-114 (fpr->gpr f1-5)) [] -> [v1: float ] +B5: +L77: + lwu v1, 108(s6) ;; [315] (set! v1-115 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [316] (set! v1-116 (+ v1-115 60)) [v1: control-info ] -> [v1: vector ] + lwu a0, 108(s6) ;; [317] (set! a0-37 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + daddiu a0, a0, 60 ;; [318] (set! a0-38 (+ a0-37 60)) [a0: control-info ] -> [a0: vector ] + lwu a1, 108(s6) ;; [319] (set! a1-28 (l.wu (+ self 108))) [s6: target ] -> [a1: control-info ] + lwu a1, 432(a1) ;; [320] (set! a1-29 (l.wu (+ a1-28 432))) [a1: control-info ] -> [a1: dynamics ] + daddiu a1, a1, 28 ;; [321] (set! a1-30 (+ a1-29 28)) [a1: dynamics ] -> [a1: vector ] + lqc2 vf1, 0(a1) ;; [322] (set! a0-39 (vector-float*!2 a0-38 a1-30 f28-0)) + ;; [a0: vector a1: vector ] -> [a0: vector ] + mfc1 a1, f28 + qmtc2.i vf2, a1 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a0) + or a1, gp, r0 ;; [323] (set! a1-31 gp-6) [gp: vector ] -> [a1: vector ] + div.s f0, f1, f0 ;; [324] (set! f0-35 (/.s f1-5 f0-34)) [] -> [] + lqc2 vf1, 0(gp) ;; [325] (set! a1-32 (vector-float*!2 a1-31 gp-6 f0-35)) + ;; [a1: vector gp: vector ] -> [a1: vector ] + mfc1 a2, f0 + qmtc2.i vf2, a2 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a1) + vmove.w vf6, vf0 ;; [326] (set! v1-117 (vector+!2 v1-116 a0-39 a1-32)) + ;; [v1: vector a0: vector a1: vector ] -> [v1: vector ] + lqc2 vf4, 0(a0) + lqc2 vf5, 0(a1) + vadd.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) + lw v1, *display*(s7) ;; [327] (set! v1-118 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [328] (set! v1-119 (l.d (+ v1-118 780))) [v1: display ] -> [v1: time-frame ] + ld a0, 164(s6) ;; [329] (set! a0-40 (l.d (+ self 164))) [s6: target ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [330] (set! v1-120 (- v1-119 a0-40)) + ;; [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + lw a0, *TARGET-bank*(s7) ;; [331] (set! a0-41 *TARGET-bank*) [] -> [a0: target-bank ] + ld a0, 180(a0) ;; [332] (set! a0-42 (l.d (+ a0-41 180))) [a0: target-bank ] -> [a0: time-frame ] + slt v1, v1, a0 ;; [333] (b! (<.si v1-120 a0-42) L78 (set! v1-121 #f)) + ;; [v1: time-frame a0: time-frame ] -> [v1: '#f ] + bne v1, r0, L78 + or v1, s7, r0 + +B6: + lw t9, enter-state(s7) ;; [334] (set! t9-16 enter-state) [] -> [t9: ] + or a0, s7, r0 ;; [335] (set! a0-43 #f) [] -> [a0: '#f ] + lw v1, target-falling(s7) ;; [336] (set! v1-122 target-falling) [] -> [v1: (state symbol target) ] + sw v1, 72(s6) ;; [337] (s.w! (+ self 72) v1-122) [v1: (state symbol target) s6: target ] -> [] + jalr ra, t9 ;; [338] (call! a0-43) [a0: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [339] (set! v1-123 v0-16) [v0: object ] -> [v1: object ] +B7: +L78: + lw v1, *cheat-mode*(s7) ;; [340] (set! v1-124 *cheat-mode*) [] -> [v1: symbol ] + daddiu a0, s7, debug ;; [341] (set! a0-44 'debug) [] -> [a0: symbol ] + dsubu v1, v1, a0 ;; [342] (set! a0-45 (= v1-124 a0-44)) [v1: symbol a0: symbol ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L79 ;; [343] (bl! (not a0-45) L79 (no-delay!)) [a0: symbol ] -> [] +B8: + or v1, a0, r0 ;; [344] (set! v1-125 a0-45) [a0: symbol ] -> [v1: symbol ] + +B9: + lwu v1, 108(s6) ;; [345] (set! v1-126 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [346] (set! v1-127 (l.wu (+ v1-126 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [347] (set! v1-128 (l.w (+ v1-127 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [348] (set! v1-129 (sll v1-128 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [349] (set! a0-46 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [350] (set! v1-130 (+ v1-129 a0-46)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [351] (set! v1-131 (l.wu (+ v1-130 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 40(v1) ;; [352] (set! v1-132 (l.wu (+ v1-131 40))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 512 ;; [353] (set! v1-133 (logand v1-132 512)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L79 ;; [354] (bl! (zero? v1-133) L79 (no-delay!)) [v1: pad-buttons ] -> [] +B10: + or v1, s7, r0 ;; [355] (set! v1-125 #f) [] -> [v1: '#f ] + +B11: + lw v1, *pause-lock*(s7) ;; [356] (set! v1-134 *pause-lock*) [] -> [v1: symbol ] + beq s7, v1, L79 ;; [357] (b! (not v1-134) L79 (set! v1-125 #t)) [v1: symbol ] -> [v1: symbol ] + daddiu v1, s7, 8 + +B12: + or v1, s7, r0 ;; [358] (set! v1-125 #f) [] -> [v1: '#f ] +B13: +L79: + beq s7, v1, L80 ;; [359] (b! (not v1-125) L80 (set! v1-135 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B14: + lw t9, enter-state(s7) ;; [360] (set! t9-17 enter-state) [] -> [t9: ] + or a0, s7, r0 ;; [361] (set! a0-47 #f) [] -> [a0: '#f ] + lw v1, target-falling(s7) ;; [362] (set! v1-136 target-falling) [] -> [v1: (state symbol target) ] + sw v1, 72(s6) ;; [363] (s.w! (+ self 72) v1-136) [v1: (state symbol target) s6: target ] -> [] + jalr ra, t9 ;; [364] (call! a0-47) [a0: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [365] (set! v1-137 v0-17) [v0: object ] -> [v1: object ] +B15: +L80: + lwu s6, 44(s6) ;; [366] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + beq r0, r0, L76 ;; [367] (b! #t L76 (nop!)) [] -> [] + sll r0, r0, 0 + +B16: + or v0, s7, r0 ;; [368] (set! v0-18 #f) [] -> [v0: ] + ld ra, 0(sp) + ld fp, 8(sp) + lwc1 f30, 84(sp) + lwc1 f28, 80(sp) + lq gp, 64(sp) + jr ra + daddiu sp, sp, 96 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-flop) + ((arg0 float) (arg1 float) (arg2 float)) + (ja-channel-set! 2) + (ja-no-eval :group! (-> self draw art-group data 63) :num! (seek!) :frame-num 0.0) + (ja :chan 1 :group! (-> self draw art-group data 66) :num! (chan 0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + (ja :chan 1 :num! (seek!) :frame-interp (lerp-scale + (the-as float 0.0) + (the-as float 1.0) + (-> self control unknown-float01) + (the-as float 0.0) + (the-as float 40960.0) + ) + ) + ) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (set! (-> self control dynam gravity quad) (-> self control unknown-dynamics00 gravity quad)) + (target-danger-set! 'flop-down #f) + (ja :group! (-> self draw art-group data 64) :num! min) + (ja :chan 1 :group! (-> self draw art-group data 67) :num! min) + (let ((f30-0 1.0)) + (let ((gp-3 (new-stack-vector0))) + (let ((f0-18 (vector-dot (-> self control dynam gravity-normal) (-> self control unknown-vector120)))) + 0.0 + (vector-! + gp-3 + (-> self control unknown-vector120) + (vector-float*! gp-3 (-> self control dynam gravity-normal) f0-18) + ) + ) + (let* ((f0-19 (vector-length gp-3)) + (f1-1 f0-19) + (f2-0 -368640.0) + ) + (vector+! + (-> self control unknown-vector120) + (vector-float*! (-> self control unknown-vector120) (-> self control dynam gravity-normal) f2-0) + (vector-float*! gp-3 gp-3 (/ f0-19 f1-1)) + ) + ) + ) + (let ((gp-4 (new-stack-vector0))) + (let ((f0-22 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-4 (-> self control transv) (vector-float*! gp-4 (-> self control dynam gravity-normal) f0-22)) + ) + (let* ((f0-23 (vector-length gp-4)) + (f1-3 f0-23) + (f2-2 (* -368640.0 f30-0)) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2) + (vector-float*! gp-4 gp-4 (/ f0-23 f1-3)) + ) + ) + ) + (suspend) + (loop + (+! (-> self control unknown-uint20) 1) + (ja :num! (+!)) + (ja :chan 1 :num! (chan 0) :frame-interp (lerp-scale + (the-as float 0.0) + (the-as float 1.0) + (-> self control unknown-float01) + (the-as float 0.0) + (the-as float 40960.0) + ) + ) + (set! f30-0 (* f30-0 (fmin 1.0 (-> self control unknown-float140)))) + (let ((gp-6 (new-stack-vector0)) + (f28-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + ) + 0.0 + (vector-! gp-6 (-> self control transv) (vector-float*! gp-6 (-> self control dynam gravity-normal) f28-0)) + (let* ((f1-5 (vector-length gp-6)) + (f0-34 f1-5) + ) + (if (< (-> self control unknown-surface01 transv-max) f1-5) + (set! f1-5 (-> self control unknown-surface01 transv-max)) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f28-0) + (vector-float*! gp-6 gp-6 (/ f1-5 f0-34)) + ) + ) + ) + (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> *TARGET-bank* fall-timeout)) + (go target-falling #f) + ) + (if (and (= *cheat-mode* 'debug) (cpad-hold? (-> self control unknown-cpad-info00 number) r2) (not *pause-lock*)) + (go target-falling #f) + ) + (suspend) + ) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (exit target-flop) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; Warnings: +;; INFO: Return type mismatch vector vs none. +;; Used lq/sq + +;; s6-0: target +L81: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lw t9, target-danger-set!(s7);; [ 0] (set! t9-0 target-danger-set!) + ;; [] -> [t9: (function symbol symbol float :behavior target) ] + daddiu a0, s7, harmless ;; [ 1] (set! a0-0 'harmless) [] -> [a0: symbol ] + or a1, s7, r0 ;; [ 2] (set! a1-0 #f) [] -> [a1: '#f ] + jalr ra, t9 ;; [ 3] (call! a0-0 a1-0) + ;; [a0: symbol a1: '#f t9: (function symbol symbol float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + + lwu v1, 108(s6) ;; [ 4] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 652(v1) ;; [ 5] (set! v1-1 (l.wu (+ v1-0 652))) [v1: control-info ] -> [v1: dynamics ] + lwc1 f0, 4(v1) ;; [ 6] (set! f0-0 (l.f (+ v1-1 4))) [v1: dynamics ] -> [] + lwu v1, 108(s6) ;; [ 7] (set! v1-2 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 8] (set! v1-3 (l.wu (+ v1-2 432))) [v1: control-info ] -> [v1: dynamics ] + swc1 f0, 4(v1) ;; [ 9] (s.f! (+ v1-3 4) f0-0) [v1: dynamics ] -> [] + lwu v1, 108(s6) ;; [ 10] (set! v1-4 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 652(v1) ;; [ 11] (set! v1-5 (l.wu (+ v1-4 652))) [v1: control-info ] -> [v1: dynamics ] + lwc1 f0, 8(v1) ;; [ 12] (set! f0-1 (l.f (+ v1-5 8))) [v1: dynamics ] -> [] + lwu v1, 108(s6) ;; [ 13] (set! v1-6 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 14] (set! v1-7 (l.wu (+ v1-6 432))) [v1: control-info ] -> [v1: dynamics ] + swc1 f0, 8(v1) ;; [ 15] (s.f! (+ v1-7 8) f0-1) [v1: dynamics ] -> [] + lwu v1, 108(s6) ;; [ 16] (set! v1-8 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 17] (set! v1-9 (l.wu (+ v1-8 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu v0, v1, 12 ;; [ 18] (set! v0-1 (+ v1-9 12)) [v1: dynamics ] -> [v0: vector ] + lwu v1, 108(s6) ;; [ 19] (set! v1-10 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 652(v1) ;; [ 20] (set! v1-11 (l.wu (+ v1-10 652))) [v1: control-info ] -> [v1: dynamics ] + daddiu v1, v1, 12 ;; [ 21] (set! v1-12 (+ v1-11 12)) [v1: dynamics ] -> [v1: vector ] + lq v1, 0(v1) ;; [ 22] (set! v1-13 (l.q v1-12)) [v1: vector ] -> [v1: uint128 ] + sq v1, 0(v0) ;; [ 23] (s.q! v0-1 v1-13) [v0: vector v1: uint128 ] -> [] + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (exit target-flop) + () + (target-danger-set! 'harmless #f) + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (set! (-> self control dynam gravity quad) (-> self control unknown-dynamics00 gravity quad)) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (trans target-flop) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0xa0, fp? 1 ra? 1 ep? 1 + ;stack_vars: 80 bytes at 16 + ;gprs: gp s5 s4 s3 +;; Warnings: +;; INFO: Return type mismatch float vs none. + +;; v1-6: art-joint-anim s5-1: (pointer process) s6-0: target gp-1: symbol +L82: + daddiu sp, sp, -160 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s3, 96(sp) + sq s4, 112(sp) + sq s5, 128(sp) + sq gp, 144(sp) +B0: + lw t9, delete-back-vel(s7);; [ 0] (set! t9-0 delete-back-vel) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 1] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + daddiu gp, s7, 8 ;; [ 2] (set! gp-0 #t) [] -> [gp: symbol ] + lwu v1, 108(s6) ;; [ 3] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld v1, 268(v1) ;; [ 4] (set! v1-1 (l.d (+ v1-0 268))) [v1: control-info ] -> [v1: cshape-moving-flags ] + andi v1, v1, 1 ;; [ 5] (set! v1-2 (logand v1-1 1)) + ;; [v1: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + movz gp, s7, v1 ;; [ 6] (cmove-#f-zero gp-1 v1-2 gp-0) + ;; [v1: cshape-moving-flags gp: symbol ] -> [gp: symbol ] + bnel s7, gp, L84 ;; [ 7] (bl! (truthy gp-1) L84 (no-delay!)) [gp: symbol ] -> [] +B1: + or v1, s7, r0 ;; [ 8] (set! v1-3 #f) [] -> [v1: '#f ] + +B2: + lwu v1, 120(s6) ;; [ 9] (set! v1-4 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 10] (set! v1-5 (l.w (+ v1-4 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 11] (b! (<=0.si v1-5) L83 (set! v1-6 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L83 + or v1, s7, r0 + +B3: + lwu v1, 120(s6) ;; [ 12] (set! v1-7 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 13] (set! v1-8 (l.wu (+ v1-7 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 14] (set! v1-6 (l.wu (+ v1-8 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B4: +L83: + lwu a0, 116(s6) ;; [ 15] (set! a0-0 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 16] (set! a0-1 (l.wu (+ a0-0 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 284(a0) ;; [ 17] (set! a0-2 (l.wu (+ a0-1 284))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [ 18] (set! a1-0 (= v1-6 a0-2)) [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L84 ;; [ 19] (bl! (truthy a1-0) L84 (no-delay!)) [a1: symbol ] -> [] +B5: + or v1, a1, r0 ;; [ 20] (set! v1-3 a1-0) [a1: symbol ] -> [v1: symbol ] + +B6: + lwu a0, 116(s6) ;; [ 21] (set! a0-3 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 22] (set! a0-4 (l.wu (+ a0-3 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 292(a0) ;; [ 23] (set! a0-5 (l.wu (+ a0-4 292))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [ 24] (set! v1-3 (= v1-6 a0-5)) [v1: art-joint-anim a0: art-element ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 +B7: +L84: + beq s7, v1, L88 ;; [ 25] (b! (not v1-3) L88 (set! v1-9 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B8: + lw t9, target-move-dist(s7);; [ 26] (set! t9-1 target-move-dist) + ;; [] -> [t9: (function time-frame float :behavior target) ] + addiu a0, r0, 30 ;; [ 27] (set! a0-6 30) [] -> [a0: ] + jalr ra, t9 ;; [ 28] (call! a0-6) + ;; [a0: t9: (function time-frame float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 29] (set! f0-0 (gpr->fpr v0-1)) [v0: float ] -> [] + lui v1, L802 ;; [ 30] (set! v1-10 L802) [] -> [v1: ] + ori v1, v1, L802 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 31] (set! f1-0 (l.f v1-10)) [v1: ] -> [] + c.lt.s f0, f1 ;; [ 32] (b! (<.s f0-0 f1-0) L85 (set! v1-11 #t)) [] -> [v1: symbol ] + bc1t L85 + daddiu v1, s7, 8 + +B9: + or v1, s7, r0 ;; [ 33] (set! v1-11 #f) [] -> [v1: '#f ] +B10: +L85: + bnel s7, v1, L86 ;; [ 34] (bl! (truthy v1-11) L86 (no-delay!)) [v1: symbol ] -> [] +B11: + or v1, v1, r0 ;; [ 35] (set! v1-12 v1-11) [v1: symbol ] -> [v1: symbol ] + +B12: + lwu v1, 108(s6) ;; [ 36] (set! v1-13 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld v1, 268(v1) ;; [ 37] (set! v1-14 (l.d (+ v1-13 268))) [v1: control-info ] -> [v1: cshape-moving-flags ] + andi v1, v1, 8 ;; [ 38] (set! v1-15 (logand v1-14 8)) + ;; [v1: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + beql v1, r0, L86 ;; [ 39] (bl! (zero? v1-15) L86 (no-delay!)) [v1: cshape-moving-flags ] -> [] +B13: + or v1, s7, r0 ;; [ 40] (set! v1-12 #f) [] -> [v1: '#f ] + +B14: + lui v1, L762 ;; [ 41] (set! v1-16 L762) [] -> [v1: ] + ori v1, v1, L762 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 42] (set! f0-1 (l.f v1-16)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 43] (set! v1-17 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f1, 420(v1) ;; [ 44] (set! f1-1 (l.f (+ v1-17 420))) [v1: control-info ] -> [] + c.lt.s f0, f1 ;; [ 45] (b! (<.s f0-1 f1-1) L86 (set! v1-12 #t)) [] -> [v1: symbol ] + bc1t L86 + daddiu v1, s7, 8 + +B15: + or v1, s7, r0 ;; [ 46] (set! v1-12 #f) [] -> [v1: '#f ] +B16: +L86: + beql s7, v1, L87 ;; [ 47] (bl! (not v1-12) L87 (no-delay!)) [v1: symbol ] -> [] +B17: + or v1, v1, r0 ;; [ 48] (set! v1-18 v1-12) [v1: symbol ] -> [v1: symbol ] + +B18: + lwu v1, 108(s6) ;; [ 49] (set! v1-19 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld v1, 268(v1) ;; [ 50] (set! v1-20 (l.d (+ v1-19 268))) [v1: control-info ] -> [v1: cshape-moving-flags ] + andi v1, v1, 32 ;; [ 51] (set! v1-21 (logand v1-20 32)) + ;; [v1: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + bnel v1, r0, L87 ;; [ 52] (bl! (nonzero? v1-21) L87 (no-delay!)) [v1: cshape-moving-flags ] -> [] +B19: + or v1, s7, r0 ;; [ 53] (set! v1-18 #f) [] -> [v1: '#f ] + +B20: + lwu v1, 108(s6) ;; [ 54] (set! v1-22 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 2180(v1) ;; [ 55] (set! v1-23 (l.wu (+ v1-22 2180))) [v1: control-info ] -> [v1: uint ] + sltiu a0, v1, 2 ;; [ 56] (set! v1-18 (>=.ui v1-23 2)) [v1: uint ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 +B21: +L87: + beq s7, v1, L88 ;; [ 57] (b! (not v1-18) L88 (set! v1-24 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B22: + lw v1, *display*(s7) ;; [ 58] (set! v1-25 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 59] (set! v1-26 (l.d (+ v1-25 780))) [v1: display ] -> [v1: time-frame ] + lwu a0, 108(s6) ;; [ 60] (set! a0-7 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sd v1, 1708(a0) ;; [ 61] (s.d! (+ a0-7 1708) v1-26) [v1: time-frame a0: control-info ] -> [] + daddiu gp, s7, stuck ;; [ 62] (set! gp-1 'stuck) [] -> [gp: symbol ] + or v1, gp, r0 ;; [ 63] (set! v1-27 gp-1) [gp: symbol ] -> [v1: symbol ] +B23: +L88: + beq s7, gp, L94 ;; [ 64] (b! (not gp-1) L94 (set! v1-28 #f)) [gp: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B24: + lwu v1, 108(s6) ;; [ 65] (set! v1-29 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld v1, 268(v1) ;; [ 66] (set! v1-30 (l.d (+ v1-29 268))) [v1: control-info ] -> [v1: cshape-moving-flags ] + ori v1, v1, 1 ;; [ 67] (set! v1-31 (logior v1-30 1)) + ;; [v1: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + lwu a0, 108(s6) ;; [ 68] (set! a0-8 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sd v1, 268(a0) ;; [ 69] (s.d! (+ a0-8 268) v1-31) [v1: cshape-moving-flags a0: control-info ] -> [] + lwu v1, 140(s6) ;; [ 70] (set! v1-32 (l.wu (+ self 140))) [s6: target ] -> [v1: fact-info-target ] + lw v1, 36(v1) ;; [ 71] (set! v1-33 (l.w (+ v1-32 36))) [v1: fact-info-target ] -> [v1: pickup-type ] + daddiu v1, v1, -2 ;; [ 72] (set! v1-34 (+ v1-33 -2)) [v1: pickup-type ] -> [v1: ] + daddiu a0, s7, 8 ;; [ 73] (set! a0-9 (zero? v1-34)) [v1: ] -> [a0: symbol ] + movn a0, s7, v1 + beql s7, a0, L89 ;; [ 74] (bl! (not a0-9) L89 (no-delay!)) [a0: symbol ] -> [] +B25: + or v1, a0, r0 ;; [ 75] (set! v1-35 a0-9) [a0: symbol ] -> [v1: symbol ] + +B26: + lwu v1, 140(s6) ;; [ 76] (set! v1-36 (l.wu (+ self 140))) [s6: target ] -> [v1: fact-info-target ] + lwc1 f0, 40(v1) ;; [ 77] (set! f0-2 (l.f (+ v1-36 40))) [v1: fact-info-target ] -> [] + lui v1, L786 ;; [ 78] (set! v1-37 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 79] (set! f1-2 (l.f v1-37)) [v1: ] -> [] + c.lt.s f0, f1 ;; [ 80] (b! (>=.s f0-2 f1-2) L89 (set! v1-35 #t)) [] -> [v1: symbol ] + bc1f L89 + daddiu v1, s7, 8 + +B27: + or v1, s7, r0 ;; [ 81] (set! v1-35 #f) [] -> [v1: '#f ] +B28: +L89: + beq s7, v1, L93 ;; [ 82] (b! (not v1-35) L93 (set! v1-38 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B29: + lw t9, cpad-set-buzz!(s7) ;; [ 83] (set! t9-2 cpad-set-buzz!) + ;; [] -> [t9: (function cpad-info int int time-frame none) ] + lw v1, *cpad-list*(s7) ;; [ 84] (set! v1-39 *cpad-list*) [] -> [v1: cpad-list ] + lwu a0, 4(v1) ;; [ 85] (set! a0-10 (l.wu (+ v1-39 4))) [v1: cpad-list ] -> [a0: cpad-info ] + addiu a1, r0, 1 ;; [ 86] (set! a1-1 1) [] -> [a1: ] + addiu a2, r0, 255 ;; [ 87] (set! a2-0 255) [] -> [a2: ] + addiu a3, r0, 150 ;; [ 88] (set! a3-0 150) [] -> [a3: ] + jalr ra, t9 ;; [ 89] (call! a0-10 a1-1 a2-0 a3-0) + ;; [a0: cpad-info a1: a2: a3: t9: (function cpad-info int int time-frame none) ] -> [v0: none ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [ 90] (set! v1-40 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu s5, 36(v1) ;; [ 91] (set! s5-0 (l.wu (+ v1-40 36))) [v1: joint-control ] -> [s5: effect-control ] + lwu v1, -4(s5) ;; [ 92] (set! v1-41 (l.wu (+ s5-0 -4))) + ;; [s5: effect-control ] -> [v1: ] + lwu s4, 56(v1) ;; [ 93] (set! s4-0 (l.wu (+ v1-41 56))) + ;; [v1: ] -> [s4: ] + daddiu s3, s7, group-red-eco-strike-ground;; [ 94] (set! s3-0 'group-red-eco-strike-ground) [] -> [s3: symbol ] + lw t9, ja-frame-num(s7) ;; [ 95] (set! t9-3 ja-frame-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 96] (set! a0-11 0) [] -> [a0: ] + jalr ra, t9 ;; [ 97] (call! a0-11) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + or a2, v0, r0 ;; [ 98] (set! a2-1 v0-3) [v0: float ] -> [a2: float ] + addiu a3, r0, 0 ;; [ 99] (set! a3-1 0) [] -> [a3: ] + or t9, s4, r0 ;; [100] (set! t9-4 s4-0) + ;; [s4: ] -> [t9: ] + or a0, s5, r0 ;; [101] (set! a0-12 s5-0) [s5: effect-control ] -> [a0: effect-control ] + or a1, s3, r0 ;; [102] (set! a1-2 s3-0) [s3: symbol ] -> [a1: symbol ] + jalr ra, t9 ;; [103] (call! a0-12 a1-2 a2-1 a3-1) + ;; [a0: effect-control a1: symbol a2: float a3: t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [104] (set! v1-42 v0-4) [v0: object ] -> [v1: object ] + lw a0, *default-dead-pool*(s7);; [105] (set! a0-13 *default-dead-pool*) [] -> [a0: dead-pool ] + lwu v1, -4(a0) ;; [106] (set! v1-43 (l.wu (+ a0-13 -4))) [a0: dead-pool ] -> [v1: ] + lwu t9, 72(v1) ;; [107] (set! t9-5 (l.wu (+ v1-43 72))) + ;; [v1: ] -> [t9: ] + lw a1, touch-tracker(s7) ;; [108] (set! a1-3 touch-tracker) [] -> [a1: ] + addiu a2, r0, 16384 ;; [109] (set! a2-2 #x4000) [] -> [a2: ] + jalr ra, t9 ;; [110] (call! a0-13 a1-3 a2-2) + ;; [a0: dead-pool a1: a2: t9: ] -> [v0: process ] + sll v0, ra, 0 + + or s4, v0, r0 ;; [111] (set! s4-1 v0-5) [v0: process ] -> [s4: process ] + beq s7, s4, L90 ;; [112] (b! (not s4-1) L90 (set! s5-1 #f)) [s4: process ] -> [s5: '#f ] + or s5, s7, r0 + +B30: + lw v1, touch-tracker(s7) ;; [113] (set! v1-44 touch-tracker) [] -> [v1: ] + lwu t9, 52(v1) ;; [114] (set! t9-6 (l.wu (+ v1-44 52))) + ;; [v1: ] -> [t9: ] + or a0, s4, r0 ;; [115] (set! a0-14 s4-1) [s4: process ] -> [a0: process ] + or a1, s6, r0 ;; [116] (set! a1-4 self) [s6: target ] -> [a1: target ] + daddiu a2, s7, touch-tracker;; [117] (set! a2-3 'touch-tracker) [] -> [a2: symbol ] + lui v1, 28672 ;; [118] (set! a3-2 #x70004000) [] -> [a3: ] + ori a3, v1, 16384 + jalr ra, t9 ;; [119] (call! a0-14 a1-4 a2-3 a3-2) + ;; [a0: process a1: target a2: symbol a3: t9: ] -> [v0: process-tree ] + sll v0, ra, 0 + + lw t9, run-function-in-process(s7);; [120] (set! t9-7 run-function-in-process) + ;; [] -> [t9: ] + or a0, s4, r0 ;; [121] (set! a0-15 s4-1) [s4: process ] -> [a0: process ] + lw a1, touch-tracker-init(s7);; [122] (set! a1-5 touch-tracker-init) + ;; [] -> [a1: (function vector float time-frame none :behavior touch-tracker) ] + lwu v1, 108(s6) ;; [123] (set! v1-45 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a2, v1, 12 ;; [124] (set! a2-4 (+ v1-45 12)) [v1: control-info ] -> [a2: vector ] + lui v1, L726 ;; [125] (set! v1-46 L726) [] -> [v1: ] + ori v1, v1, L726 + addu v1, fp, v1 + lw a3, 0(v1) ;; [126] (set! a3-3 (l.w v1-46)) [v1: ] -> [a3: int ] + addiu t0, r0, 30 ;; [127] (set! t0-0 30) [] -> [t0: ] + jalr ra, t9 ;; [128] (call! a0-15 a1-5 a2-4 a3-3 t0-0) + ;; [a0: process a1: (function vector float time-frame none :behavior touch-tracker) a2: vector a3: int t0: t9: ] -> [v0: none ] + sll v0, ra, 0 + + lwu s5, 20(s4) ;; [129] (set! s5-1 (l.wu (+ s4-1 20))) [s4: process ] -> [s5: (pointer process) ] +B31: +L90: + daddiu a1, sp, 16 ;; [130] (set! a1-6 (+ sp-0 16)) [sp: ] -> [a1: event-message-block ] + sw s6, 4(a1) ;; [131] (s.w! (+ a1-6 4) self) [a1: event-message-block s6: target ] -> [] + addiu v1, r0, 2 ;; [132] (set! v1-47 2) [] -> [v1: ] + sw v1, 8(a1) ;; [133] (s.w! (+ a1-6 8) v1-47) [v1: a1: event-message-block ] -> [] + daddiu v1, s7, event ;; [134] (set! v1-48 'event) [] -> [v1: symbol ] + sw v1, 12(a1) ;; [135] (s.w! (+ a1-6 12) v1-48) [v1: symbol a1: event-message-block ] -> [] + daddiu v1, s7, attack ;; [136] (set! v1-49 'attack) [] -> [v1: symbol ] + sd v1, 16(a1) ;; [137] (s.d! (+ a1-6 16) v1-49) [v1: symbol a1: event-message-block ] -> [] + daddiu v1, s7, flop ;; [138] (set! v1-50 'flop) [] -> [v1: symbol ] + sd v1, 24(a1) ;; [139] (s.d! (+ a1-6 24) v1-50) [v1: symbol a1: event-message-block ] -> [] + lw t9, send-event-function(s7);; [140] (set! t9-8 send-event-function) + ;; [] -> [t9: (function process-tree event-message-block object) ] + or v1, s5, r0 ;; [141] (set! v1-51 s5-1) [s5: (pointer process) ] -> [v1: (pointer process) ] + beq s7, v1, L91 ;; [142] (b! (not v1-51) L91 (set! a0-16 #f)) [v1: (pointer process) ] -> [a0: '#f ] + or a0, s7, r0 + +B32: + lwu v1, 0(v1) ;; [143] (set! v1-52 (l.wu v1-51)) [v1: (pointer process) ] -> [v1: process ] + lwu a0, 24(v1) ;; [144] (set! a0-16 (l.wu (+ v1-52 24))) [v1: process ] -> [a0: process-tree ] +B33: +L91: + jalr ra, t9 ;; [145] (call! a0-16 a1-6) + ;; [a0: process-tree a1: event-message-block t9: (function process-tree event-message-block object) ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [146] (set! v1-53 v0-8) [v0: object ] -> [v1: object ] + daddiu a1, sp, 16 ;; [147] (set! a1-7 (+ sp-0 16)) [sp: ] -> [a1: event-message-block ] + sw s6, 4(a1) ;; [148] (s.w! (+ a1-7 4) self) [a1: event-message-block s6: target ] -> [] + addiu v1, r0, 1 ;; [149] (set! v1-54 1) [] -> [v1: ] + sw v1, 8(a1) ;; [150] (s.w! (+ a1-7 8) v1-54) [v1: a1: event-message-block ] -> [] + daddiu v1, s7, function ;; [151] (set! v1-55 'function) [] -> [v1: symbol ] + sw v1, 12(a1) ;; [152] (s.w! (+ a1-7 12) v1-55) [v1: symbol a1: event-message-block ] -> [] + lui v1, L102 ;; [153] (set! v1-56 L102) [] -> [v1: (function target float) ] + ori v1, v1, L102 + daddu v1, v1, fp + sd v1, 16(a1) ;; [154] (s.d! (+ a1-7 16) v1-56) + ;; [v1: (function target float) a1: event-message-block ] -> [] + lw t9, send-event-function(s7);; [155] (set! t9-9 send-event-function) + ;; [] -> [t9: (function process-tree event-message-block object) ] + beq s7, s5, L92 ;; [156] (b! (not s5-1) L92 (set! a0-17 #f)) [s5: (pointer process) ] -> [a0: '#f ] + or a0, s7, r0 + +B34: + lwu v1, 0(s5) ;; [157] (set! v1-57 (l.wu s5-1)) [s5: (pointer process) ] -> [v1: process ] + lwu a0, 24(v1) ;; [158] (set! a0-17 (l.wu (+ v1-57 24))) [v1: process ] -> [a0: process-tree ] +B35: +L92: + jalr ra, t9 ;; [159] (call! a0-17 a1-7) + ;; [a0: process-tree a1: event-message-block t9: (function process-tree event-message-block object) ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [160] (set! v1-58 v0-9) [v0: object ] -> [v1: object ] +B36: +L93: + lw t9, enter-state(s7) ;; [161] (set! t9-10 enter-state) [] -> [t9: ] + or a0, gp, r0 ;; [162] (set! a0-18 gp-1) [gp: symbol ] -> [a0: symbol ] + lw v1, target-flop-hit-ground(s7);; [163] (set! v1-59 target-flop-hit-ground) [] -> [v1: (state symbol target) ] + sw v1, 72(s6) ;; [164] (s.w! (+ self 72) v1-59) [v1: (state symbol target) s6: target ] -> [] + jalr ra, t9 ;; [165] (call! a0-18) [a0: symbol t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [166] (set! v1-60 v0-10) [v0: object ] -> [v1: object ] +B37: +L94: + lwu v1, 140(s6) ;; [167] (set! v1-61 (l.wu (+ self 140))) [s6: target ] -> [v1: fact-info-target ] + lw v1, 36(v1) ;; [168] (set! v1-62 (l.w (+ v1-61 36))) [v1: fact-info-target ] -> [v1: pickup-type ] + daddiu v1, v1, -2 ;; [169] (set! v1-63 (+ v1-62 -2)) [v1: pickup-type ] -> [v1: ] + daddiu a0, s7, 8 ;; [170] (set! a0-19 (zero? v1-63)) [v1: ] -> [a0: symbol ] + movn a0, s7, v1 + beql s7, a0, L95 ;; [171] (bl! (not a0-19) L95 (no-delay!)) [a0: symbol ] -> [] +B38: + or v1, a0, r0 ;; [172] (set! v1-64 a0-19) [a0: symbol ] -> [v1: symbol ] + +B39: + lwu v1, 140(s6) ;; [173] (set! v1-65 (l.wu (+ self 140))) [s6: target ] -> [v1: fact-info-target ] + lwc1 f0, 40(v1) ;; [174] (set! f0-3 (l.f (+ v1-65 40))) [v1: fact-info-target ] -> [] + lui v1, L786 ;; [175] (set! v1-66 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [176] (set! f1-3 (l.f v1-66)) [v1: ] -> [] + c.lt.s f0, f1 ;; [177] (b! (>=.s f0-3 f1-3) L95 (set! v1-64 #t)) [] -> [v1: symbol ] + bc1f L95 + daddiu v1, s7, 8 + +B40: + or v1, s7, r0 ;; [178] (set! v1-64 #f) [] -> [v1: '#f ] +B41: +L95: + beq s7, v1, L98 ;; [179] (b! (not v1-64) L98 (set! v1-67 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B42: + lwu v1, 120(s6) ;; [180] (set! v1-68 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu gp, 36(v1) ;; [181] (set! gp-2 (l.wu (+ v1-68 36))) [v1: joint-control ] -> [gp: effect-control ] + lwu v1, -4(gp) ;; [182] (set! v1-69 (l.wu (+ gp-2 -4))) + ;; [gp: effect-control ] -> [v1: ] + lwu s5, 56(v1) ;; [183] (set! s5-2 (l.wu (+ v1-69 56))) + ;; [v1: ] -> [s5: ] + daddiu s4, s7, group-red-eco-spinkick;; [184] (set! s4-2 'group-red-eco-spinkick) [] -> [s4: symbol ] + lw t9, ja-frame-num(s7) ;; [185] (set! t9-11 ja-frame-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [186] (set! a0-20 0) [] -> [a0: ] + jalr ra, t9 ;; [187] (call! a0-20) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + or s3, v0, r0 ;; [188] (set! s3-1 v0-11) [v0: float ] -> [s3: float ] + lw t9, rand-vu-percent?(s7);; [189] (set! t9-12 rand-vu-percent?) [] -> [t9: (function float symbol) ] + lui v1, L752 ;; [190] (set! v1-70 L752) [] -> [v1: ] + ori v1, v1, L752 + addu v1, fp, v1 + lw a0, 0(v1) ;; [191] (set! a0-21 (l.w v1-70)) [v1: ] -> [a0: int ] + jalr ra, t9 ;; [192] (call! a0-21) [a0: int t9: (function float symbol) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L96 ;; [193] (b! (not v0-12) L96 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B43: + addiu a3, r0, 23 ;; [194] (set! a3-4 23) [] -> [a3: ] + beq r0, r0, L97 ;; [195] (b! #t L97 (nop!)) [] -> [] + sll r0, r0, 0 + +B44: +L96: + addiu a3, r0, 17 ;; [196] (set! a3-4 17) [] -> [a3: ] +B45: +L97: + or t9, s5, r0 ;; [197] (set! t9-13 s5-2) + ;; [s5: ] -> [t9: ] + or a0, gp, r0 ;; [198] (set! a0-22 gp-2) [gp: effect-control ] -> [a0: effect-control ] + or a1, s4, r0 ;; [199] (set! a1-8 s4-2) [s4: symbol ] -> [a1: symbol ] + or a2, s3, r0 ;; [200] (set! a2-5 s3-1) [s3: float ] -> [a2: float ] + jalr ra, t9 ;; [201] (call! a0-22 a1-8 a2-5 a3-4) + ;; [a0: effect-control a1: symbol a2: float a3: int t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [202] (set! v1-71 v0-13) [v0: object ] -> [v1: object ] + lw t9, cpad-set-buzz!(s7) ;; [203] (set! t9-14 cpad-set-buzz!) + ;; [] -> [t9: (function cpad-info int int time-frame none) ] + lw v1, *cpad-list*(s7) ;; [204] (set! v1-72 *cpad-list*) [] -> [v1: cpad-list ] + lwu a0, 4(v1) ;; [205] (set! a0-23 (l.wu (+ v1-72 4))) [v1: cpad-list ] -> [a0: cpad-info ] + addiu a1, r0, 1 ;; [206] (set! a1-9 1) [] -> [a1: ] + addiu a2, r0, 153 ;; [207] (set! a2-6 153) [] -> [a2: ] + addiu a3, r0, 30 ;; [208] (set! a3-5 30) [] -> [a3: ] + jalr ra, t9 ;; [209] (call! a0-23 a1-9 a2-6 a3-5) + ;; [a0: cpad-info a1: a2: a3: t9: (function cpad-info int int time-frame none) ] -> [v0: none ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [210] (set! v1-73 v0-14) [v0: none ] -> [v1: none ] +B46: +L98: + lwu v1, 108(s6) ;; [211] (set! v1-74 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 2380(v1) ;; [212] (set! v1-75 (l.wu (+ v1-74 2380))) [v1: control-info ] -> [v1: symbol ] + bnel s7, v1, L100 ;; [213] (bl! (truthy v1-75) L100 (no-delay!)) [v1: symbol ] -> [] +B47: + or v1, s7, r0 ;; [214] (set! v1-76 #f) [] -> [v1: '#f ] + +B48: + lwu v1, 120(s6) ;; [215] (set! v1-77 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [216] (set! v1-78 (l.w (+ v1-77 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [217] (b! (<=0.si v1-78) L99 (set! v1-79 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L99 + or v1, s7, r0 + +B49: + lwu v1, 120(s6) ;; [218] (set! v1-80 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [219] (set! v1-81 (l.wu (+ v1-80 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [220] (set! v1-79 (l.wu (+ v1-81 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B50: +L99: + lwu a0, 116(s6) ;; [221] (set! a0-24 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [222] (set! a0-25 (l.wu (+ a0-24 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 280(a0) ;; [223] (set! a0-26 (l.wu (+ a0-25 280))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [224] (set! a0-27 (= v1-79 a0-26)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L100 ;; [225] (bl! (not a0-27) L100 (no-delay!)) [a0: symbol ] -> [] +B51: + or v1, a0, r0 ;; [226] (set! v1-76 a0-27) [a0: symbol ] -> [v1: symbol ] + +B52: + lw t9, ja-aframe-num(s7) ;; [227] (set! t9-15 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [228] (set! a0-28 0) [] -> [a0: ] + jalr ra, t9 ;; [229] (call! a0-28) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [230] (set! f0-4 (gpr->fpr v0-15)) [v0: float ] -> [] + lui v1, L809 ;; [231] (set! v1-82 L809) [] -> [v1: ] + ori v1, v1, L809 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [232] (set! f1-4 (l.f v1-82)) [v1: ] -> [] + c.lt.s f0, f1 ;; [233] (b! (>=.s f0-4 f1-4) L100 (set! v1-76 #t)) [] -> [v1: symbol ] + bc1f L100 + daddiu v1, s7, 8 + +B53: + or v1, s7, r0 ;; [234] (set! v1-76 #f) [] -> [v1: '#f ] +B54: +L100: + beq s7, v1, L101 ;; [235] (b! (not v1-76) L101 (set! v0-16 #f)) [v1: symbol ] -> [v0: '#f ] + or v0, s7, r0 + +B55: + lw t9, target-start-attack(s7);; [236] (set! t9-16 target-start-attack) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [237] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, target-danger-set!(s7);; [238] (set! t9-17 target-danger-set!) + ;; [] -> [t9: (function symbol symbol float :behavior target) ] + daddiu a0, s7, flop ;; [239] (set! a0-29 'flop) [] -> [a0: symbol ] + or a1, s7, r0 ;; [240] (set! a1-10 #f) [] -> [a1: '#f ] + jalr ra, t9 ;; [241] (call! a0-29 a1-10) + ;; [a0: symbol a1: '#f t9: (function symbol symbol float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + +B56: +L101: + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 144(sp) + lq s5, 128(sp) + lq s4, 112(sp) + lq s3, 96(sp) + jr ra + daddiu sp, sp, 160 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (trans target-flop) + () + (delete-back-vel) + (let ((gp-1 (logtest? (-> self control status) (cshape-moving-flags onsurf)))) + (when (and (not gp-1) (let ((v1-6 (ja-group))) + (or (= v1-6 (-> self draw art-group data 64)) (= v1-6 (-> self draw art-group data 66))) ) + ) + (when (and (or (< (target-move-dist (seconds 0.1)) 1638.4) + (and (logtest? (-> self control status) (cshape-moving-flags twall)) (< 0.7 (-> self control poly-angle))) + ) + (zero? (logand (-> self control status) (cshape-moving-flags t-act))) + (>= (-> self control unknown-uint20) (the-as uint 2)) + ) + (set! (-> self control unknown-dword36) (-> *display* base-frame-counter)) + (set! gp-1 'stuck) + ) + ) + (when gp-1 + (logior! (-> self control status) (cshape-moving-flags onsurf)) + (when (and (= (-> self fact-info-target eco-type) (pickup-type eco-red)) + (>= (-> self fact-info-target eco-level) 1.0) + ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.5)) + (dummy-10 (-> self skel effect) 'group-red-eco-strike-ground (ja-frame-num 0) 0) + (let ((s5-1 (process-spawn touch-tracker :init touch-tracker-init (-> self control trans) 4096.0 30 :to self))) + (send-event (ppointer->process s5-1) 'event 'attack 'flop) + (send-event + (ppointer->process s5-1) + 'function + (lambda ((arg0 target)) (let ((f0-3 (seek + (-> arg0 control root-prim local-sphere w) + (the-as float 28672.0) + (* 286720.0 (-> *display* seconds-per-frame)) + ) + ) + ) + (set! (-> arg0 control root-prim local-sphere w) f0-3) + f0-3 + ) + ) + ) + ) + ) + (go target-flop-hit-ground gp-1) + ) + ) + (when (and (= (-> self fact-info-target eco-type) (pickup-type eco-red)) + (>= (-> self fact-info-target eco-level) 1.0) + ) + (dummy-10 + (-> self skel effect) + 'group-red-eco-spinkick + (ja-frame-num 0) + (if (rand-vu-percent? (the-as float 0.5)) + 23 + 17 + ) + ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) + ) + (when (and (not (-> self control unknown-symbol30)) + (ja-group? (-> self draw art-group data 63)) + (>= (ja-aframe-num 0) 8.0) + ) + (target-start-attack) + (target-danger-set! 'flop #f) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (anon-function 16 target) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x20, fp? 1 ra? 1 ep? 1 + ;gprs: gp +;; a0-0: target f0-3: float +L102: + daddiu sp, sp, -32 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq gp, 16(sp) +B0: + or gp, a0, r0 ;; [ 0] (set! arg0 arg0) [a0: target ] -> [gp: target ] + lw t9, seek(s7) ;; [ 1] (set! t9-0 seek) [] -> [t9: (function float float float float) ] + lwu v1, 108(gp) ;; [ 2] (set! v1-0 (l.wu (+ arg0 108))) [gp: target ] -> [v1: control-info ] + lwu v1, 156(v1) ;; [ 3] (set! v1-1 (l.wu (+ v1-0 156))) [v1: control-info ] -> [v1: collide-shape-prim ] + lwc1 f0, 56(v1) ;; [ 4] (set! f0-0 (l.f (+ v1-1 56))) [v1: collide-shape-prim ] -> [] + mfc1 a0, f0 ;; [ 5] (set! a0-1 (fpr->gpr f0-0)) [] -> [a0: float ] + lui v1, L813 ;; [ 6] (set! v1-2 L813) [] -> [v1: ] + ori v1, v1, L813 + addu v1, fp, v1 + lw a1, 0(v1) ;; [ 7] (set! a1-0 (l.w v1-2)) [v1: ] -> [a1: int ] + lui v1, L808 ;; [ 8] (set! v1-3 L808) [] -> [v1: ] + ori v1, v1, L808 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 9] (set! f0-1 (l.f v1-3)) [v1: ] -> [] + lw v1, *display*(s7) ;; [ 10] (set! v1-4 *display*) [] -> [v1: display ] + lwc1 f1, 904(v1) ;; [ 11] (set! f1-0 (l.f (+ v1-4 904))) [v1: display ] -> [] + mul.s f0, f0, f1 ;; [ 12] (set! f0-2 (*.s f0-1 f1-0)) [] -> [] + mfc1 a2, f0 ;; [ 13] (set! a2-0 (fpr->gpr f0-2)) [] -> [a2: float ] + jalr ra, t9 ;; [ 14] (call! a0-1 a1-0 a2-0) + ;; [a0: float a1: int a2: float t9: (function float float float float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 15] (set! f0-3 (gpr->fpr v0-0)) [v0: float ] -> [] + lwu v1, 108(gp) ;; [ 16] (set! v1-5 (l.wu (+ arg0 108))) [gp: target ] -> [v1: control-info ] + lwu v1, 156(v1) ;; [ 17] (set! v1-6 (l.wu (+ v1-5 156))) [v1: control-info ] -> [v1: collide-shape-prim ] + swc1 f0, 56(v1) ;; [ 18] (s.f! (+ v1-6 56) f0-3) [v1: collide-shape-prim ] -> [] + mfc1 v0, f0 ;; [ 19] (set! v0-1 (fpr->gpr f0-3)) [] -> [v0: float ] + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 16(sp) + jr ra + daddiu sp, sp, 32 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(defun-anon + (anon-function 16 target) + ((arg0 target)) + (let ((f0-3 (seek + (-> arg0 control root-prim local-sphere w) + (the-as float 28672.0) + (* 286720.0 (-> *display* seconds-per-frame)) + ) + ) + ) + (set! (-> arg0 control root-prim local-sphere w) f0-3) + f0-3 + ) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-flop) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x30, fp? 1 ra? 1 ep? 1 + ;stack_vars: 16 bytes at 16 + ;gprs: gp +;; Warnings: +;; INFO: Return type mismatch vector vs none. +;; Used lq/sq + +;; a2-0: float s6-0: target gp-1: vector f0-6: float f0-7: float f1-3: float f2-0: float +L103: + daddiu sp, sp, -48 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq gp, 32(sp) +B0: + or gp, a2, r0 ;; [ 0] (set! arg2 arg2) [a2: float ] -> [gp: float ] + lwu v1, 140(s6) ;; [ 1] (set! v1-0 (l.wu (+ self 140))) [s6: target ] -> [v1: fact-info-target ] + lw v1, 36(v1) ;; [ 2] (set! v1-1 (l.w (+ v1-0 36))) [v1: fact-info-target ] -> [v1: pickup-type ] + daddiu v1, v1, -1 ;; [ 3] (set! v1-2 (+ v1-1 -1)) [v1: pickup-type ] -> [v1: ] + daddiu a0, s7, 8 ;; [ 4] (set! a0-1 (zero? v1-2)) [v1: ] -> [a0: symbol ] + movn a0, s7, v1 + beql s7, a0, L104 ;; [ 5] (bl! (not a0-1) L104 (no-delay!)) [a0: symbol ] -> [] +B1: + or v1, a0, r0 ;; [ 6] (set! v1-3 a0-1) [a0: symbol ] -> [v1: symbol ] + +B2: + lwu v1, 140(s6) ;; [ 7] (set! v1-4 (l.wu (+ self 140))) [s6: target ] -> [v1: fact-info-target ] + lwc1 f0, 40(v1) ;; [ 8] (set! f0-0 (l.f (+ v1-4 40))) [v1: fact-info-target ] -> [] + lui v1, L786 ;; [ 9] (set! v1-5 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 10] (set! f1-0 (l.f v1-5)) [v1: ] -> [] + c.lt.s f0, f1 ;; [ 11] (b! (>=.s f0-0 f1-0) L104 (set! v1-3 #t)) [] -> [v1: symbol ] + bc1f L104 + daddiu v1, s7, 8 + +B3: + or v1, s7, r0 ;; [ 12] (set! v1-3 #f) [] -> [v1: '#f ] +B4: +L104: + beq s7, v1, L105 ;; [ 13] (b! (not v1-3) L105 (set! v1-6 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B5: + lw t9, enter-state(s7) ;; [ 14] (set! t9-0 enter-state) [] -> [t9: ] + lw v1, target-yellow-jump-blast(s7);; [ 15] (set! v1-7 target-yellow-jump-blast) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 16] (s.w! (+ self 72) v1-7) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 17] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 18] (set! v1-8 v0-0) [v0: object ] -> [v1: object ] +B6: +L105: + mtc1 f0, gp ;; [ 19] (set! f0-1 (gpr->fpr arg2)) [gp: float ] -> [] + mtc1 f1, r0 ;; [ 20] (set! f1-1 0) [] -> [] + c.eq.s f0, f1 ;; [ 21] (b! (!=.s f0-1 f1-1) L106 (nop!)) [] -> [] + bc1f L106 + sll r0, r0, 0 + +B7: + lw t9, set-forward-vel(s7);; [ 22] (set! t9-1 set-forward-vel) [] -> [t9: (function float vector :behavior target) ] + or a0, gp, r0 ;; [ 23] (set! a0-2 arg2) [gp: float ] -> [a0: float ] + jalr ra, t9 ;; [ 24] (call! a0-2) + ;; [a0: float t9: (function float vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 25] (set! v1-9 v0-1) [v0: vector ] -> [v1: vector ] + beq r0, r0, L107 ;; [ 26] (b! #t L107 (nop!)) [] -> [] + sll r0, r0, 0 + +B8: +L106: + lw t9, set-forward-vel(s7);; [ 27] (set! t9-2 set-forward-vel) [] -> [t9: (function float vector :behavior target) ] + lwu v1, 108(s6) ;; [ 28] (set! v1-10 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 528(v1) ;; [ 29] (set! f0-2 (l.f (+ v1-10 528))) [v1: control-info ] -> [] + mfc1 a0, f0 ;; [ 30] (set! a0-3 (fpr->gpr f0-2)) [] -> [a0: float ] + jalr ra, t9 ;; [ 31] (call! a0-3) + ;; [a0: float t9: (function float vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 32] (set! v1-11 v0-2) [v0: vector ] -> [v1: vector ] +B9: +L107: + lw v1, *display*(s7) ;; [ 33] (set! v1-12 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 34] (set! v1-13 (l.d (+ v1-12 780))) [v1: display ] -> [v1: time-frame ] + sd v1, 164(s6) ;; [ 35] (s.d! (+ self 164) v1-13) [v1: time-frame s6: target ] -> [] + addiu v1, r0, -8 ;; [ 36] (set! v1-14 -8) [] -> [v1: ] + lwu a0, 108(s6) ;; [ 37] (set! a0-4 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 268(a0) ;; [ 38] (set! a0-5 (l.d (+ a0-4 268))) [a0: control-info ] -> [a0: cshape-moving-flags ] + and v1, v1, a0 ;; [ 39] (set! v1-15 (logand v1-14 a0-5)) + ;; [v1: a0: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + lwu a0, 108(s6) ;; [ 40] (set! a0-6 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sd v1, 268(a0) ;; [ 41] (s.d! (+ a0-6 268) v1-15) [v1: cshape-moving-flags a0: control-info ] -> [] + lw v1, *flop-mods*(s7) ;; [ 42] (set! v1-16 *flop-mods*) [] -> [v1: surface ] + lwu a0, 108(s6) ;; [ 43] (set! a0-7 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sw v1, 656(a0) ;; [ 44] (s.w! (+ a0-7 656) v1-16) [v1: surface a0: control-info ] -> [] + lwu v1, 108(s6) ;; [ 45] (set! v1-17 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw r0, 2180(v1) ;; [ 46] (s.w! (+ v1-17 2180) 0) [v1: control-info ] -> [] + lui v1, L720 ;; [ 47] (set! v1-18 L720) [] -> [v1: ] + ori v1, v1, L720 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 48] (set! f0-3 (l.f v1-18)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 49] (set! v1-19 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 50] (set! v1-20 (l.wu (+ v1-19 432))) [v1: control-info ] -> [v1: dynamics ] + swc1 f0, 4(v1) ;; [ 51] (s.f! (+ v1-20 4) f0-3) [v1: dynamics ] -> [] + lui v1, L720 ;; [ 52] (set! v1-21 L720) [] -> [v1: ] + ori v1, v1, L720 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 53] (set! f0-4 (l.f v1-21)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 54] (set! v1-22 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 55] (set! v1-23 (l.wu (+ v1-22 432))) [v1: control-info ] -> [v1: dynamics ] + swc1 f0, 8(v1) ;; [ 56] (s.f! (+ v1-23 8) f0-4) [v1: dynamics ] -> [] + daddiu gp, sp, 16 ;; [ 57] (set! gp-1 (+ sp-0 16)) [sp: ] -> [gp: vector ] + sq r0, 0(gp) ;; [ 58] (s.q! gp-1 0) [gp: vector ] -> [] + lwu v1, 108(s6) ;; [ 59] (set! v1-24 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 60] (set! v1-25 (l.wu (+ v1-24 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 61] (set! a0-8 (+ v1-25 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 62] (set! v1-26 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 63] (set! v1-27 (+ v1-26 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [ 64] (set! f0-5 (vec3dot a0-8 v1-27)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [ 65] (set! v1-28 (fpr->gpr f0-5)) [] -> [v1: float ] + mtc1 f0, v1 ;; [ 66] (set! f0-6 (gpr->fpr v1-28)) [v1: float ] -> [] + mtc1 f1, r0 ;; [ 67] (set! f1-2 0) [] -> [] + or v1, gp, r0 ;; [ 68] (set! v1-29 gp-1) [gp: vector ] -> [v1: vector ] + lwu a0, 108(s6) ;; [ 69] (set! a0-9 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + daddiu a0, a0, 60 ;; [ 70] (set! a0-10 (+ a0-9 60)) [a0: control-info ] -> [a0: vector ] + or a1, gp, r0 ;; [ 71] (set! a1-1 gp-1) [gp: vector ] -> [a1: vector ] + lwu a2, 108(s6) ;; [ 72] (set! a2-1 (l.wu (+ self 108))) [s6: target ] -> [a2: control-info ] + lwu a2, 432(a2) ;; [ 73] (set! a2-2 (l.wu (+ a2-1 432))) [a2: control-info ] -> [a2: dynamics ] + daddiu a2, a2, 28 ;; [ 74] (set! a2-3 (+ a2-2 28)) [a2: dynamics ] -> [a2: vector ] + lqc2 vf1, 0(a2) ;; [ 75] (set! a1-2 (vector-float*!2 a1-1 a2-3 f0-6)) + ;; [a1: vector a2: vector ] -> [a1: vector ] + mfc1 a2, f0 + qmtc2.i vf2, a2 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a1) + lqc2 vf4, 0(a0) ;; [ 76] (set! v1-30 (vector-!2 v1-29 a0-10 a1-2)) + ;; [v1: vector a0: vector a1: vector ] -> [v1: vector ] + lqc2 vf5, 0(a1) + vmove.w vf6, vf0 + vsub.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) + lw t9, vector-length(s7) ;; [ 77] (set! t9-3 vector-length) [] -> [t9: (function vector float) ] + or a0, gp, r0 ;; [ 78] (set! a0-11 gp-1) [gp: vector ] -> [a0: vector ] + jalr ra, t9 ;; [ 79] (call! a0-11) [a0: vector t9: (function vector float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 80] (set! f0-7 (gpr->fpr v0-3)) [v0: float ] -> [] + mov.s f1, f0 ;; [ 81] (set! f1-3 f0-7) [] -> [] + lui v1, L757 ;; [ 82] (set! v1-31 L757) [] -> [v1: ] + ori v1, v1, L757 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [ 83] (set! f2-0 (l.f v1-31)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 84] (set! v1-32 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v0, v1, 60 ;; [ 85] (set! v0-4 (+ v1-32 60)) [v1: control-info ] -> [v0: vector ] + lwu v1, 108(s6) ;; [ 86] (set! v1-33 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 87] (set! v1-34 (+ v1-33 60)) [v1: control-info ] -> [v1: vector ] + lwu a0, 108(s6) ;; [ 88] (set! a0-12 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 432(a0) ;; [ 89] (set! a0-13 (l.wu (+ a0-12 432))) [a0: control-info ] -> [a0: dynamics ] + daddiu a0, a0, 28 ;; [ 90] (set! a0-14 (+ a0-13 28)) [a0: dynamics ] -> [a0: vector ] + lqc2 vf1, 0(a0) ;; [ 91] (set! v1-35 (vector-float*!2 v1-34 a0-14 f2-0)) + ;; [v1: vector a0: vector ] -> [v1: vector ] + mfc1 a0, f2 + qmtc2.i vf2, a0 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(v1) + or a0, gp, r0 ;; [ 92] (set! a0-15 gp-1) [gp: vector ] -> [a0: vector ] + div.s f0, f0, f1 ;; [ 93] (set! f0-8 (/.s f0-7 f1-3)) [] -> [] + lqc2 vf1, 0(gp) ;; [ 94] (set! a0-16 (vector-float*!2 a0-15 gp-1 f0-8)) + ;; [a0: vector gp: vector ] -> [a0: vector ] + mfc1 a1, f0 + qmtc2.i vf2, a1 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a0) + vmove.w vf6, vf0 ;; [ 95] (set! v0-5 (vector+!2 v0-4 v1-35 a0-16)) + ;; [v0: vector v1: vector a0: vector ] -> [v0: vector ] + lqc2 vf4, 0(v1) + lqc2 vf5, 0(a0) + vadd.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v0) + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 32(sp) + jr ra + daddiu sp, sp, 48 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-flop) + ((arg0 float) (arg1 float) (arg2 float)) + (if (and (= (-> self fact-info-target eco-type) (pickup-type eco-yellow)) + (>= (-> self fact-info-target eco-level) 1.0) + ) + (go target-yellow-jump-blast) + ) + (if (= arg2 0.0) + (set-forward-vel arg2) + (set-forward-vel (-> self control unknown-float01)) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *flop-mods*) + (set! (-> self control unknown-uint20) (the-as uint 0)) + (set! (-> self control dynam gravity-max) 245760.0) + (set! (-> self control dynam gravity-length) 245760.0) + (let ((gp-1 (new-stack-vector0))) + (let ((f0-6 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-1 (-> self control transv) (vector-float*! gp-1 (-> self control dynam gravity-normal) f0-6)) + ) + (let* ((f0-7 (vector-length gp-1)) + (f1-3 f0-7) + (f2-0 29491.2) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) + (vector-float*! gp-1 gp-1 (/ f0-7 f1-3)) + ) + ) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (event target-flop) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x60, fp? 1 ra? 1 ep? 1 + ;gprs: gp s5 s4 s3 + ;fprs: f30 +;; v0-0: object v1-0: symbol a0-0: process a0-4: symbol +;; a1-0: int a2-0: symbol a3-0: event-message-block s6-0: target +;; t9-3: function t9-4: function +L108: + daddiu sp, sp, -96 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s3, 16(sp) + sq s4, 32(sp) + sq s5, 48(sp) + sq gp, 64(sp) + swc1 f30, 80(sp) +B0: + or gp, a0, r0 ;; [ 0] (set! arg0 arg0) [a0: process ] -> [gp: process ] + or s5, a1, r0 ;; [ 1] (set! arg1 arg1) [a1: int ] -> [s5: int ] + or s4, a2, r0 ;; [ 2] (set! arg2 arg2) [a2: symbol ] -> [s4: symbol ] + or s3, a3, r0 ;; [ 3] (set! arg3 arg3) [a3: event-message-block ] -> [s3: event-message-block ] + lw t9, target-bonk-event-handler(s7);; [ 4] (set! t9-0 target-bonk-event-handler) + ;; [] -> [t9: (function process int symbol event-message-block object :behavior target) ] + or a0, gp, r0 ;; [ 5] (set! a0-1 arg0) [gp: process ] -> [a0: process ] + or a1, s5, r0 ;; [ 6] (set! a1-1 arg1) [s5: int ] -> [a1: int ] + or a2, s4, r0 ;; [ 7] (set! a2-1 arg2) [s4: symbol ] -> [a2: symbol ] + or a3, s3, r0 ;; [ 8] (set! a3-1 arg3) [s3: event-message-block ] -> [a3: event-message-block ] + jalr ra, t9 ;; [ 9] (call! a0-1 a1-1 a2-1 a3-1) + ;; [a0: process a1: int a2: symbol a3: event-message-block t9: (function process int symbol event-message-block object :behavior target) ] -> [v0: object ] + sll v0, ra, 0 + + beq s7, v0, L109 ;; [ 10] (b! (not v0-0) L109 (nop!)) [v0: object ] -> [] + sll r0, r0, 0 + +B1: + beq r0, r0, L113 ;; [ 11] (b! #t L113 (nop!)) [] -> [] + sll r0, r0, 0 + +B2: +L109: + or v1, s4, r0 ;; [ 12] (set! v1-0 arg2) [s4: symbol ] -> [v1: symbol ] + daddiu a0, s7, swim ;; [ 13] (set! a0-2 'swim) [] -> [a0: symbol ] + bne v1, a0, L112 ;; [ 14] (b! (!= v1-0 a0-2) L112 (nop!)) [v1: symbol a0: symbol ] -> [] + sll r0, r0, 0 + +B3: + lui v1, L807 ;; [ 15] (set! v1-1 L807) [] -> [v1: ] + ori v1, v1, L807 + addu v1, fp, v1 + lwc1 f30, 0(v1) ;; [ 16] (set! f30-0 (l.f v1-1)) [v1: ] -> [] + lw t9, target-height-above-ground(s7);; [ 17] (set! t9-1 target-height-above-ground) + ;; [] -> [t9: (function float :behavior target) ] + jalr ra, t9 ;; [ 18] (call!) [t9: (function float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 19] (set! f0-0 (gpr->fpr v0-1)) [v0: float ] -> [] + c.lt.s f30, f0 ;; [ 20] (b! (>=.s f30-0 f0-0) L110 (nop!)) [] -> [] + bc1f L110 + sll r0, r0, 0 + +B4: + lwu v1, 120(s6) ;; [ 21] (set! v1-2 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu a0, 36(v1) ;; [ 22] (set! a0-3 (l.wu (+ v1-2 36))) [v1: joint-control ] -> [a0: effect-control ] + lwu v1, -4(a0) ;; [ 23] (set! v1-3 (l.wu (+ a0-3 -4))) + ;; [a0: effect-control ] -> [v1: ] + lwu t9, 56(v1) ;; [ 24] (set! t9-2 (l.wu (+ v1-3 56))) + ;; [v1: ] -> [t9: ] + daddiu a1, s7, swim-flop ;; [ 25] (set! a1-2 'swim-flop) [] -> [a1: symbol ] + lui v1, L787 ;; [ 26] (set! v1-4 L787) [] -> [v1: ] + ori v1, v1, L787 + addu v1, fp, v1 + lw a2, 0(v1) ;; [ 27] (set! a2-2 (l.w v1-4)) [v1: ] -> [a2: int ] + addiu a3, r0, -1 ;; [ 28] (set! a3-2 -1) [] -> [a3: ] + jalr ra, t9 ;; [ 29] (call! a0-3 a1-2 a2-2 a3-2) + ;; [a0: effect-control a1: symbol a2: int a3: t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 30] (set! v1-5 v0-2) [v0: object ] -> [v1: object ] + lw t9, enter-state(s7) ;; [ 31] (set! t9-3 enter-state) [] -> [t9: ] + lw v1, target-swim-down(s7);; [ 32] (set! v1-6 target-swim-down) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 33] (s.w! (+ self 72) v1-6) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 34] (call!) [t9: (function object :behavior target) ] -> [v0: object ] + sll v0, ra, 0 + + beq r0, r0, L111 ;; [ 35] (b! #t L111 (nop!)) [] -> [] + sll r0, r0, 0 + +B5: +L110: + lw t9, enter-state(s7) ;; [ 36] (set! t9-4 enter-state) [] -> [t9: ] + daddiu a0, s7, swim ;; [ 37] (set! a0-4 'swim) [] -> [a0: symbol ] + lw v1, target-flop-hit-ground(s7);; [ 38] (set! v1-7 target-flop-hit-ground) [] -> [v1: (state symbol target) ] + sw v1, 72(s6) ;; [ 39] (s.w! (+ self 72) v1-7) [v1: (state symbol target) s6: target ] -> [] + jalr ra, t9 ;; [ 40] (call! a0-4) + ;; [a0: symbol t9: (function symbol object :behavior target) ] -> [v0: object ] + sll v0, ra, 0 + +B6: +L111: + beq r0, r0, L113 ;; [ 41] (b! #t L113 (nop!)) [] -> [] + sll r0, r0, 0 + +B7: +L112: + lw t9, target-dangerous-event-handler(s7);; [ 42] (set! t9-5 target-dangerous-event-handler) + ;; [] -> [t9: (function process int symbol event-message-block object :behavior target) ] + or a0, gp, r0 ;; [ 43] (set! a0-5 arg0) [gp: process ] -> [a0: process ] + or a1, s5, r0 ;; [ 44] (set! a1-3 arg1) [s5: int ] -> [a1: int ] + or a2, s4, r0 ;; [ 45] (set! a2-3 arg2) [s4: symbol ] -> [a2: symbol ] + or a3, s3, r0 ;; [ 46] (set! a3-3 arg3) [s3: event-message-block ] -> [a3: event-message-block ] + jalr ra, t9 ;; [ 47] (call! a0-5 a1-3 a2-3 a3-3) + ;; [a0: process a1: int a2: symbol a3: event-message-block t9: (function process int symbol event-message-block object :behavior target) ] -> [v0: object ] + sll v0, ra, 0 + +B8: +L113: + ld ra, 0(sp) + ld fp, 8(sp) + lwc1 f30, 80(sp) + lq gp, 64(sp) + lq s5, 48(sp) + lq s4, 32(sp) + lq s3, 16(sp) + jr ra + daddiu sp, sp, 96 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (event target-flop) + ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v0-0 (target-bonk-event-handler arg0 arg1 arg2 arg3))) + (cond + (v0-0 + (empty) + v0-0 + ) + ((let ((v1-0 arg2)) + (= v1-0 'swim) + ) + (cond + ((< 6144.0 (target-height-above-ground)) + (dummy-10 (-> self skel effect) 'swim-flop (the-as float -1.0) -1) + (let ((t9-3 enter-state)) + (set! (-> self next-state) target-swim-down) + ((the-as (function object :behavior target) t9-3)) + ) + ) + (else + (let ((t9-4 enter-state) + (a0-4 'swim) + ) + (set! (-> self next-state) target-flop-hit-ground) + ((the-as (function symbol object :behavior target) t9-4) a0-4) + ) + ) + ) + ) + (else + (target-dangerous-event-handler arg0 arg1 arg2 arg3) + ) + ) + ) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-attack-uppercut-jump) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x40, fp? 1 ra? 1 ep? 1 + ;gprs: gp s5 + ;fprs: f30 +;; Warnings: +;; INFO: Return type mismatch object vs none. + +;; a1-2: int +;; s5-0: (function align-control align-opts float float float trsqv) +;; s6-0: target +;; gp-0: align-control +L114: + daddiu sp, sp, -64 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s5, 16(sp) + sq gp, 32(sp) + swc1 f30, 48(sp) +B0: + lwu a0, 128(s6) ;; [ 0] (set! a0-1 (l.wu (+ self 128))) [s6: target ] -> [a0: align-control ] + lwu v1, -4(a0) ;; [ 1] (set! v1-0 (l.wu (+ a0-1 -4))) + ;; [a0: align-control ] -> [v1: ] + lwu t9, 52(v1) ;; [ 2] (set! t9-0 (l.wu (+ v1-0 52))) + ;; [v1: ] -> [t9: ] + jalr ra, t9 ;; [ 3] (call! a0-1) + ;; [a0: align-control t9: ] -> [v0: transformq ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 4] (set! v1-1 v0-0) [v0: transformq ] -> [v1: transformq ] +B1: +L115: + lwu s6, 44(s6) ;; [ 5] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [ 6] (set! v1-2 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 7] (set! v1-3 (l.wu (+ v1-2 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 8] (set! a0-2 (+ v1-3 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [ 9] (set! v1-4 (l.wu (+ a0-2 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 10] (set! v1-5 (l.wu (+ v1-4 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 11] (set! v1-6 (l.h (+ v1-5 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 12] (set! v1-7 (+ v1-6 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 13] (set! f0-0 (gpr->fpr v1-7)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 14] (set! f0-1 (i2f f0-0)) [] -> [] + swc1 f0, 24(a0) ;; [ 15] (s.f! (+ a0-2 24) f0-1) [a0: joint-control-channel ] -> [] + lui v1, L772 ;; [ 16] (set! v1-8 L772) [] -> [v1: ] + ori v1, v1, L772 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 17] (set! f0-2 (l.f v1-8)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [ 18] (s.f! (+ a0-2 28) f0-2) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 19] (set! t9-1 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [ 20] (set! a1-1 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [ 21] (set! a2-0 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 22] (call! a0-2 a1-1 a2-0) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 23] (set! v1-9 v0-1) [v0: int ] -> [v1: int ] + lwu a0, 128(s6) ;; [ 24] (set! a0-3 (l.wu (+ self 128))) [s6: target ] -> [a0: align-control ] + lwu v1, -4(a0) ;; [ 25] (set! v1-10 (l.wu (+ a0-3 -4))) + ;; [a0: align-control ] -> [v1: ] + lwu t9, 52(v1) ;; [ 26] (set! t9-2 (l.wu (+ v1-10 52))) + ;; [v1: ] -> [t9: ] + jalr ra, t9 ;; [ 27] (call! a0-3) + ;; [a0: align-control t9: ] -> [v0: transformq ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 28] (set! v1-11 v0-2) [v0: transformq ] -> [v1: transformq ] + lwu gp, 128(s6) ;; [ 29] (set! gp-0 (l.wu (+ self 128))) [s6: target ] -> [gp: align-control ] + lwu v1, -4(gp) ;; [ 30] (set! v1-12 (l.wu (+ gp-0 -4))) + ;; [gp: align-control ] -> [v1: ] + lwu s5, 56(v1) ;; [ 31] (set! s5-0 (l.wu (+ v1-12 56))) + ;; [v1: ] -> [s5: ] + lui v1, L742 ;; [ 32] (set! v1-13 L742) [] -> [v1: ] + ori v1, v1, L742 + addu v1, fp, v1 + lwc1 f30, 0(v1) ;; [ 33] (set! f30-0 (l.f v1-13)) [v1: ] -> [] + lw t9, ja-aframe-num(s7) ;; [ 34] (set! t9-3 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 35] (set! a0-4 0) [] -> [a0: ] + jalr ra, t9 ;; [ 36] (call! a0-4) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 37] (set! f0-3 (gpr->fpr v0-3)) [v0: float ] -> [] + c.lt.s f30, f0 ;; [ 38] (b! (<.s f30-0 f0-3) L116 (nop!)) [] -> [] + bc1t L116 + sll r0, r0, 0 + +B2: + addiu a1, r0, 18 ;; [ 39] (set! a1-2 18) [] -> [a1: ] + beq r0, r0, L118 ;; [ 40] (b! #t L118 (nop!)) [] -> [] + sll r0, r0, 0 + +B3: +L116: + lui v1, L806 ;; [ 41] (set! v1-14 L806) [] -> [v1: ] + ori v1, v1, L806 + addu v1, fp, v1 + lwc1 f30, 0(v1) ;; [ 42] (set! f30-1 (l.f v1-14)) [v1: ] -> [] + lw t9, ja-aframe-num(s7) ;; [ 43] (set! t9-4 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 44] (set! a0-5 0) [] -> [a0: ] + jalr ra, t9 ;; [ 45] (call! a0-5) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 46] (set! f0-4 (gpr->fpr v0-4)) [v0: float ] -> [] + c.lt.s f30, f0 ;; [ 47] (b! (<.s f30-1 f0-4) L117 (nop!)) [] -> [] + bc1t L117 + sll r0, r0, 0 + +B4: + lw v1, *double-jump-mods*(s7);; [ 48] (set! v1-15 *double-jump-mods*) [] -> [v1: surface ] + lwu a0, 108(s6) ;; [ 49] (set! a0-6 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sw v1, 656(a0) ;; [ 50] (s.w! (+ a0-6 656) v1-15) [v1: surface a0: control-info ] -> [] + addiu a1, r0, 2 ;; [ 51] (set! a1-2 2) [] -> [a1: ] + beq r0, r0, L118 ;; [ 52] (b! #t L118 (nop!)) [] -> [] + sll r0, r0, 0 + +B5: +L117: + addiu a1, r0, 0 ;; [ 53] (set! a1-2 0) [] -> [a1: ] +B6: +L118: + lui v1, L786 ;; [ 54] (set! v1-16 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw a2, 0(v1) ;; [ 55] (set! a2-1 (l.w v1-16)) [v1: ] -> [a2: int ] + lui v1, L763 ;; [ 56] (set! v1-17 L763) [] -> [v1: ] + ori v1, v1, L763 + addu v1, fp, v1 + lw a3, 0(v1) ;; [ 57] (set! a3-0 (l.w v1-17)) [v1: ] -> [a3: int ] + lui v1, L786 ;; [ 58] (set! v1-18 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw t0, 0(v1) ;; [ 59] (set! t0-0 (l.w v1-18)) [v1: ] -> [t0: int ] + or t9, s5, r0 ;; [ 60] (set! t9-5 s5-0) + ;; [s5: ] -> [t9: ] + or a0, gp, r0 ;; [ 61] (set! a0-7 gp-0) [gp: align-control ] -> [a0: align-control ] + jalr ra, t9 ;; [ 62] (call! a0-7 a1-2 a2-1 a3-0 t0-0) + ;; [a0: align-control a1: int a2: int a3: int t0: int t9: ] -> [v0: trsqv ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 63] (set! v1-19 v0-5) [v0: trsqv ] -> [v1: trsqv ] + lw t9, ja-done?(s7) ;; [ 64] (set! t9-6 ja-done?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 65] (set! a0-8 0) [] -> [a0: ] + jalr ra, t9 ;; [ 66] (call! a0-8) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L115 ;; [ 67] (b! (not v0-6) L115 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B7: + or v1, s7, r0 ;; [ 68] (set! v1-20 #f) [] -> [v1: '#f ] + lw t9, enter-state(s7) ;; [ 69] (set! t9-7 enter-state) [] -> [t9: ] + or a0, s7, r0 ;; [ 70] (set! a0-9 #f) [] -> [a0: '#f ] + lw v1, target-falling(s7) ;; [ 71] (set! v1-21 target-falling) [] -> [v1: (state symbol target) ] + sw v1, 72(s6) ;; [ 72] (s.w! (+ self 72) v1-21) [v1: (state symbol target) s6: target ] -> [] + jalr ra, t9 ;; [ 73] (call! a0-9) [a0: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + ld ra, 0(sp) + ld fp, 8(sp) + lwc1 f30, 48(sp) + lq gp, 32(sp) + lq s5, 16(sp) + jr ra + daddiu sp, sp, 64 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-attack-uppercut-jump) + ((arg0 float) (arg1 float)) + (compute-alignment! (-> self align)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.9)) + (compute-alignment! (-> self align)) + (let* ((gp-0 (-> self align)) + (s5-0 (method-of-object gp-0 align!)) + (a1-2 (cond + ((>= 30.0 (ja-aframe-num 0)) + 18 + ) + ((>= 43.0 (ja-aframe-num 0)) + (set! (-> self control unknown-surface00) *double-jump-mods*) + 2 + ) + (else + 0 + ) + ) + ) + ) + (s5-0 gp-0 (the-as align-opts a1-2) (the-as float 1.0) (the-as float 0.95) (the-as float 1.0)) + ) + ) + (go target-falling #f) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (trans target-attack-uppercut-jump) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x40, fp? 1 ra? 1 ep? 1 + ;gprs: gp s5 s4 +;; s6-0: target +L119: + daddiu sp, sp, -64 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s4, 16(sp) + sq s5, 32(sp) + sq gp, 48(sp) +B0: + lwu v1, 108(s6) ;; [ 0] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld v1, 268(v1) ;; [ 1] (set! v1-1 (l.d (+ v1-0 268))) [v1: control-info ] -> [v1: cshape-moving-flags ] + andi v1, v1, 1 ;; [ 2] (set! v1-2 (logand v1-1 1)) + ;; [v1: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + beq v1, r0, L120 ;; [ 3] (b! (zero? v1-2) L120 (set! v1-3 #f)) [v1: cshape-moving-flags ] -> [v1: '#f ] + or v1, s7, r0 + +B1: + lw t9, enter-state(s7) ;; [ 4] (set! t9-0 enter-state) [] -> [t9: ] + or a0, s7, r0 ;; [ 5] (set! a0-0 #f) [] -> [a0: '#f ] + lw v1, target-hit-ground(s7);; [ 6] (set! v1-4 target-hit-ground) [] -> [v1: (state symbol target) ] + sw v1, 72(s6) ;; [ 7] (s.w! (+ self 72) v1-4) [v1: (state symbol target) s6: target ] -> [] + jalr ra, t9 ;; [ 8] (call! a0-0) [a0: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 9] (set! v1-5 v0-0) [v0: object ] -> [v1: object ] +B2: +L120: + lwu v1, 108(s6) ;; [ 10] (set! v1-6 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 11] (set! v1-7 (l.wu (+ v1-6 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 12] (set! v1-8 (l.w (+ v1-7 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 13] (set! v1-9 (sll v1-8 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 14] (set! a0-1 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 15] (set! v1-10 (+ v1-9 a0-1)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 16] (set! v1-11 (l.wu (+ v1-10 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 17] (set! v1-12 (l.wu (+ v1-11 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 32768 ;; [ 18] (set! v1-13 (logand v1-12 #x8000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L123 ;; [ 19] (bl! (zero? v1-13) L123 (no-delay!)) [v1: pad-buttons ] -> [] +B3: + or v1, s7, r0 ;; [ 20] (set! v1-14 #f) [] -> [v1: '#f ] + +B4: + lwu v1, 108(s6) ;; [ 21] (set! v1-15 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 22] (set! v1-16 (l.wu (+ v1-15 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 23] (set! a0-2 (+ v1-16 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 24] (set! v1-17 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 25] (set! v1-18 (+ v1-17 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [ 26] (set! f0-0 (vec3dot a0-2 v1-18)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [ 27] (set! v1-19 (fpr->gpr f0-0)) [] -> [v1: float ] + mtc1 f0, v1 ;; [ 28] (set! f0-1 (gpr->fpr v1-19)) [v1: float ] -> [] + lui v1, L804 ;; [ 29] (set! v1-20 L804) [] -> [v1: ] + ori v1, v1, L804 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 30] (set! f1-0 (l.f v1-20)) [v1: ] -> [] + c.lt.s f0, f1 ;; [ 31] (b! (<.s f0-1 f1-0) L121 (set! v1-21 #t)) [] -> [v1: symbol ] + bc1t L121 + daddiu v1, s7, 8 + +B5: + or v1, s7, r0 ;; [ 32] (set! v1-21 #f) [] -> [v1: '#f ] +B6: +L121: + beql s7, v1, L123 ;; [ 33] (bl! (not v1-21) L123 (no-delay!)) [v1: symbol ] -> [] +B7: + or v1, v1, r0 ;; [ 34] (set! v1-14 v1-21) [v1: symbol ] -> [v1: symbol ] + +B8: + lui v1, L805 ;; [ 35] (set! v1-22 L805) [] -> [v1: ] + ori v1, v1, L805 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 36] (set! f0-2 (l.f v1-22)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 37] (set! v1-23 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 38] (set! v1-24 (l.wu (+ v1-23 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 39] (set! a0-3 (+ v1-24 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 40] (set! v1-25 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 41] (set! v1-26 (+ v1-25 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f1, 0(a0) ;; [ 42] (set! f1-1 (vec3dot a0-3 v1-26)) [v1: vector a0: vector ] -> [] + lwc1 f2, 4(a0) + lwc1 f3, 8(a0) + lwc1 f4, 0(v1) + lwc1 f5, 4(v1) + lwc1 f6, 8(v1) + mula.s f1, f4 + madda.s f2, f5 + madd.s f1, f3, f6 + mfc1 v1, f1 ;; [ 43] (set! v1-27 (fpr->gpr f1-1)) [] -> [v1: float ] + mtc1 f1, v1 ;; [ 44] (set! f1-2 (gpr->fpr v1-27)) [v1: float ] -> [] + c.lt.s f0, f1 ;; [ 45] (b! (<.s f0-2 f1-2) L122 (set! v1-28 #t)) [] -> [v1: symbol ] + bc1t L122 + daddiu v1, s7, 8 + +B9: + or v1, s7, r0 ;; [ 46] (set! v1-28 #f) [] -> [v1: '#f ] +B10: +L122: + beql s7, v1, L123 ;; [ 47] (bl! (not v1-28) L123 (no-delay!)) [v1: symbol ] -> [] +B11: + or v1, v1, r0 ;; [ 48] (set! v1-14 v1-28) [v1: symbol ] -> [v1: symbol ] + +B12: + lw v1, *display*(s7) ;; [ 49] (set! v1-29 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 50] (set! v1-30 (l.d (+ v1-29 780))) [v1: display ] -> [v1: time-frame ] + lwu a0, 108(s6) ;; [ 51] (set! a0-4 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 1708(a0) ;; [ 52] (set! a0-5 (l.d (+ a0-4 1708))) [a0: control-info ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [ 53] (set! v1-31 (- v1-30 a0-5)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + lw a0, *TARGET-bank*(s7) ;; [ 54] (set! a0-6 *TARGET-bank*) [] -> [a0: target-bank ] + ld a0, 564(a0) ;; [ 55] (set! a0-7 (l.d (+ a0-6 564))) [a0: target-bank ] -> [a0: seconds ] + slt v1, v1, a0 ;; [ 56] (set! a0-8 (>=.si v1-31 a0-7)) [v1: time-frame a0: seconds ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L123 ;; [ 57] (bl! (not a0-8) L123 (no-delay!)) [a0: symbol ] -> [] +B13: + or v1, a0, r0 ;; [ 58] (set! v1-14 a0-8) [a0: symbol ] -> [v1: symbol ] + +B14: + lwu v1, 160(s6) ;; [ 59] (set! v1-32 (l.wu (+ self 160))) [s6: target ] -> [v1: state-flags ] + andi v1, v1, 4096 ;; [ 60] (set! v1-33 (logand v1-32 4096)) [v1: state-flags ] -> [v1: state-flags ] + bnel v1, r0, L123 ;; [ 61] (bl! (nonzero? v1-33) L123 (no-delay!)) [v1: state-flags ] -> [] +B15: + or v1, s7, r0 ;; [ 62] (set! v1-14 #f) [] -> [v1: '#f ] + +B16: + daddiu v1, s7, 8 ;; [ 63] (set! v1-34 #t) [] -> [v1: symbol ] + lwu a0, 108(s6) ;; [ 64] (set! a0-9 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 660(a0) ;; [ 65] (set! a0-10 (l.wu (+ a0-9 660))) [a0: control-info ] -> [a0: surface ] + lwu a0, 144(a0) ;; [ 66] (set! a0-11 (l.wu (+ a0-10 144))) [a0: surface ] -> [a0: surface-flags ] + andi a0, a0, 384 ;; [ 67] (set! a0-12 (logand a0-11 384)) [a0: surface-flags ] -> [a0: surface-flags ] + movn v1, s7, a0 ;; [ 68] (cmove-#f-nonzero v1-14 a0-12 v1-34) + ;; [v1: symbol a0: surface-flags ] -> [v1: symbol ] +B17: +L123: + beq s7, v1, L126 ;; [ 69] (b! (not v1-14) L126 (set! v1-35 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B18: + lwu a0, 108(s6) ;; [ 70] (set! a0-13 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu v1, -4(a0) ;; [ 71] (set! v1-36 (l.wu (+ a0-13 -4))) + ;; [a0: control-info ] -> [v1: ] + lwu t9, 88(v1) ;; [ 72] (set! t9-1 (l.wu (+ v1-36 88))) + ;; [v1: ] -> [t9: ] + lwu v1, 108(s6) ;; [ 73] (set! v1-37 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a1, v1, 108 ;; [ 74] (set! a1-0 (+ v1-37 108)) [v1: control-info ] -> [a1: quaternion ] + jalr ra, t9 ;; [ 75] (call! a0-13 a1-0) + ;; [a0: control-info a1: quaternion t9: ] -> [v0: quaternion ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 76] (set! v1-38 v0-1) [v0: quaternion ] -> [v1: quaternion ] + lw t9, build-conversions(s7);; [ 77] (set! t9-2 build-conversions) + ;; [] -> [t9: (function vector vector :behavior target) ] + lwu v1, 108(s6) ;; [ 78] (set! v1-39 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a0, v1, 60 ;; [ 79] (set! a0-14 (+ v1-39 60)) [v1: control-info ] -> [a0: vector ] + jalr ra, t9 ;; [ 80] (call! a0-14) + ;; [a0: vector t9: (function vector vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + lw t9, enter-state(s7) ;; [ 81] (set! t9-3 enter-state) [] -> [t9: ] + lui v1, L784 ;; [ 82] (set! v1-40 L784) [] -> [v1: ] + ori v1, v1, L784 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 83] (set! a0-15 (l.w v1-40)) [v1: ] -> [a0: int ] + lui v1, L731 ;; [ 84] (set! v1-41 L731) [] -> [v1: ] + ori v1, v1, L731 + addu v1, fp, v1 + lw a1, 0(v1) ;; [ 85] (set! a1-1 (l.w v1-41)) [v1: ] -> [a1: int ] + lwu v1, 108(s6) ;; [ 86] (set! v1-42 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 87] (set! v1-43 (l.wu (+ v1-42 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 88] (set! v1-44 (l.w (+ v1-43 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 89] (set! v1-45 (sll v1-44 2)) [v1: int ] -> [v1: ] + lw a2, *cpad-list*(s7) ;; [ 90] (set! a2-0 *cpad-list*) [] -> [a2: cpad-list ] + daddu v1, v1, a2 ;; [ 91] (set! v1-46 (+ v1-45 a2-0)) + ;; [v1: a2: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 92] (set! v1-47 (l.wu (+ v1-46 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwc1 f0, 72(v1) ;; [ 93] (set! f0-3 (l.f (+ v1-47 72))) [v1: cpad-info ] -> [] + mtc1 f1, r0 ;; [ 94] (set! f1-3 0) [] -> [] + c.eq.s f0, f1 ;; [ 95] (b! (!=.s f0-3 f1-3) L124 (nop!)) [] -> [] + bc1f L124 + sll r0, r0, 0 + +B19: + lui v1, L814 ;; [ 96] (set! v1-48 L814) [] -> [v1: ] + ori v1, v1, L814 + addu v1, fp, v1 + lw a2, 0(v1) ;; [ 97] (set! a2-1 (l.w v1-48)) [v1: ] -> [a2: int ] + beq r0, r0, L125 ;; [ 98] (b! #t L125 (nop!)) [] -> [] + sll r0, r0, 0 + +B20: +L124: + lui v1, L758 ;; [ 99] (set! v1-49 L758) [] -> [v1: ] + ori v1, v1, L758 + addu v1, fp, v1 + lw a2, 0(v1) ;; [100] (set! a2-1 (l.w v1-49)) [v1: ] -> [a2: int ] +B21: +L125: + lw v1, target-flop(s7) ;; [101] (set! v1-50 target-flop) [] -> [v1: (state float float float target) ] + sw v1, 72(s6) ;; [102] (s.w! (+ self 72) v1-50) [v1: (state float float float target) s6: target ] -> [] + jalr ra, t9 ;; [103] (call! a0-15 a1-1 a2-1) + ;; [a0: int a1: int a2: int t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [104] (set! v1-51 v0-3) [v0: object ] -> [v1: object ] +B22: +L126: + lwu v1, 108(s6) ;; [105] (set! v1-52 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [106] (set! v1-53 (l.wu (+ v1-52 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [107] (set! v1-54 (l.w (+ v1-53 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [108] (set! v1-55 (sll v1-54 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [109] (set! a0-16 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [110] (set! v1-56 (+ v1-55 a0-16)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [111] (set! v1-57 (l.wu (+ v1-56 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [112] (set! v1-58 (l.wu (+ v1-57 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 8192 ;; [113] (set! v1-59 (logand v1-58 8192)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L128 ;; [114] (bl! (zero? v1-59) L128 (no-delay!)) [v1: pad-buttons ] -> [] +B23: + or v1, s7, r0 ;; [115] (set! v1-60 #f) [] -> [v1: '#f ] + +B24: + lw t9, can-feet?(s7) ;; [116] (set! t9-4 can-feet?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [117] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + beql s7, v0, L128 ;; [118] (bl! (not v0-4) L128 (no-delay!)) [v0: symbol ] -> [] +B25: + or v1, v0, r0 ;; [119] (set! v1-60 v0-4) [v0: symbol ] -> [v1: symbol ] + +B26: + lwu v1, 120(s6) ;; [120] (set! v1-61 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [121] (set! v1-62 (l.w (+ v1-61 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [122] (b! (<=0.si v1-62) L127 (set! v1-63 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L127 + or v1, s7, r0 + +B27: + lwu v1, 120(s6) ;; [123] (set! v1-64 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [124] (set! v1-65 (l.wu (+ v1-64 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [125] (set! v1-63 (l.wu (+ v1-65 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B28: +L127: + lwu a0, 116(s6) ;; [126] (set! a0-17 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [127] (set! a0-18 (l.wu (+ a0-17 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 276(a0) ;; [128] (set! a0-19 (l.wu (+ a0-18 276))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [129] (set! a0-20 (= v1-63 a0-19)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L128 ;; [130] (bl! (not a0-20) L128 (no-delay!)) [a0: symbol ] -> [] +B29: + or v1, a0, r0 ;; [131] (set! v1-60 a0-20) [a0: symbol ] -> [v1: symbol ] + +B30: + lw t9, ja-aframe-num(s7) ;; [132] (set! t9-5 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [133] (set! a0-21 0) [] -> [a0: ] + jalr ra, t9 ;; [134] (call! a0-21) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [135] (set! f0-4 (gpr->fpr v0-5)) [v0: float ] -> [] + lui v1, L803 ;; [136] (set! v1-66 L803) [] -> [v1: ] + ori v1, v1, L803 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [137] (set! f1-4 (l.f v1-66)) [v1: ] -> [] + c.lt.s f0, f1 ;; [138] (b! (>=.s f0-4 f1-4) L128 (set! v1-60 #t)) [] -> [v1: symbol ] + bc1f L128 + daddiu v1, s7, 8 + +B31: + or v1, s7, r0 ;; [139] (set! v1-60 #f) [] -> [v1: '#f ] +B32: +L128: + beq s7, v1, L129 ;; [140] (b! (not v1-60) L129 (set! v1-67 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B33: + lw t9, enter-state(s7) ;; [141] (set! t9-6 enter-state) [] -> [t9: ] + daddiu a0, s7, uppercut ;; [142] (set! a0-22 'uppercut) [] -> [a0: symbol ] + lw v1, target-attack-air(s7);; [143] (set! v1-68 target-attack-air) [] -> [v1: (state symbol target) ] + sw v1, 72(s6) ;; [144] (s.w! (+ self 72) v1-68) [v1: (state symbol target) s6: target ] -> [] + jalr ra, t9 ;; [145] (call! a0-22) [a0: symbol t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [146] (set! v1-69 v0-6) [v0: object ] -> [v1: object ] +B34: +L129: + lw t9, mod-var-jump(s7) ;; [147] (set! t9-7 mod-var-jump) + ;; [] -> [t9: (function symbol symbol symbol vector vector :behavior target) ] + daddiu a0, s7, #t ;; [148] (set! a0-23 #t) [] -> [a0: symbol ] + daddiu a1, s7, #t ;; [149] (set! a1-2 #t) [] -> [a1: symbol ] + daddiu a2, s7, 8 ;; [150] (set! a2-2 #t) [] -> [a2: symbol ] + lwu v1, 108(s6) ;; [151] (set! v1-70 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [152] (set! v1-71 (l.wu (+ v1-70 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [153] (set! v1-72 (l.w (+ v1-71 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [154] (set! v1-73 (sll v1-72 2)) [v1: int ] -> [v1: ] + lw a3, *cpad-list*(s7) ;; [155] (set! a3-0 *cpad-list*) [] -> [a3: cpad-list ] + daddu v1, v1, a3 ;; [156] (set! v1-74 (+ v1-73 a3-0)) + ;; [v1: a3: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [157] (set! v1-75 (l.wu (+ v1-74 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 40(v1) ;; [158] (set! v1-76 (l.wu (+ v1-75 40))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 16384 ;; [159] (set! v1-77 (logand v1-76 #x4000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + movz a2, s7, v1 ;; [160] (cmove-#f-zero a2-3 v1-77 a2-2) [v1: pad-buttons a2: symbol ] -> [a2: symbol ] + lwu v1, 108(s6) ;; [161] (set! v1-78 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a3, v1, 60 ;; [162] (set! a3-1 (+ v1-78 60)) [v1: control-info ] -> [a3: vector ] + jalr ra, t9 ;; [163] (call! a0-23 a1-2 a2-3 a3-1) + ;; [a0: symbol a1: symbol a2: symbol a3: vector t9: (function symbol symbol symbol vector vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + lwu v1, 140(s6) ;; [164] (set! v1-79 (l.wu (+ self 140))) [s6: target ] -> [v1: fact-info-target ] + lw v1, 36(v1) ;; [165] (set! v1-80 (l.w (+ v1-79 36))) [v1: fact-info-target ] -> [v1: pickup-type ] + daddiu v1, v1, -2 ;; [166] (set! v1-81 (+ v1-80 -2)) [v1: pickup-type ] -> [v1: ] + daddiu a0, s7, 8 ;; [167] (set! a0-24 (zero? v1-81)) [v1: ] -> [a0: symbol ] + movn a0, s7, v1 + beql s7, a0, L130 ;; [168] (bl! (not a0-24) L130 (no-delay!)) [a0: symbol ] -> [] +B35: + or v1, a0, r0 ;; [169] (set! v1-82 a0-24) [a0: symbol ] -> [v1: symbol ] + +B36: + lwu v1, 140(s6) ;; [170] (set! v1-83 (l.wu (+ self 140))) [s6: target ] -> [v1: fact-info-target ] + lwc1 f0, 40(v1) ;; [171] (set! f0-5 (l.f (+ v1-83 40))) [v1: fact-info-target ] -> [] + lui v1, L786 ;; [172] (set! v1-84 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [173] (set! f1-5 (l.f v1-84)) [v1: ] -> [] + c.lt.s f0, f1 ;; [174] (b! (>=.s f0-5 f1-5) L130 (set! v1-82 #t)) [] -> [v1: symbol ] + bc1f L130 + daddiu v1, s7, 8 + +B37: + or v1, s7, r0 ;; [175] (set! v1-82 #f) [] -> [v1: '#f ] +B38: +L130: + beq s7, v1, L131 ;; [176] (b! (not v1-82) L131 (set! v1-85 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B39: + lwu v1, 120(s6) ;; [177] (set! v1-86 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu gp, 36(v1) ;; [178] (set! gp-0 (l.wu (+ v1-86 36))) [v1: joint-control ] -> [gp: effect-control ] + lwu v1, -4(gp) ;; [179] (set! v1-87 (l.wu (+ gp-0 -4))) + ;; [gp: effect-control ] -> [v1: ] + lwu s5, 56(v1) ;; [180] (set! s5-0 (l.wu (+ v1-87 56))) + ;; [v1: ] -> [s5: ] + daddiu s4, s7, group-red-eco-spinkick;; [181] (set! s4-0 'group-red-eco-spinkick) [] -> [s4: symbol ] + lw t9, ja-frame-num(s7) ;; [182] (set! t9-8 ja-frame-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [183] (set! a0-25 0) [] -> [a0: ] + jalr ra, t9 ;; [184] (call! a0-25) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + or a2, v0, r0 ;; [185] (set! a2-4 v0-8) [v0: float ] -> [a2: float ] + addiu a3, r0, 23 ;; [186] (set! a3-2 23) [] -> [a3: ] + or t9, s5, r0 ;; [187] (set! t9-9 s5-0) + ;; [s5: ] -> [t9: ] + or a0, gp, r0 ;; [188] (set! a0-26 gp-0) [gp: effect-control ] -> [a0: effect-control ] + or a1, s4, r0 ;; [189] (set! a1-3 s4-0) [s4: symbol ] -> [a1: symbol ] + jalr ra, t9 ;; [190] (call! a0-26 a1-3 a2-4 a3-2) + ;; [a0: effect-control a1: symbol a2: float a3: t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [191] (set! v1-88 v0-9) [v0: object ] -> [v1: object ] + lw t9, cpad-set-buzz!(s7) ;; [192] (set! t9-10 cpad-set-buzz!) + ;; [] -> [t9: (function cpad-info int int time-frame none) ] + lw v1, *cpad-list*(s7) ;; [193] (set! v1-89 *cpad-list*) [] -> [v1: cpad-list ] + lwu a0, 4(v1) ;; [194] (set! a0-27 (l.wu (+ v1-89 4))) [v1: cpad-list ] -> [a0: cpad-info ] + addiu a1, r0, 1 ;; [195] (set! a1-4 1) [] -> [a1: ] + addiu a2, r0, 153 ;; [196] (set! a2-5 153) [] -> [a2: ] + addiu a3, r0, 30 ;; [197] (set! a3-3 30) [] -> [a3: ] + jalr ra, t9 ;; [198] (call! a0-27 a1-4 a2-5 a3-3) + ;; [a0: cpad-info a1: a2: a3: t9: (function cpad-info int int time-frame none) ] -> [v0: none ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [199] (set! v1-90 v0-10) [v0: none ] -> [v1: none ] +B40: +L131: + lwu v1, 108(s6) ;; [200] (set! v1-91 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 2380(v1) ;; [201] (set! v1-92 (l.wu (+ v1-91 2380))) [v1: control-info ] -> [v1: symbol ] + daddiu a0, s7, uppercut ;; [202] (set! a0-28 'uppercut) [] -> [a0: symbol ] + dsubu v1, v1, a0 ;; [203] (set! a0-29 (= v1-92 a0-28)) [v1: symbol a0: symbol ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L132 ;; [204] (bl! (not a0-29) L132 (no-delay!)) [a0: symbol ] -> [] +B41: + or v1, a0, r0 ;; [205] (set! v1-93 a0-29) [a0: symbol ] -> [v1: symbol ] + +B42: + lwu v1, 108(s6) ;; [206] (set! v1-94 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [207] (set! v1-95 (l.wu (+ v1-94 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [208] (set! a0-30 (+ v1-95 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [209] (set! v1-96 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [210] (set! v1-97 (+ v1-96 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [211] (set! f0-6 (vec3dot a0-30 v1-97)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [212] (set! v1-98 (fpr->gpr f0-6)) [] -> [v1: float ] + mtc1 f0, v1 ;; [213] (set! f0-7 (gpr->fpr v1-98)) [v1: float ] -> [] + lui v1, L801 ;; [214] (set! v1-99 L801) [] -> [v1: ] + ori v1, v1, L801 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [215] (set! f1-6 (l.f v1-99)) [v1: ] -> [] + c.lt.s f0, f1 ;; [216] (b! (<.s f0-7 f1-6) L132 (set! v1-93 #t)) [] -> [v1: symbol ] + bc1t L132 + daddiu v1, s7, 8 + +B43: + or v1, s7, r0 ;; [217] (set! v1-93 #f) [] -> [v1: '#f ] +B44: +L132: + beq s7, v1, L133 ;; [218] (b! (not v1-93) L133 (set! v1-100 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B45: + lw t9, target-danger-set!(s7);; [219] (set! t9-11 target-danger-set!) + ;; [] -> [t9: (function symbol symbol float :behavior target) ] + daddiu a0, s7, harmless ;; [220] (set! a0-31 'harmless) [] -> [a0: symbol ] + or a1, s7, r0 ;; [221] (set! a1-5 #f) [] -> [a1: '#f ] + jalr ra, t9 ;; [222] (call! a0-31 a1-5) + ;; [a0: symbol a1: '#f t9: (function symbol symbol float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [223] (set! v1-101 v0-11) [v0: float ] -> [v1: float ] +B46: +L133: + lw t9, slide-down-test(s7);; [224] (set! t9-12 slide-down-test) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [225] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 48(sp) + lq s5, 32(sp) + lq s4, 16(sp) + jr ra + daddiu sp, sp, 64 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (trans target-attack-uppercut-jump) + () + (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (go target-hit-ground #f) + ) + (when (and (cpad-pressed? (-> self control unknown-cpad-info00 number) square) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 22118.4) + (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword36)) + (the-as time-frame (-> *TARGET-bank* stuck-timeout)) + ) + (zero? (logand (-> self state-flags) (state-flags prevent-attack))) + (zero? (logand (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08)) + ) + ) + ) + (set-quaternion! (-> self control) (-> self control dir-targ)) + (build-conversions (-> self control transv)) + (go + target-flop + (the-as float 65502.96) + (the-as float -163840.0) + (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + 0.0 + 68812.8 + ) + ) + ) + ) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) + (can-feet?) + (ja-group? (-> self draw art-group data 62)) + (>= (ja-aframe-num 0) 12.0) + ) + (go target-attack-air 'uppercut) + ) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) + (when (and (= (-> self fact-info-target eco-type) (pickup-type eco-red)) + (>= (-> self fact-info-target eco-level) 1.0) + ) + (dummy-10 (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 23) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) + ) + (if (and (= (-> self control unknown-symbol30) 'uppercut) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) -8192.0) + ) + (target-danger-set! 'harmless #f) + ) + (slide-down-test) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-attack-uppercut-jump) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x30, fp? 1 ra? 1 ep? 1 + ;gprs: gp s5 +;; Warnings: +;; INFO: Return type mismatch float vs none. + +;; a0-0: float a1-0: float s6-0: target +L134: + daddiu sp, sp, -48 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s5, 16(sp) + sq gp, 32(sp) +B0: + or gp, a0, r0 ;; [ 0] (set! arg0 arg0) [a0: float ] -> [gp: float ] + or s5, a1, r0 ;; [ 1] (set! arg1 arg1) [a1: float ] -> [s5: float ] + lwu v1, 108(s6) ;; [ 2] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 260(v1) ;; [ 3] (set! v1-1 (l.wu (+ v1-0 260))) [v1: control-info ] -> [v1: pat-surface ] + dsll32 v1, v1, 20 ;; [ 4] (set! v1-2 (sll v1-1 52)) [v1: pat-surface ] -> [v1: ( << 52) ] + dsrl32 v1, v1, 26 ;; [ 5] (set! v1-3 (srl v1-2 58)) [v1: ( << 52) ] -> [v1: pat-material ] + daddiu v1, v1, -1 ;; [ 6] (set! v1-4 (+ v1-3 -1)) [v1: pat-material ] -> [v1: ] + daddiu a0, s7, 8 ;; [ 7] (set! a0-1 (zero? v1-4)) [v1: ] -> [a0: symbol ] + movn a0, s7, v1 + beql s7, a0, L135 ;; [ 8] (bl! (not a0-1) L135 (no-delay!)) [a0: symbol ] -> [] +B1: + or v1, a0, r0 ;; [ 9] (set! v1-5 a0-1) [a0: symbol ] -> [v1: symbol ] + +B2: + lui v1, L733 ;; [ 10] (set! v1-6 L733) [] -> [v1: ] + ori v1, v1, L733 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 11] (set! f0-0 (l.f v1-6)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 12] (set! v1-7 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f1, 528(v1) ;; [ 13] (set! f1-0 (l.f (+ v1-7 528))) [v1: control-info ] -> [] + c.lt.s f0, f1 ;; [ 14] (b! (<.s f0-0 f1-0) L135 (set! v1-5 #t)) [] -> [v1: symbol ] + bc1t L135 + daddiu v1, s7, 8 + +B3: + or v1, s7, r0 ;; [ 15] (set! v1-5 #f) [] -> [v1: '#f ] +B4: +L135: + beq s7, v1, L136 ;; [ 16] (b! (not v1-5) L136 (set! v1-8 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B5: + lw t9, set-forward-vel(s7);; [ 17] (set! t9-0 set-forward-vel) [] -> [t9: (function float vector :behavior target) ] + lui v1, L733 ;; [ 18] (set! v1-9 L733) [] -> [v1: ] + ori v1, v1, L733 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 19] (set! a0-2 (l.w v1-9)) [v1: ] -> [a0: int ] + jalr ra, t9 ;; [ 20] (call! a0-2) + ;; [a0: int t9: (function float vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 21] (set! v1-10 v0-0) [v0: vector ] -> [v1: vector ] +B6: +L136: + lw v1, *display*(s7) ;; [ 22] (set! v1-11 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 23] (set! v1-12 (l.d (+ v1-11 780))) [v1: display ] -> [v1: time-frame ] + sd v1, 164(s6) ;; [ 24] (s.d! (+ self 164) v1-12) [v1: time-frame s6: target ] -> [] + lw t9, init-var-jump(s7) ;; [ 25] (set! t9-1 init-var-jump) + ;; [] -> [t9: (function float float vector vector vector vector :behavior target) ] + daddiu a2, s7, #t ;; [ 26] (set! a2-0 #t) [] -> [a2: symbol ] + or a3, s7, r0 ;; [ 27] (set! a3-0 #f) [] -> [a3: '#f ] + lwu v1, 108(s6) ;; [ 28] (set! v1-13 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu t0, v1, 60 ;; [ 29] (set! t0-0 (+ v1-13 60)) [v1: control-info ] -> [t0: vector ] + or a0, gp, r0 ;; [ 30] (set! a0-3 arg0) [gp: float ] -> [a0: float ] + or a1, s5, r0 ;; [ 31] (set! a1-1 arg1) [s5: float ] -> [a1: float ] + jalr ra, t9 ;; [ 32] (call! a0-3 a1-1 a2-0 a3-0 t0-0) + ;; [a0: float a1: float a2: symbol a3: '#f t0: vector t9: (function float float vector vector vector vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + addiu v1, r0, -8 ;; [ 33] (set! v1-14 -8) [] -> [v1: ] + lwu a0, 108(s6) ;; [ 34] (set! a0-4 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 268(a0) ;; [ 35] (set! a0-5 (l.d (+ a0-4 268))) [a0: control-info ] -> [a0: cshape-moving-flags ] + and v1, v1, a0 ;; [ 36] (set! v1-15 (logand v1-14 a0-5)) + ;; [v1: a0: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + lwu a0, 108(s6) ;; [ 37] (set! a0-6 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sd v1, 268(a0) ;; [ 38] (s.d! (+ a0-6 268) v1-15) [v1: cshape-moving-flags a0: control-info ] -> [] + lw v1, *uppercut-jump-mods*(s7);; [ 39] (set! v1-16 *uppercut-jump-mods*) [] -> [v1: surface ] + lwu a0, 108(s6) ;; [ 40] (set! a0-7 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sw v1, 656(a0) ;; [ 41] (s.w! (+ a0-7 656) v1-16) [v1: surface a0: control-info ] -> [] + lw t9, target-start-attack(s7);; [ 42] (set! t9-2 target-start-attack) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 43] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, target-danger-set!(s7);; [ 44] (set! t9-3 target-danger-set!) + ;; [] -> [t9: (function symbol symbol float :behavior target) ] + daddiu a0, s7, uppercut ;; [ 45] (set! a0-8 'uppercut) [] -> [a0: symbol ] + or a1, s7, r0 ;; [ 46] (set! a1-2 #f) [] -> [a1: '#f ] + jalr ra, t9 ;; [ 47] (call! a0-8 a1-2) + ;; [a0: symbol a1: '#f t9: (function symbol symbol float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 32(sp) + lq s5, 16(sp) + jr ra + daddiu sp, sp, 48 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-attack-uppercut-jump) + ((arg0 float) (arg1 float)) + (if (and (= (-> self control ground-pat material) (pat-material ice)) + (< 32768.0 (-> self control unknown-float01)) + ) + (set-forward-vel (the-as float 32768.0)) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *uppercut-jump-mods*) + (target-start-attack) + (target-danger-set! 'uppercut #f) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-attack-uppercut) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x50, fp? 1 ra? 1 ep? 1 + ;gprs: gp s5 s4 s3 +;; Warnings: +;; INFO: Return type mismatch object vs none. + +;; a0-0: float a1-0: float s3-0: symbol s6-0: target +L137: + daddiu sp, sp, -80 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s3, 16(sp) + sq s4, 32(sp) + sq s5, 48(sp) + sq gp, 64(sp) +B0: + or gp, a0, r0 ;; [ 0] (set! arg0 arg0) [a0: float ] -> [gp: float ] + or s5, a1, r0 ;; [ 1] (set! arg1 arg1) [a1: float ] -> [s5: float ] + lwu v1, 120(s6) ;; [ 2] (set! v1-0 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 3] (set! v1-1 (l.w (+ v1-0 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 4] (b! (<=0.si v1-1) L138 (set! v1-2 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L138 + or v1, s7, r0 + +B1: + lwu v1, 120(s6) ;; [ 5] (set! v1-3 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 6] (set! v1-4 (l.wu (+ v1-3 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 7] (set! v1-2 (l.wu (+ v1-4 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B2: +L138: + lwu a0, 116(s6) ;; [ 8] (set! a0-1 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 9] (set! a0-2 (l.wu (+ a0-1 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 152(a0) ;; [ 10] (set! a0-3 (l.wu (+ a0-2 152))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 11] (set! s3-0 (= v1-2 a0-3)) [v1: art-joint-anim a0: art-element ] -> [s3: symbol ] + daddiu s3, s7, 8 + movn s3, s7, v1 + lwu v1, 120(s6) ;; [ 12] (set! v1-5 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 13] (set! v1-6 (l.wu (+ v1-5 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s4, r0, v1 ;; [ 14] (set! s4-0 (+ v1-6 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s4: joint-control-channel ] + lwu v1, 116(s6) ;; [ 15] (set! v1-7 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 16] (set! v1-8 (l.wu (+ v1-7 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 276(v1) ;; [ 17] (set! v1-9 (l.wu (+ v1-8 276))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(s4) ;; [ 18] (s.w! (+ s4-0 12) v1-9) [v1: art-element s4: joint-control-channel ] -> [] + lw t9, ja-aframe(s7) ;; [ 19] (set! t9-0 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L721 ;; [ 20] (set! v1-10 L721) [] -> [v1: ] + ori v1, v1, L721 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 21] (set! a0-4 (l.w v1-10)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [ 22] (set! a1-1 0) [] -> [a1: ] + jalr ra, t9 ;; [ 23] (call! a0-4 a1-1) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 24] (set! f0-0 (gpr->fpr v0-0)) [v0: float ] -> [] + swc1 f0, 24(s4) ;; [ 25] (s.f! (+ s4-0 24) f0-0) [s4: joint-control-channel ] -> [] + lui v1, L786 ;; [ 26] (set! v1-11 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 27] (set! f0-1 (l.f v1-11)) [v1: ] -> [] + swc1 f0, 28(s4) ;; [ 28] (s.f! (+ s4-0 28) f0-1) [s4: joint-control-channel ] -> [] + beq s7, s3, L139 ;; [ 29] (b! (not s3-0) L139 (nop!)) [s3: symbol ] -> [] + sll r0, r0, 0 + +B3: + lw t9, ja-aframe(s7) ;; [ 30] (set! t9-1 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L740 ;; [ 31] (set! v1-12 L740) [] -> [v1: ] + ori v1, v1, L740 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 32] (set! a0-5 (l.w v1-12)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [ 33] (set! a1-2 0) [] -> [a1: ] + jalr ra, t9 ;; [ 34] (call! a0-5 a1-2) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 35] (set! v1-13 v0-1) [v0: float ] -> [v1: float ] + beq r0, r0, L140 ;; [ 36] (b! #t L140 (nop!)) [] -> [] + sll r0, r0, 0 + +B4: +L139: + lui v1, L814 ;; [ 37] (set! v1-14 L814) [] -> [v1: ] + ori v1, v1, L814 + addu v1, fp, v1 + lw v1, 0(v1) ;; [ 38] (set! v1-13 (l.w v1-14)) [v1: ] -> [v1: int ] +B5: +L140: + mtc1 f0, v1 ;; [ 39] (set! f0-2 (gpr->fpr (the-as float v1-13))) [v1: float ] -> [] + swc1 f0, 16(s4) ;; [ 40] (s.f! (+ s4-0 16) f0-2) [s4: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [ 41] (set! t9-2 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [ 42] (set! v1-15 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 43] (set! v1-16 (l.wu (+ v1-15 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 276(v1) ;; [ 44] (set! a1-3 (l.wu (+ v1-16 276))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [ 45] (set! a2-0 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s4, r0 ;; [ 46] (set! a0-6 s4-0) [s4: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [ 47] (call! a0-6 a1-3 a2-0) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 48] (set! v1-17 v0-2) [v0: int ] -> [v1: int ] +B6: +L141: + lwu s6, 44(s6) ;; [ 49] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [ 50] (set! v1-18 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 51] (set! v1-19 (l.wu (+ v1-18 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s4, r0, v1 ;; [ 52] (set! s4-1 (+ v1-19 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s4: joint-control-channel ] + lw t9, ja-aframe(s7) ;; [ 53] (set! t9-3 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L721 ;; [ 54] (set! v1-20 L721) [] -> [v1: ] + ori v1, v1, L721 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 55] (set! a0-7 (l.w v1-20)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [ 56] (set! a1-4 0) [] -> [a1: ] + jalr ra, t9 ;; [ 57] (call! a0-7 a1-4) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 58] (set! f0-3 (gpr->fpr v0-3)) [v0: float ] -> [] + swc1 f0, 24(s4) ;; [ 59] (s.f! (+ s4-1 24) f0-3) [s4: joint-control-channel ] -> [] + lui v1, L786 ;; [ 60] (set! v1-21 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 61] (set! f0-4 (l.f v1-21)) [v1: ] -> [] + swc1 f0, 28(s4) ;; [ 62] (s.f! (+ s4-1 28) f0-4) [s4: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 63] (set! t9-4 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [ 64] (set! a1-5 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [ 65] (set! a2-1 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s4, r0 ;; [ 66] (set! a0-8 s4-1) [s4: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [ 67] (call! a0-8 a1-5 a2-1) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 68] (set! v1-22 v0-4) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [ 69] (set! t9-5 ja-done?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 70] (set! a0-9 0) [] -> [a0: ] + jalr ra, t9 ;; [ 71] (call! a0-9) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L141 ;; [ 72] (b! (not v0-5) L141 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B7: + or v1, s7, r0 ;; [ 73] (set! v1-23 #f) [] -> [v1: '#f ] + lw t9, enter-state(s7) ;; [ 74] (set! t9-6 enter-state) [] -> [t9: ] + or a0, gp, r0 ;; [ 75] (set! a0-10 arg0) [gp: float ] -> [a0: float ] + or a1, s5, r0 ;; [ 76] (set! a1-6 arg1) [s5: float ] -> [a1: float ] + lw v1, target-attack-uppercut-jump(s7);; [ 77] (set! v1-24 target-attack-uppercut-jump) + ;; [] -> [v1: (state float float target) ] + sw v1, 72(s6) ;; [ 78] (s.w! (+ self 72) v1-24) [v1: (state float float target) s6: target ] -> [] + jalr ra, t9 ;; [ 79] (call! a0-10 a1-6) [a0: float a1: float t9: ] -> [v0: object ] + sll v0, ra, 0 + + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 64(sp) + lq s5, 48(sp) + lq s4, 32(sp) + lq s3, 16(sp) + jr ra + daddiu sp, sp, 80 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-attack-uppercut) + ((arg0 float) (arg1 float)) + (let ((s3-0 (ja-group? (-> self draw art-group data 31)))) + (ja-no-eval :group! (-> self draw art-group data 62) + :num! (seek! (ja-aframe (the-as float 7.0) 0)) + :frame-num (the-as float (if s3-0 + (ja-aframe (the-as float 5.0) 0) + 0.0 + ) + ) + ) + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 7.0) 0))) + ) + (go target-attack-uppercut-jump arg0 arg1) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-attack-uppercut) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; Warnings: +;; INFO: Return type mismatch surface vs none. + +;; s6-0: target +L142: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lw v1, *display*(s7) ;; [ 0] (set! v1-0 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 1] (set! v1-1 (l.d (+ v1-0 780))) [v1: display ] -> [v1: time-frame ] + sd v1, 164(s6) ;; [ 2] (s.d! (+ self 164) v1-1) [v1: time-frame s6: target ] -> [] + lw t9, target-start-attack(s7);; [ 3] (set! t9-0 target-start-attack) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 4] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, target-danger-set!(s7);; [ 5] (set! t9-1 target-danger-set!) + ;; [] -> [t9: (function symbol symbol float :behavior target) ] + daddiu a0, s7, uppercut ;; [ 6] (set! a0-1 'uppercut) [] -> [a0: symbol ] + or a1, s7, r0 ;; [ 7] (set! a1-1 #f) [] -> [a1: '#f ] + jalr ra, t9 ;; [ 8] (call! a0-1 a1-1) + ;; [a0: symbol a1: '#f t9: (function symbol symbol float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + + lw v0, *turn-around-mods*(s7);; [ 9] (set! v0-2 *turn-around-mods*) [] -> [v0: surface ] + lwu v1, 108(s6) ;; [ 10] (set! v1-2 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw v0, 656(v1) ;; [ 11] (s.w! (+ v1-2 656) v0-2) [v0: surface v1: control-info ] -> [] + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-attack-uppercut) + ((arg0 float) (arg1 float)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (target-start-attack) + (target-danger-set! 'uppercut #f) + (set! (-> self control unknown-surface00) *turn-around-mods*) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-attack-air) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x40, fp? 1 ra? 1 ep? 1 + ;gprs: gp s5 + ;fprs: f30 +;; Warnings: +;; INFO: Return type mismatch object vs none. + +;; s6-0: target f0-8: float f0-22: float f1-1: float f30-0: float +L143: + daddiu sp, sp, -64 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s5, 16(sp) + sq gp, 32(sp) + swc1 f30, 48(sp) +B0: + lw t9, ja-channel-push!(s7);; [ 0] (set! t9-0 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [ 1] (set! a0-1 1) [] -> [a0: ] + addiu a1, r0, 22 ;; [ 2] (set! a1-0 22) [] -> [a1: ] + jalr ra, t9 ;; [ 3] (call! a0-1 a1-0) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [ 4] (set! v1-0 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 5] (set! v1-1 (l.wu (+ v1-0 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 6] (set! a0-2 (+ v1-1 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 7] (set! v1-2 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 8] (set! v1-3 (l.wu (+ v1-2 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 252(v1) ;; [ 9] (set! v1-4 (l.wu (+ v1-3 252))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [ 10] (s.w! (+ a0-2 12) v1-4) [v1: art-element a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [ 11] (set! v1-5 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 12] (set! v1-6 (l.wu (+ v1-5 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 252(v1) ;; [ 13] (set! v1-7 (l.wu (+ v1-6 252))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 14] (set! (the-as art-joint-anim v1-8) (l.wu (+ v1-7 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 15] (set! v1-9 (l.h (+ v1-8 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 16] (set! v1-10 (+ v1-9 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 17] (set! f0-0 (gpr->fpr v1-10)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 18] (set! f0-1 (i2f f0-0)) [] -> [] + swc1 f0, 24(a0) ;; [ 19] (s.f! (+ a0-2 24) f0-1) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [ 20] (set! v1-11 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 21] (set! f0-2 (l.f v1-11)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [ 22] (s.f! (+ a0-2 28) f0-2) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [ 23] (set! f0-3 0) [] -> [] + swc1 f0, 16(a0) ;; [ 24] (s.f! (+ a0-2 16) f0-3) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [ 25] (set! t9-1 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [ 26] (set! v1-12 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 27] (set! v1-13 (l.wu (+ v1-12 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 252(v1) ;; [ 28] (set! a1-1 (l.wu (+ v1-13 252))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [ 29] (set! a2-0 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 30] (call! a0-2 a1-1 a2-0) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 31] (set! v1-14 v0-1) [v0: int ] -> [v1: int ] +B1: +L144: + lwu a0, 128(s6) ;; [ 32] (set! a0-3 (l.wu (+ self 128))) [s6: target ] -> [a0: align-control ] + lwu v1, -4(a0) ;; [ 33] (set! v1-15 (l.wu (+ a0-3 -4))) + ;; [a0: align-control ] -> [v1: ] + lwu t9, 52(v1) ;; [ 34] (set! t9-2 (l.wu (+ v1-15 52))) + ;; [v1: ] -> [t9: ] + jalr ra, t9 ;; [ 35] (call! a0-3) + ;; [a0: align-control t9: ] -> [v0: transformq ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 36] (set! v1-16 v0-2) [v0: transformq ] -> [v1: transformq ] + lwu a0, 128(s6) ;; [ 37] (set! a0-4 (l.wu (+ self 128))) [s6: target ] -> [a0: align-control ] + lwu v1, -4(a0) ;; [ 38] (set! v1-17 (l.wu (+ a0-4 -4))) + ;; [a0: align-control ] -> [v1: ] + lwu t9, 56(v1) ;; [ 39] (set! t9-3 (l.wu (+ v1-17 56))) + ;; [v1: ] -> [t9: ] + addiu a1, r0, 16 ;; [ 40] (set! a1-2 16) [] -> [a1: ] + lui v1, L786 ;; [ 41] (set! v1-18 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw a2, 0(v1) ;; [ 42] (set! a2-1 (l.w v1-18)) [v1: ] -> [a2: int ] + lui v1, L786 ;; [ 43] (set! v1-19 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw a3, 0(v1) ;; [ 44] (set! a3-0 (l.w v1-19)) [v1: ] -> [a3: int ] + lui v1, L786 ;; [ 45] (set! v1-20 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw t0, 0(v1) ;; [ 46] (set! t0-0 (l.w v1-20)) [v1: ] -> [t0: int ] + jalr ra, t9 ;; [ 47] (call! a0-4 a1-2 a2-1 a3-0 t0-0) + ;; [a0: align-control a1: a2: int a3: int t0: int t9: ] -> [v0: trsqv ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 48] (set! v1-21 v0-3) [v0: trsqv ] -> [v1: trsqv ] + lwu s6, 44(s6) ;; [ 49] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [ 50] (set! v1-22 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 51] (set! v1-23 (l.wu (+ v1-22 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 52] (set! a0-5 (+ v1-23 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [ 53] (set! v1-24 (l.wu (+ a0-5 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 54] (set! v1-25 (l.wu (+ v1-24 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 55] (set! v1-26 (l.h (+ v1-25 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 56] (set! v1-27 (+ v1-26 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 57] (set! f0-4 (gpr->fpr v1-27)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 58] (set! f0-5 (i2f f0-4)) [] -> [] + swc1 f0, 24(a0) ;; [ 59] (s.f! (+ a0-5 24) f0-5) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [ 60] (set! v1-28 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 61] (set! f0-6 (l.f v1-28)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [ 62] (s.f! (+ a0-5 28) f0-6) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 63] (set! t9-4 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [ 64] (set! a1-3 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [ 65] (set! a2-2 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 66] (call! a0-5 a1-3 a2-2) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 67] (set! v1-29 v0-4) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [ 68] (set! t9-5 ja-done?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 69] (set! a0-6 0) [] -> [a0: ] + jalr ra, t9 ;; [ 70] (call! a0-6) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L144 ;; [ 71] (b! (not v0-5) L144 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B2: + or v1, s7, r0 ;; [ 72] (set! v1-30 #f) [] -> [v1: '#f ] + lwu v1, 120(s6) ;; [ 73] (set! v1-31 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 74] (set! v1-32 (l.wu (+ v1-31 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu gp, r0, v1 ;; [ 75] (set! gp-0 (+ v1-32 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lw t9, joint-control-channel-group-eval!(s7);; [ 76] (set! t9-6 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a0, gp, r0 ;; [ 77] (set! a0-7 gp-0) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 78] (set! v1-33 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 79] (set! v1-34 (l.wu (+ v1-33 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 256(v1) ;; [ 80] (set! a1-4 (l.wu (+ v1-34 256))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-identity(s7);; [ 81] (set! a2-3 num-func-identity) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 82] (call! a0-7 a1-4 a2-3) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + mtc1 f0, r0 ;; [ 83] (set! f0-7 0) [] -> [] + swc1 f0, 16(gp) ;; [ 84] (s.f! (+ gp-0 16) f0-7) [gp: joint-control-channel ] -> [] + mfc1 v1, f0 ;; [ 85] (set! v1-35 (fpr->gpr f0-7)) [] -> [v1: float ] + lui v1, L722 ;; [ 86] (set! v1-36 L722) [] -> [v1: ] + ori v1, v1, L722 + addu v1, fp, v1 + lwc1 f30, 0(v1) ;; [ 87] (set! f30-0 (l.f v1-36)) [v1: ] -> [] + lw t9, target-height-above-ground(s7);; [ 88] (set! t9-7 target-height-above-ground) + ;; [] -> [t9: (function float :behavior target) ] + jalr ra, t9 ;; [ 89] (call!) [t9: (function float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 90] (set! f0-8 (gpr->fpr v0-7)) [v0: float ] -> [] + lwu v1, 108(s6) ;; [ 91] (set! v1-37 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 92] (set! v1-38 (l.wu (+ v1-37 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 93] (set! a0-8 (+ v1-38 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 94] (set! v1-39 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 95] (set! v1-40 (+ v1-39 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f1, 0(a0) ;; [ 96] (set! f1-0 (vec3dot a0-8 v1-40)) [v1: vector a0: vector ] -> [] + lwc1 f2, 4(a0) + lwc1 f3, 8(a0) + lwc1 f4, 0(v1) + lwc1 f5, 4(v1) + lwc1 f6, 8(v1) + mula.s f1, f4 + madda.s f2, f5 + madd.s f1, f3, f6 + mfc1 v1, f1 ;; [ 97] (set! v1-41 (fpr->gpr f1-0)) [] -> [v1: float ] + mtc1 f1, v1 ;; [ 98] (set! f1-1 (gpr->fpr v1-41)) [v1: float ] -> [] + beq r0, r0, L146 ;; [ 99] (b! #t L146 (nop!)) [] -> [] + sll r0, r0, 0 + +B3: +L145: + lw t9, quaternion-rotate-y!(s7);; [100] (set! t9-8 quaternion-rotate-y!) + ;; [] -> [t9: (function quaternion quaternion float quaternion) ] + lwu v1, 108(s6) ;; [101] (set! v1-42 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a0, v1, 492 ;; [102] (set! a0-9 (+ v1-42 492)) [v1: control-info ] -> [a0: quaternion ] + lwu v1, 108(s6) ;; [103] (set! v1-43 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a1, v1, 492 ;; [104] (set! a1-5 (+ v1-43 492)) [v1: control-info ] -> [a1: quaternion ] + lw v1, *display*(s7) ;; [105] (set! v1-44 *display*) [] -> [v1: display ] + lwc1 f0, 904(v1) ;; [106] (set! f0-9 (l.f (+ v1-44 904))) [v1: display ] -> [] + mul.s f0, f30, f0 ;; [107] (set! f0-10 (*.s f30-0 f0-9)) [] -> [] + mfc1 a2, f0 ;; [108] (set! a2-4 (fpr->gpr f0-10)) [] -> [a2: float ] + jalr ra, t9 ;; [109] (call! a0-9 a1-5 a2-4) + ;; [a0: quaternion a1: quaternion a2: float t9: (function quaternion quaternion float quaternion) ] -> [v0: quaternion ] + sll v0, ra, 0 + + lwu s6, 44(s6) ;; [110] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [111] (set! v1-45 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [112] (set! v1-46 (l.wu (+ v1-45 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [113] (set! a0-10 (+ v1-46 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lui v1, L786 ;; [114] (set! v1-47 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [115] (set! f0-11 (l.f v1-47)) [v1: ] -> [] + swc1 f0, 24(a0) ;; [116] (s.f! (+ a0-10 24) f0-11) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [117] (set! t9-9 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [118] (set! a1-6 #f) [] -> [a1: '#f ] + lw a2, num-func-loop!(s7) ;; [119] (set! a2-5 num-func-loop!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [120] (call! a0-10 a1-6 a2-5) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [121] (set! v1-48 v0-9) [v0: int ] -> [v1: int ] + lw t9, target-height-above-ground(s7);; [122] (set! t9-10 target-height-above-ground) + ;; [] -> [t9: (function float :behavior target) ] + jalr ra, t9 ;; [123] (call!) [t9: (function float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [124] (set! f0-8 (gpr->fpr v0-10)) [v0: float ] -> [] + lwu v1, 108(s6) ;; [125] (set! v1-49 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [126] (set! v1-50 (l.wu (+ v1-49 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [127] (set! a0-11 (+ v1-50 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [128] (set! v1-51 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [129] (set! v1-52 (+ v1-51 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f1, 0(a0) ;; [130] (set! f1-2 (vec3dot a0-11 v1-52)) [v1: vector a0: vector ] -> [] + lwc1 f2, 4(a0) + lwc1 f3, 8(a0) + lwc1 f4, 0(v1) + lwc1 f5, 4(v1) + lwc1 f6, 8(v1) + mula.s f1, f4 + madda.s f2, f5 + madd.s f1, f3, f6 + mfc1 v1, f1 ;; [131] (set! v1-53 (fpr->gpr f1-2)) [] -> [v1: float ] + mtc1 f1, v1 ;; [132] (set! f1-1 (gpr->fpr v1-53)) [v1: float ] -> [] +B4: +L146: + lui v1, L768 ;; [133] (set! v1-54 L768) [] -> [v1: ] + ori v1, v1, L768 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [134] (set! f2-0 (l.f v1-54)) [v1: ] -> [] + mul.s f2, f2, f1 ;; [135] (set! f2-1 (*.s f2-0 f1-1)) [] -> [] + div.s f0, f0, f2 ;; [136] (set! f0-12 (/.s f0-8 f2-1)) [] -> [] + abs.s f0, f0 ;; [137] (set! f0-13 (abs.s f0-12)) [] -> [] + lui v1, L800 ;; [138] (set! v1-55 L800) [] -> [v1: ] + ori v1, v1, L800 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [139] (set! f2-2 (l.f v1-55)) [v1: ] -> [] + c.lt.s f0, f2 ;; [140] (b! (<.s f0-13 f2-2) L147 (set! v1-56 #t)) [] -> [v1: symbol ] + bc1t L147 + daddiu v1, s7, 8 + +B5: + or v1, s7, r0 ;; [141] (set! v1-56 #f) [] -> [v1: '#f ] +B6: +L147: + beql s7, v1, L148 ;; [142] (bl! (not v1-56) L148 (no-delay!)) [v1: symbol ] -> [] +B7: + or v1, v1, r0 ;; [143] (set! v1-57 v1-56) [v1: symbol ] -> [v1: symbol ] + +B8: + mtc1 f0, r0 ;; [144] (set! f0-14 0) [] -> [] + c.lt.s f1, f0 ;; [145] (b! (<.s f1-1 f0-14) L148 (set! v1-57 #t)) [] -> [v1: symbol ] + bc1t L148 + daddiu v1, s7, 8 + +B9: + or v1, s7, r0 ;; [146] (set! v1-57 #f) [] -> [v1: '#f ] +B10: +L148: + bnel s7, v1, L149 ;; [147] (bl! (truthy v1-57) L149 (no-delay!)) [v1: symbol ] -> [] +B11: + or v1, v1, r0 ;; [148] (set! v1-58 v1-57) [v1: symbol ] -> [v1: symbol ] + +B12: + lw v1, *display*(s7) ;; [149] (set! v1-59 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [150] (set! v1-60 (l.d (+ v1-59 780))) [v1: display ] -> [v1: time-frame ] + ld a0, 164(s6) ;; [151] (set! a0-12 (l.d (+ self 164))) [s6: target ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [152] (set! v1-61 (- v1-60 a0-12)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + slti a0, v1, 510 ;; [153] (set! v1-58 (>=.si v1-61 510)) [v1: time-frame ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 +B13: +L149: + beq s7, v1, L145 ;; [154] (b! (not v1-58) L145 (nop!)) [v1: symbol ] -> [] + sll r0, r0, 0 + +B14: + or v1, s7, r0 ;; [155] (set! v1-62 #f) [] -> [v1: '#f ] + or v1, s7, r0 ;; [156] (set! v1-63 #f) [] -> [v1: '#f ] + lwu v1, 120(s6) ;; [157] (set! v1-64 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [158] (set! v1-65 (l.wu (+ v1-64 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [159] (set! a0-13 (+ v1-65 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [160] (set! v1-66 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [161] (set! v1-67 (l.wu (+ v1-66 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 260(v1) ;; [162] (set! v1-68 (l.wu (+ v1-67 260))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [163] (s.w! (+ a0-13 12) v1-68) [v1: art-element a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [164] (set! v1-69 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [165] (set! v1-70 (l.wu (+ v1-69 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 260(v1) ;; [166] (set! v1-71 (l.wu (+ v1-70 260))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [167] (set! (the-as art-joint-anim v1-72) (l.wu (+ v1-71 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [168] (set! v1-73 (l.h (+ v1-72 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [169] (set! v1-74 (+ v1-73 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [170] (set! f0-15 (gpr->fpr v1-74)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [171] (set! f0-16 (i2f f0-15)) [] -> [] + swc1 f0, 24(a0) ;; [172] (s.f! (+ a0-13 24) f0-16) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [173] (set! v1-75 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [174] (set! f0-17 (l.f v1-75)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [175] (s.f! (+ a0-13 28) f0-17) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [176] (set! f0-18 0) [] -> [] + swc1 f0, 16(a0) ;; [177] (s.f! (+ a0-13 16) f0-18) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [178] (set! t9-11 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [179] (set! v1-76 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [180] (set! v1-77 (l.wu (+ v1-76 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 260(v1) ;; [181] (set! a1-7 (l.wu (+ v1-77 260))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [182] (set! a2-6 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [183] (call! a0-13 a1-7 a2-6) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [184] (set! v1-78 v0-11) [v0: int ] -> [v1: int ] +B15: +L150: + lw t9, ja-aframe-num(s7) ;; [185] (set! t9-12 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [186] (set! a0-14 0) [] -> [a0: ] + jalr ra, t9 ;; [187] (call! a0-14) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [188] (set! f0-19 (gpr->fpr v0-12)) [v0: float ] -> [] + lui v1, L799 ;; [189] (set! v1-79 L799) [] -> [v1: ] + ori v1, v1, L799 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [190] (set! f1-3 (l.f v1-79)) [v1: ] -> [] + c.lt.s f0, f1 ;; [191] (b! (>=.s f0-19 f1-3) L151 (nop!)) [] -> [] + bc1f L151 + sll r0, r0, 0 + +B16: + lw t9, quaternion-rotate-y!(s7);; [192] (set! t9-13 quaternion-rotate-y!) + ;; [] -> [t9: (function quaternion quaternion float quaternion) ] + lwu v1, 108(s6) ;; [193] (set! v1-80 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a0, v1, 492 ;; [194] (set! a0-15 (+ v1-80 492)) [v1: control-info ] -> [a0: quaternion ] + lwu v1, 108(s6) ;; [195] (set! v1-81 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a1, v1, 492 ;; [196] (set! a1-8 (+ v1-81 492)) [v1: control-info ] -> [a1: quaternion ] + lw v1, *display*(s7) ;; [197] (set! v1-82 *display*) [] -> [v1: display ] + lwc1 f0, 904(v1) ;; [198] (set! f0-20 (l.f (+ v1-82 904))) [v1: display ] -> [] + mul.s f0, f30, f0 ;; [199] (set! f0-21 (*.s f30-0 f0-20)) [] -> [] + mfc1 a2, f0 ;; [200] (set! a2-7 (fpr->gpr f0-21)) [] -> [a2: float ] + jalr ra, t9 ;; [201] (call! a0-15 a1-8 a2-7) + ;; [a0: quaternion a1: quaternion a2: float t9: (function quaternion quaternion float quaternion) ] -> [v0: quaternion ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [202] (set! v1-83 v0-13) [v0: quaternion ] -> [v1: quaternion ] + beq r0, r0, L152 ;; [203] (b! #t L152 (nop!)) [] -> [] + sll r0, r0, 0 + +B17: +L151: + lw gp, deg-diff(s7) ;; [204] (set! gp-1 deg-diff) [] -> [gp: (function float float float) ] + lw t9, quaternion-y-angle(s7);; [205] (set! t9-14 quaternion-y-angle) [] -> [t9: (function quaternion float) ] + lwu v1, 108(s6) ;; [206] (set! v1-84 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a0, v1, 492 ;; [207] (set! a0-16 (+ v1-84 492)) [v1: control-info ] -> [a0: quaternion ] + jalr ra, t9 ;; [208] (call! a0-16) [a0: quaternion t9: (function quaternion float) ] -> [v0: float ] + sll v0, ra, 0 + + or s5, v0, r0 ;; [209] (set! s5-0 v0-14) [v0: float ] -> [s5: float ] + lw t9, quaternion-y-angle(s7);; [210] (set! t9-15 quaternion-y-angle) [] -> [t9: (function quaternion float) ] + lwu v1, 108(s6) ;; [211] (set! v1-85 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a0, v1, 108 ;; [212] (set! a0-17 (+ v1-85 108)) [v1: control-info ] -> [a0: quaternion ] + jalr ra, t9 ;; [213] (call! a0-17) [a0: quaternion t9: (function quaternion float) ] -> [v0: float ] + sll v0, ra, 0 + + or a1, v0, r0 ;; [214] (set! a1-9 v0-15) [v0: float ] -> [a1: float ] + or t9, gp, r0 ;; [215] (set! t9-16 gp-1) + ;; [gp: (function float float float) ] -> [t9: (function float float float) ] + or a0, s5, r0 ;; [216] (set! a0-18 s5-0) [s5: float ] -> [a0: float ] + jalr ra, t9 ;; [217] (call! a0-18 a1-9) + ;; [a0: float a1: float t9: (function float float float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [218] (set! f0-22 (gpr->fpr v0-16)) [v0: float ] -> [] + lw t9, quaternion-rotate-y!(s7);; [219] (set! t9-17 quaternion-rotate-y!) + ;; [] -> [t9: (function quaternion quaternion float quaternion) ] + lwu v1, 108(s6) ;; [220] (set! v1-86 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a0, v1, 492 ;; [221] (set! a0-19 (+ v1-86 492)) [v1: control-info ] -> [a0: quaternion ] + lwu v1, 108(s6) ;; [222] (set! v1-87 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a1, v1, 492 ;; [223] (set! a1-10 (+ v1-87 492)) [v1: control-info ] -> [a1: quaternion ] + lui v1, L766 ;; [224] (set! v1-88 L766) [] -> [v1: ] + ori v1, v1, L766 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [225] (set! f1-4 (l.f v1-88)) [v1: ] -> [] + abs.s f0, f0 ;; [226] (set! f0-23 (abs.s f0-22)) [] -> [] + mul.s f0, f1, f0 ;; [227] (set! f0-24 (*.s f1-4 f0-23)) [] -> [] + mfc1 a2, f0 ;; [228] (set! a2-8 (fpr->gpr f0-24)) [] -> [a2: float ] + jalr ra, t9 ;; [229] (call! a0-19 a1-10 a2-8) + ;; [a0: quaternion a1: quaternion a2: float t9: (function quaternion quaternion float quaternion) ] -> [v0: quaternion ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [230] (set! v1-89 v0-17) [v0: quaternion ] -> [v1: quaternion ] +B18: +L152: + lwu s6, 44(s6) ;; [231] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [232] (set! v1-90 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [233] (set! v1-91 (l.wu (+ v1-90 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [234] (set! a0-20 (+ v1-91 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [235] (set! v1-92 (l.wu (+ a0-20 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [236] (set! v1-93 (l.wu (+ v1-92 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [237] (set! v1-94 (l.h (+ v1-93 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [238] (set! v1-95 (+ v1-94 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [239] (set! f0-25 (gpr->fpr v1-95)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [240] (set! f0-26 (i2f f0-25)) [] -> [] + swc1 f0, 24(a0) ;; [241] (s.f! (+ a0-20 24) f0-26) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [242] (set! v1-96 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [243] (set! f0-27 (l.f v1-96)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [244] (s.f! (+ a0-20 28) f0-27) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [245] (set! t9-18 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [246] (set! a1-11 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [247] (set! a2-9 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [248] (call! a0-20 a1-11 a2-9) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [249] (set! v1-97 v0-18) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [250] (set! t9-19 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [251] (set! a0-21 0) [] -> [a0: ] + jalr ra, t9 ;; [252] (call! a0-21) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L150 ;; [253] (b! (not v0-19) L150 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B19: + or v1, s7, r0 ;; [254] (set! v1-98 #f) [] -> [v1: '#f ] + lw t9, enter-state(s7) ;; [255] (set! t9-20 enter-state) [] -> [t9: ] + or a0, s7, r0 ;; [256] (set! a0-22 #f) [] -> [a0: '#f ] + lw v1, target-falling(s7) ;; [257] (set! v1-99 target-falling) [] -> [v1: (state symbol target) ] + sw v1, 72(s6) ;; [258] (s.w! (+ self 72) v1-99) [v1: (state symbol target) s6: target ] -> [] + jalr ra, t9 ;; [259] (call! a0-22) [a0: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + ld ra, 0(sp) + ld fp, 8(sp) + lwc1 f30, 48(sp) + lq gp, 32(sp) + lq s5, 16(sp) + jr ra + daddiu sp, sp, 64 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-attack-air) + ((arg0 symbol)) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! (-> self draw art-group data 56) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (align! (-> self align) (align-opts adjust-quat) (the-as float 1.0) (the-as float 1.0) (the-as float 1.0)) + (suspend) + (ja :num! (seek!)) + ) + (ja :group! (-> self draw art-group data 57) :num! min) + (let ((f30-0 393216.0)) + (let ((f0-8 (target-height-above-ground)) + (f1-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + ) + (while (not (or (and (< (fabs (/ f0-8 (* 0.0033333334 f1-1))) 150.0) (< f1-1 0.0)) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 1.7)) + ) + ) + (quaternion-rotate-y! + (-> self control unknown-quaternion00) + (-> self control unknown-quaternion00) + (* f30-0 (-> *display* seconds-per-frame)) + ) + (suspend) + (ja :num! (loop!)) + (set! f0-8 (target-height-above-ground)) + (set! f1-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + ) + ) + (ja-no-eval :group! (-> self draw art-group data 58) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (cond + ((< (ja-aframe-num 0) 32.0) + (quaternion-rotate-y! + (-> self control unknown-quaternion00) + (-> self control unknown-quaternion00) + (* f30-0 (-> *display* seconds-per-frame)) + ) + ) + (else + (let ((f0-22 + (deg-diff + (quaternion-y-angle (-> self control unknown-quaternion00)) + (quaternion-y-angle (-> self control dir-targ)) + ) + ) + ) + (quaternion-rotate-y! + (-> self control unknown-quaternion00) + (-> self control unknown-quaternion00) + (* 0.2 (fabs f0-22)) + ) + ) + ) + ) + (suspend) + (ja :num! (seek!)) + ) + ) + (go target-falling #f) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (trans target-attack-air) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x40, fp? 1 ra? 1 ep? 1 + ;gprs: gp s5 s4 +;; s6-0: target +L153: + daddiu sp, sp, -64 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s4, 16(sp) + sq s5, 32(sp) + sq gp, 48(sp) +B0: + lwu v1, 108(s6) ;; [ 0] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld v1, 268(v1) ;; [ 1] (set! v1-1 (l.d (+ v1-0 268))) [v1: control-info ] -> [v1: cshape-moving-flags ] + andi v1, v1, 1 ;; [ 2] (set! v1-2 (logand v1-1 1)) + ;; [v1: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + beq v1, r0, L154 ;; [ 3] (b! (zero? v1-2) L154 (set! v1-3 #f)) [v1: cshape-moving-flags ] -> [v1: '#f ] + or v1, s7, r0 + +B1: + lwu a0, 108(s6) ;; [ 4] (set! a0-0 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu v1, -4(a0) ;; [ 5] (set! v1-4 (l.wu (+ a0-0 -4))) + ;; [a0: control-info ] -> [v1: ] + lwu t9, 88(v1) ;; [ 6] (set! t9-0 (l.wu (+ v1-4 88))) + ;; [v1: ] -> [t9: ] + lwu v1, 108(s6) ;; [ 7] (set! v1-5 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a1, v1, 108 ;; [ 8] (set! a1-0 (+ v1-5 108)) [v1: control-info ] -> [a1: quaternion ] + jalr ra, t9 ;; [ 9] (call! a0-0 a1-0) + ;; [a0: control-info a1: quaternion t9: ] -> [v0: quaternion ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 10] (set! v1-6 v0-0) [v0: quaternion ] -> [v1: quaternion ] + lw t9, enter-state(s7) ;; [ 11] (set! t9-1 enter-state) [] -> [t9: ] + or a0, s7, r0 ;; [ 12] (set! a0-1 #f) [] -> [a0: '#f ] + lw v1, target-hit-ground(s7);; [ 13] (set! v1-7 target-hit-ground) [] -> [v1: (state symbol target) ] + sw v1, 72(s6) ;; [ 14] (s.w! (+ self 72) v1-7) [v1: (state symbol target) s6: target ] -> [] + jalr ra, t9 ;; [ 15] (call! a0-1) [a0: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 16] (set! v1-8 v0-1) [v0: object ] -> [v1: object ] +B2: +L154: + lw v1, *display*(s7) ;; [ 17] (set! v1-9 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 18] (set! v1-10 (l.d (+ v1-9 780))) [v1: display ] -> [v1: time-frame ] + ld a0, 164(s6) ;; [ 19] (set! a0-2 (l.d (+ self 164))) [s6: target ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [ 20] (set! v1-11 (- v1-10 a0-2)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + slti v1, v1, 150 ;; [ 21] (b! (<.si v1-11 150) L155 (set! v1-12 #f)) [v1: time-frame ] -> [v1: '#f ] + bne v1, r0, L155 + or v1, s7, r0 + +B3: + lw t9, seek(s7) ;; [ 22] (set! t9-2 seek) [] -> [t9: (function float float float float) ] + lwu v1, 108(s6) ;; [ 23] (set! v1-13 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 24] (set! v1-14 (l.wu (+ v1-13 432))) [v1: control-info ] -> [v1: dynamics ] + lwc1 f0, 8(v1) ;; [ 25] (set! f0-0 (l.f (+ v1-14 8))) [v1: dynamics ] -> [] + mfc1 a0, f0 ;; [ 26] (set! a0-3 (fpr->gpr f0-0)) [] -> [a0: meters ] + lwu v1, 108(s6) ;; [ 27] (set! v1-15 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 652(v1) ;; [ 28] (set! v1-16 (l.wu (+ v1-15 652))) [v1: control-info ] -> [v1: dynamics ] + lwc1 f0, 8(v1) ;; [ 29] (set! f0-1 (l.f (+ v1-16 8))) [v1: dynamics ] -> [] + mfc1 a1, f0 ;; [ 30] (set! a1-1 (fpr->gpr f0-1)) [] -> [a1: meters ] + lui v1, L720 ;; [ 31] (set! v1-17 L720) [] -> [v1: ] + ori v1, v1, L720 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 32] (set! f0-2 (l.f v1-17)) [v1: ] -> [] + lw v1, *display*(s7) ;; [ 33] (set! v1-18 *display*) [] -> [v1: display ] + lwc1 f1, 904(v1) ;; [ 34] (set! f1-0 (l.f (+ v1-18 904))) [v1: display ] -> [] + mul.s f0, f0, f1 ;; [ 35] (set! f0-3 (*.s f0-2 f1-0)) [] -> [] + mfc1 a2, f0 ;; [ 36] (set! a2-0 (fpr->gpr f0-3)) [] -> [a2: float ] + jalr ra, t9 ;; [ 37] (call! a0-3 a1-1 a2-0) + ;; [a0: meters a1: meters a2: float t9: (function float float float float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 38] (set! f0-4 (gpr->fpr v0-2)) [v0: float ] -> [] + lwu v1, 108(s6) ;; [ 39] (set! v1-19 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 40] (set! v1-20 (l.wu (+ v1-19 432))) [v1: control-info ] -> [v1: dynamics ] + swc1 f0, 8(v1) ;; [ 41] (s.f! (+ v1-20 8) f0-4) [v1: dynamics ] -> [] + mfc1 v1, f0 ;; [ 42] (set! v1-21 (fpr->gpr f0-4)) [] -> [v1: float ] +B4: +L155: + lw v1, *display*(s7) ;; [ 43] (set! v1-22 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 44] (set! v1-23 (l.d (+ v1-22 780))) [v1: display ] -> [v1: time-frame ] + ld a0, 164(s6) ;; [ 45] (set! a0-4 (l.d (+ self 164))) [s6: target ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [ 46] (set! v1-24 (- v1-23 a0-4)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + slti v1, v1, 15 ;; [ 47] (set! a0-5 (>=.si v1-24 15)) [v1: time-frame ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L156 ;; [ 48] (bl! (not a0-5) L156 (no-delay!)) [a0: symbol ] -> [] +B5: + or v1, a0, r0 ;; [ 49] (set! v1-25 a0-5) [a0: symbol ] -> [v1: symbol ] + +B6: + lwu v1, 108(s6) ;; [ 50] (set! v1-26 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 51] (set! v1-27 (l.wu (+ v1-26 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 52] (set! a0-6 (+ v1-27 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 53] (set! v1-28 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 540 ;; [ 54] (set! v1-29 (+ v1-28 540)) [v1: control-info ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [ 55] (set! f0-5 (vec3dot a0-6 v1-29)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [ 56] (set! v1-30 (fpr->gpr f0-5)) [] -> [v1: float ] + mtc1 f0, v1 ;; [ 57] (set! f0-6 (gpr->fpr v1-30)) [v1: float ] -> [] + lwu v1, 108(s6) ;; [ 58] (set! v1-31 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 59] (set! v1-32 (l.wu (+ v1-31 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 60] (set! a0-7 (+ v1-32 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 61] (set! v1-33 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 62] (set! v1-34 (+ v1-33 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f1, 0(a0) ;; [ 63] (set! f1-1 (vec3dot a0-7 v1-34)) [v1: vector a0: vector ] -> [] + lwc1 f2, 4(a0) + lwc1 f3, 8(a0) + lwc1 f4, 0(v1) + lwc1 f5, 4(v1) + lwc1 f6, 8(v1) + mula.s f1, f4 + madda.s f2, f5 + madd.s f1, f3, f6 + mfc1 v1, f1 ;; [ 64] (set! v1-35 (fpr->gpr f1-1)) [] -> [v1: float ] + mtc1 f1, v1 ;; [ 65] (set! f1-2 (gpr->fpr v1-35)) [v1: float ] -> [] + c.lt.s f0, f1 ;; [ 66] (b! (<.s f0-6 f1-2) L156 (set! v1-25 #t)) [] -> [v1: symbol ] + bc1t L156 + daddiu v1, s7, 8 + +B7: + or v1, s7, r0 ;; [ 67] (set! v1-25 #f) [] -> [v1: '#f ] +B8: +L156: + beq s7, v1, L157 ;; [ 68] (b! (not v1-25) L157 (set! v1-36 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B9: + lwu v1, 108(s6) ;; [ 69] (set! v1-37 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 652(v1) ;; [ 70] (set! v1-38 (l.wu (+ v1-37 652))) [v1: control-info ] -> [v1: dynamics ] + lwc1 f0, 4(v1) ;; [ 71] (set! f0-7 (l.f (+ v1-38 4))) [v1: dynamics ] -> [] + lwu v1, 108(s6) ;; [ 72] (set! v1-39 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 73] (set! v1-40 (l.wu (+ v1-39 432))) [v1: control-info ] -> [v1: dynamics ] + swc1 f0, 4(v1) ;; [ 74] (s.f! (+ v1-40 4) f0-7) [v1: dynamics ] -> [] + lwu v1, 108(s6) ;; [ 75] (set! v1-41 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 652(v1) ;; [ 76] (set! v1-42 (l.wu (+ v1-41 652))) [v1: control-info ] -> [v1: dynamics ] + lwc1 f0, 8(v1) ;; [ 77] (set! f0-8 (l.f (+ v1-42 8))) [v1: dynamics ] -> [] + lwu v1, 108(s6) ;; [ 78] (set! v1-43 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 79] (set! v1-44 (l.wu (+ v1-43 432))) [v1: control-info ] -> [v1: dynamics ] + swc1 f0, 8(v1) ;; [ 80] (s.f! (+ v1-44 8) f0-8) [v1: dynamics ] -> [] + mfc1 v1, f0 ;; [ 81] (set! v1-45 (fpr->gpr f0-8)) [] -> [v1: meters ] +B10: +L157: + lwu v1, 140(s6) ;; [ 82] (set! v1-46 (l.wu (+ self 140))) [s6: target ] -> [v1: fact-info-target ] + lw v1, 36(v1) ;; [ 83] (set! v1-47 (l.w (+ v1-46 36))) [v1: fact-info-target ] -> [v1: pickup-type ] + daddiu v1, v1, -2 ;; [ 84] (set! v1-48 (+ v1-47 -2)) [v1: pickup-type ] -> [v1: ] + daddiu a0, s7, 8 ;; [ 85] (set! a0-8 (zero? v1-48)) [v1: ] -> [a0: symbol ] + movn a0, s7, v1 + beql s7, a0, L158 ;; [ 86] (bl! (not a0-8) L158 (no-delay!)) [a0: symbol ] -> [] +B11: + or v1, a0, r0 ;; [ 87] (set! v1-49 a0-8) [a0: symbol ] -> [v1: symbol ] + +B12: + lwu v1, 140(s6) ;; [ 88] (set! v1-50 (l.wu (+ self 140))) [s6: target ] -> [v1: fact-info-target ] + lwc1 f0, 40(v1) ;; [ 89] (set! f0-9 (l.f (+ v1-50 40))) [v1: fact-info-target ] -> [] + lui v1, L786 ;; [ 90] (set! v1-51 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 91] (set! f1-3 (l.f v1-51)) [v1: ] -> [] + c.lt.s f0, f1 ;; [ 92] (b! (>=.s f0-9 f1-3) L158 (set! v1-49 #t)) [] -> [v1: symbol ] + bc1f L158 + daddiu v1, s7, 8 + +B13: + or v1, s7, r0 ;; [ 93] (set! v1-49 #f) [] -> [v1: '#f ] +B14: +L158: + beq s7, v1, L159 ;; [ 94] (b! (not v1-49) L159 (set! v0-3 #f)) [v1: symbol ] -> [v0: '#f ] + or v0, s7, r0 + +B15: + lwu v1, 120(s6) ;; [ 95] (set! v1-52 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu gp, 36(v1) ;; [ 96] (set! gp-0 (l.wu (+ v1-52 36))) [v1: joint-control ] -> [gp: effect-control ] + lwu v1, -4(gp) ;; [ 97] (set! v1-53 (l.wu (+ gp-0 -4))) + ;; [gp: effect-control ] -> [v1: ] + lwu s5, 56(v1) ;; [ 98] (set! s5-0 (l.wu (+ v1-53 56))) + ;; [v1: ] -> [s5: ] + daddiu s4, s7, group-red-eco-spinkick;; [ 99] (set! s4-0 'group-red-eco-spinkick) [] -> [s4: symbol ] + lw t9, ja-frame-num(s7) ;; [100] (set! t9-3 ja-frame-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [101] (set! a0-9 0) [] -> [a0: ] + jalr ra, t9 ;; [102] (call! a0-9) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + or a2, v0, r0 ;; [103] (set! a2-1 v0-4) [v0: float ] -> [a2: float ] + addiu a3, r0, 70 ;; [104] (set! a3-0 70) [] -> [a3: ] + or t9, s5, r0 ;; [105] (set! t9-4 s5-0) + ;; [s5: ] -> [t9: ] + or a0, gp, r0 ;; [106] (set! a0-10 gp-0) [gp: effect-control ] -> [a0: effect-control ] + or a1, s4, r0 ;; [107] (set! a1-2 s4-0) [s4: symbol ] -> [a1: symbol ] + jalr ra, t9 ;; [108] (call! a0-10 a1-2 a2-1 a3-0) + ;; [a0: effect-control a1: symbol a2: float a3: t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [109] (set! v1-54 v0-5) [v0: object ] -> [v1: object ] + lw t9, cpad-set-buzz!(s7) ;; [110] (set! t9-5 cpad-set-buzz!) + ;; [] -> [t9: (function cpad-info int int time-frame none) ] + lw v1, *cpad-list*(s7) ;; [111] (set! v1-55 *cpad-list*) [] -> [v1: cpad-list ] + lwu a0, 4(v1) ;; [112] (set! a0-11 (l.wu (+ v1-55 4))) [v1: cpad-list ] -> [a0: cpad-info ] + addiu a1, r0, 1 ;; [113] (set! a1-3 1) [] -> [a1: ] + addiu a2, r0, 153 ;; [114] (set! a2-2 153) [] -> [a2: ] + addiu a3, r0, 30 ;; [115] (set! a3-1 30) [] -> [a3: ] + jalr ra, t9 ;; [116] (call! a0-11 a1-3 a2-2 a3-1) + ;; [a0: cpad-info a1: a2: a3: t9: (function cpad-info int int time-frame none) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, level-hint-spawn(s7);; [117] (set! t9-6 level-hint-spawn) + ;; [] -> [t9: (function game-text-id string entity process-tree game-task none) ] + addiu a0, r0, 678 ;; [118] (set! a0-12 678) [] -> [a0: ] + lui v1, L700 ;; [119] (set! a1-4 L700) [] -> [a1: ] "sksp0072" + ori v1, v1, L700 ;; "sksp0072" + daddu a1, v1, fp + or a2, s7, r0 ;; [120] (set! a2-3 #f) [] -> [a2: '#f ] + lw a3, *entity-pool*(s7) ;; [121] (set! a3-2 *entity-pool*) [] -> [a3: process-tree ] + addiu t0, r0, 0 ;; [122] (set! t0-0 0) [] -> [t0: ] + jalr ra, t9 ;; [123] (call! a0-12 a1-4 a2-3 a3-2 t0-0) + ;; [a0: a1: a2: '#f a3: process-tree t0: t9: (function game-text-id string entity process-tree game-task none) ] -> [v0: none ] + sll v0, ra, 0 + +B16: +L159: + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 48(sp) + lq s5, 32(sp) + lq s4, 16(sp) + jr ra + daddiu sp, sp, 64 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (trans target-attack-air) + () + (when (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (set-quaternion! (-> self control) (-> self control dir-targ)) + (go target-hit-ground #f) + ) + (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.5)) + (seek! + (-> self control dynam gravity-length) + (-> self control unknown-dynamics00 gravity-length) + (* 245760.0 (-> *display* seconds-per-frame)) + ) + ) + (when (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.05)) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control unknown-vector10)) + (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) + ) + ) + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + ) + (when (and (= (-> self fact-info-target eco-type) (pickup-type eco-red)) + (>= (-> self fact-info-target eco-level) 1.0) + ) + (dummy-10 (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 70) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) + (level-hint-spawn + (game-text-id misty-eco-red-first-use) + "sksp0072" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (exit target-attack-air) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; s6-0: target +L160: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lwu v1, 108(s6) ;; [ 0] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 652(v1) ;; [ 1] (set! v1-1 (l.wu (+ v1-0 652))) [v1: control-info ] -> [v1: dynamics ] + lwc1 f0, 4(v1) ;; [ 2] (set! f0-0 (l.f (+ v1-1 4))) [v1: dynamics ] -> [] + lwu v1, 108(s6) ;; [ 3] (set! v1-2 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 4] (set! v1-3 (l.wu (+ v1-2 432))) [v1: control-info ] -> [v1: dynamics ] + swc1 f0, 4(v1) ;; [ 5] (s.f! (+ v1-3 4) f0-0) [v1: dynamics ] -> [] + lwu v1, 108(s6) ;; [ 6] (set! v1-4 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 652(v1) ;; [ 7] (set! v1-5 (l.wu (+ v1-4 652))) [v1: control-info ] -> [v1: dynamics ] + lwc1 f0, 8(v1) ;; [ 8] (set! f0-1 (l.f (+ v1-5 8))) [v1: dynamics ] -> [] + lwu v1, 108(s6) ;; [ 9] (set! v1-6 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 10] (set! v1-7 (l.wu (+ v1-6 432))) [v1: control-info ] -> [v1: dynamics ] + swc1 f0, 8(v1) ;; [ 11] (s.f! (+ v1-7 8) f0-1) [v1: dynamics ] -> [] + lw v1, target-attack(s7) ;; [ 12] (set! v1-8 target-attack) [] -> [v1: (state target) ] + lwu t9, 8(v1) ;; [ 13] (set! t9-0 (l.wu (+ v1-8 8))) [v1: (state target) ] -> [t9: (function none) ] + jalr ra, t9 ;; [ 14] (call!) [t9: (function none) ] -> [v0: none ] + sll v0, ra, 0 + + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (exit target-attack-air) + () + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + ((-> target-attack exit)) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-attack-air) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x60, fp? 1 ra? 1 ep? 1 + ;stack_vars: 48 bytes at 16 + ;gprs: gp + ;fprs: f30 +;; Warnings: +;; INFO: Return type mismatch vector vs none. +;; Used lq/sq + +;; a0-0: symbol s6-0: target gp-1: vector gp-2: vector f0-1: float f0-3: float f0-4: float f0-8: float +;; f0-9: float f1-2: float f1-5: float f1-11: float f2-0: float f2-7: float f30-0: float +L161: + daddiu sp, sp, -96 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq gp, 64(sp) + swc1 f30, 80(sp) +B0: + or gp, a0, r0 ;; [ 0] (set! arg0 arg0) [a0: symbol ] -> [gp: symbol ] + lw v1, *display*(s7) ;; [ 1] (set! v1-0 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 2] (set! v1-1 (l.d (+ v1-0 780))) [v1: display ] -> [v1: time-frame ] + sd v1, 164(s6) ;; [ 3] (s.d! (+ self 164) v1-1) [v1: time-frame s6: target ] -> [] + addiu v1, r0, -8 ;; [ 4] (set! v1-2 -8) [] -> [v1: ] + lwu a0, 108(s6) ;; [ 5] (set! a0-1 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 268(a0) ;; [ 6] (set! a0-2 (l.d (+ a0-1 268))) [a0: control-info ] -> [a0: cshape-moving-flags ] + and v1, v1, a0 ;; [ 7] (set! v1-3 (logand v1-2 a0-2)) + ;; [v1: a0: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + lwu a0, 108(s6) ;; [ 8] (set! a0-3 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sd v1, 268(a0) ;; [ 9] (s.d! (+ a0-3 268) v1-3) [v1: cshape-moving-flags a0: control-info ] -> [] + lw t9, target-start-attack(s7);; [ 10] (set! t9-0 target-start-attack) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 11] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, target-danger-set!(s7);; [ 12] (set! t9-1 target-danger-set!) + ;; [] -> [t9: (function symbol symbol float :behavior target) ] + daddiu a0, s7, spin-air ;; [ 13] (set! a0-4 'spin-air) [] -> [a0: symbol ] + or a1, s7, r0 ;; [ 14] (set! a1-0 #f) [] -> [a1: '#f ] + jalr ra, t9 ;; [ 15] (call! a0-4 a1-0) + ;; [a0: symbol a1: '#f t9: (function symbol symbol float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + + lw v1, *jump-attack-mods*(s7);; [ 16] (set! v1-4 *jump-attack-mods*) [] -> [v1: surface ] + lwu a0, 108(s6) ;; [ 17] (set! a0-5 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sw v1, 656(a0) ;; [ 18] (s.w! (+ a0-5 656) v1-4) [v1: surface a0: control-info ] -> [] + lwu v1, 108(s6) ;; [ 19] (set! v1-5 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 20] (set! v1-6 (l.wu (+ v1-5 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 21] (set! a0-6 (+ v1-6 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 22] (set! v1-7 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 23] (set! v1-8 (+ v1-7 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [ 24] (set! f0-0 (vec3dot a0-6 v1-8)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [ 25] (set! v1-9 (fpr->gpr f0-0)) [] -> [v1: float ] + mtc1 f0, v1 ;; [ 26] (set! f0-1 (gpr->fpr v1-9)) [v1: float ] -> [] + mtc1 f1, r0 ;; [ 27] (set! f1-0 0) [] -> [] + c.lt.s f1, f0 ;; [ 28] (b! (>=.s f1-0 f0-1) L162 (set! v1-10 #t)) [] -> [v1: symbol ] + bc1f L162 + daddiu v1, s7, 8 + +B1: + or v1, s7, r0 ;; [ 29] (set! v1-10 #f) [] -> [v1: '#f ] +B2: +L162: + bnel s7, v1, L163 ;; [ 30] (bl! (truthy v1-10) L163 (no-delay!)) [v1: symbol ] -> [] +B3: + or v1, v1, r0 ;; [ 31] (set! v1-11 v1-10) [v1: symbol ] -> [v1: symbol ] + +B4: + daddiu v1, s7, flop ;; [ 32] (set! v1-12 'flop) [] -> [v1: symbol ] + dsubu a0, gp, v1 ;; [ 33] (set! v1-11 (= arg0 v1-12)) [v1: symbol gp: symbol ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 +B5: +L163: + beq s7, v1, L164 ;; [ 34] (b! (not v1-11) L164 (nop!)) [v1: symbol ] -> [] + sll r0, r0, 0 + +B6: + daddiu gp, sp, 16 ;; [ 35] (set! gp-1 (+ sp-0 16)) [sp: ] -> [gp: vector ] + sq r0, 0(gp) ;; [ 36] (s.q! gp-1 0) [gp: vector ] -> [] + lwu v1, 108(s6) ;; [ 37] (set! v1-13 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 38] (set! v1-14 (l.wu (+ v1-13 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 39] (set! a0-7 (+ v1-14 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 40] (set! v1-15 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 41] (set! v1-16 (+ v1-15 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [ 42] (set! f0-2 (vec3dot a0-7 v1-16)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [ 43] (set! v1-17 (fpr->gpr f0-2)) [] -> [v1: float ] + mtc1 f0, v1 ;; [ 44] (set! f0-3 (gpr->fpr v1-17)) [v1: float ] -> [] + mtc1 f1, r0 ;; [ 45] (set! f1-1 0) [] -> [] + or v1, gp, r0 ;; [ 46] (set! v1-18 gp-1) [gp: vector ] -> [v1: vector ] + lwu a0, 108(s6) ;; [ 47] (set! a0-8 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + daddiu a0, a0, 60 ;; [ 48] (set! a0-9 (+ a0-8 60)) [a0: control-info ] -> [a0: vector ] + or a1, gp, r0 ;; [ 49] (set! a1-1 gp-1) [gp: vector ] -> [a1: vector ] + lwu a2, 108(s6) ;; [ 50] (set! a2-0 (l.wu (+ self 108))) [s6: target ] -> [a2: control-info ] + lwu a2, 432(a2) ;; [ 51] (set! a2-1 (l.wu (+ a2-0 432))) [a2: control-info ] -> [a2: dynamics ] + daddiu a2, a2, 28 ;; [ 52] (set! a2-2 (+ a2-1 28)) [a2: dynamics ] -> [a2: vector ] + lqc2 vf1, 0(a2) ;; [ 53] (set! a1-2 (vector-float*!2 a1-1 a2-2 f0-3)) + ;; [a1: vector a2: vector ] -> [a1: vector ] + mfc1 a2, f0 + qmtc2.i vf2, a2 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a1) + lqc2 vf4, 0(a0) ;; [ 54] (set! v1-19 (vector-!2 v1-18 a0-9 a1-2)) + ;; [v1: vector a0: vector a1: vector ] -> [v1: vector ] + lqc2 vf5, 0(a1) + vmove.w vf6, vf0 + vsub.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) + lw t9, vector-length(s7) ;; [ 55] (set! t9-2 vector-length) [] -> [t9: (function vector float) ] + or a0, gp, r0 ;; [ 56] (set! a0-10 gp-1) [gp: vector ] -> [a0: vector ] + jalr ra, t9 ;; [ 57] (call! a0-10) [a0: vector t9: (function vector float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 58] (set! f0-4 (gpr->fpr v0-2)) [v0: float ] -> [] + mov.s f1, f0 ;; [ 59] (set! f1-2 f0-4) [] -> [] + lui v1, L773 ;; [ 60] (set! v1-20 L773) [] -> [v1: ] + ori v1, v1, L773 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [ 61] (set! f2-0 (l.f v1-20)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 62] (set! v1-21 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 63] (set! v1-22 (+ v1-21 60)) [v1: control-info ] -> [v1: vector ] + lwu a0, 108(s6) ;; [ 64] (set! a0-11 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + daddiu a0, a0, 60 ;; [ 65] (set! a0-12 (+ a0-11 60)) [a0: control-info ] -> [a0: vector ] + lwu a1, 108(s6) ;; [ 66] (set! a1-3 (l.wu (+ self 108))) [s6: target ] -> [a1: control-info ] + lwu a1, 432(a1) ;; [ 67] (set! a1-4 (l.wu (+ a1-3 432))) [a1: control-info ] -> [a1: dynamics ] + daddiu a1, a1, 28 ;; [ 68] (set! a1-5 (+ a1-4 28)) [a1: dynamics ] -> [a1: vector ] + lqc2 vf1, 0(a1) ;; [ 69] (set! a0-13 (vector-float*!2 a0-12 a1-5 f2-0)) + ;; [a0: vector a1: vector ] -> [a0: vector ] + mfc1 a1, f2 + qmtc2.i vf2, a1 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a0) + or a1, gp, r0 ;; [ 70] (set! a1-6 gp-1) [gp: vector ] -> [a1: vector ] + div.s f0, f0, f1 ;; [ 71] (set! f0-5 (/.s f0-4 f1-2)) [] -> [] + lqc2 vf1, 0(gp) ;; [ 72] (set! a1-7 (vector-float*!2 a1-6 gp-1 f0-5)) + ;; [a1: vector gp: vector ] -> [a1: vector ] + mfc1 a2, f0 + qmtc2.i vf2, a2 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a1) + vmove.w vf6, vf0 ;; [ 73] (set! v1-23 (vector+!2 v1-22 a0-13 a1-7)) + ;; [v1: vector a0: vector a1: vector ] -> [v1: vector ] + lqc2 vf4, 0(a0) + lqc2 vf5, 0(a1) + vadd.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) + beq r0, r0, L167 ;; [ 74] (b! #t L167 (nop!)) [] -> [] + sll r0, r0, 0 + +B7: +L164: + lwu v1, 108(s6) ;; [ 75] (set! v1-24 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 76] (set! v1-25 (l.wu (+ v1-24 432))) [v1: control-info ] -> [v1: dynamics ] + lwc1 f1, 8(v1) ;; [ 77] (set! f1-3 (l.f (+ v1-25 8))) [v1: dynamics ] -> [] + lw v1, *display*(s7) ;; [ 78] (set! v1-26 *display*) [] -> [v1: display ] + lwc1 f2, 904(v1) ;; [ 79] (set! f2-1 (l.f (+ v1-26 904))) [v1: display ] -> [] + mul.s f1, f1, f2 ;; [ 80] (set! f1-4 (*.s f1-3 f2-1)) [] -> [] + div.s f1, f0, f1 ;; [ 81] (set! f1-5 (/.s f0-1 f1-4)) [] -> [] + lui v1, L752 ;; [ 82] (set! v1-27 L752) [] -> [v1: ] + ori v1, v1, L752 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [ 83] (set! f2-2 (l.f v1-27)) [v1: ] -> [] + mul.s f1, f2, f1 ;; [ 84] (set! f1-6 (*.s f2-2 f1-5)) [] -> [] + lw v1, *display*(s7) ;; [ 85] (set! v1-28 *display*) [] -> [v1: display ] + lwc1 f2, 904(v1) ;; [ 86] (set! f2-3 (l.f (+ v1-28 904))) [v1: display ] -> [] + mul.s f1, f1, f2 ;; [ 87] (set! f1-7 (*.s f1-6 f2-3)) [] -> [] + mul.s f30, f1, f0 ;; [ 88] (set! f30-0 (*.s f1-7 f0-1)) [] -> [] + lwu v1, 120(s6) ;; [ 89] (set! v1-29 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 90] (set! v1-30 (l.w (+ v1-29 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 91] (b! (<=0.si v1-30) L165 (set! v1-31 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L165 + or v1, s7, r0 + +B8: + lwu v1, 120(s6) ;; [ 92] (set! v1-32 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 93] (set! v1-33 (l.wu (+ v1-32 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 94] (set! v1-31 (l.wu (+ v1-33 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B9: +L165: + lwu a0, 116(s6) ;; [ 95] (set! a0-14 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 96] (set! a0-15 (l.wu (+ a0-14 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 276(a0) ;; [ 97] (set! a0-16 (l.wu (+ a0-15 276))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 98] (set! a0-17 (= v1-31 a0-16)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L166 ;; [ 99] (b! (not a0-17) L166 (set! v1-34 #f)) [a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B10: + mtc1 f0, r0 ;; [100] (set! f0-6 0) [] -> [] + lw v1, *TARGET-bank*(s7) ;; [101] (set! v1-35 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f1, 48(v1) ;; [102] (set! f1-8 (l.f (+ v1-35 48))) [v1: target-bank ] -> [] + lwu v1, 108(s6) ;; [103] (set! v1-36 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [104] (set! v1-37 (l.wu (+ v1-36 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [105] (set! a0-18 (+ v1-37 28)) [v1: dynamics ] -> [a0: vector ] + daddiu v1, sp, 32 ;; [106] (set! v1-38 (+ sp-0 32)) [sp: ] -> [v1: vector ] + lwu a1, 108(s6) ;; [107] (set! a1-8 (l.wu (+ self 108))) [s6: target ] -> [a1: control-info ] + daddiu a1, a1, 12 ;; [108] (set! a1-9 (+ a1-8 12)) [a1: control-info ] -> [a1: vector ] + lwu a2, 108(s6) ;; [109] (set! a2-3 (l.wu (+ self 108))) [s6: target ] -> [a2: control-info ] + daddiu a2, a2, 1212 ;; [110] (set! a2-4 (+ a2-3 1212)) [a2: control-info ] -> [a2: vector ] + lqc2 vf4, 0(a1) ;; [111] (set! v1-39 (vector-!2 v1-38 a1-9 a2-4)) + ;; [v1: vector a1: vector a2: vector ] -> [v1: vector ] + lqc2 vf5, 0(a2) + vmove.w vf6, vf0 + vsub.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) + lwc1 f2, 0(a0) ;; [112] (set! f2-4 (vec3dot a0-18 v1-39)) [v1: vector a0: vector ] -> [] + lwc1 f3, 4(a0) + lwc1 f4, 8(a0) + lwc1 f5, 0(v1) + lwc1 f6, 4(v1) + lwc1 f7, 8(v1) + mula.s f2, f5 + madda.s f3, f6 + madd.s f2, f4, f7 + mfc1 v1, f2 ;; [113] (set! v1-40 (fpr->gpr f2-4)) [] -> [v1: float ] + mtc1 f2, v1 ;; [114] (set! f2-5 (gpr->fpr v1-40)) [v1: float ] -> [] + sub.s f1, f1, f2 ;; [115] (set! f1-9 (-.s f1-8 f2-5)) [] -> [] + max.s f30, f0, f1 ;; [116] (set! f30-0 (max.s f0-6 f1-9)) [] -> [] + mfc1 v1, f30 ;; [117] (set! v1-41 (fpr->gpr f30-0)) [] -> [v1: float ] +B11: +L166: + daddiu gp, sp, 48 ;; [118] (set! gp-2 (+ sp-0 48)) [sp: ] -> [gp: vector ] + sq r0, 0(gp) ;; [119] (s.q! gp-2 0) [gp: vector ] -> [] + lwu v1, 108(s6) ;; [120] (set! v1-42 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [121] (set! v1-43 (l.wu (+ v1-42 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [122] (set! a0-19 (+ v1-43 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [123] (set! v1-44 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [124] (set! v1-45 (+ v1-44 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [125] (set! f0-7 (vec3dot a0-19 v1-45)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [126] (set! v1-46 (fpr->gpr f0-7)) [] -> [v1: float ] + mtc1 f0, v1 ;; [127] (set! f0-8 (gpr->fpr v1-46)) [v1: float ] -> [] + mtc1 f1, r0 ;; [128] (set! f1-10 0) [] -> [] + or v1, gp, r0 ;; [129] (set! v1-47 gp-2) [gp: vector ] -> [v1: vector ] + lwu a0, 108(s6) ;; [130] (set! a0-20 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + daddiu a0, a0, 60 ;; [131] (set! a0-21 (+ a0-20 60)) [a0: control-info ] -> [a0: vector ] + or a1, gp, r0 ;; [132] (set! a1-10 gp-2) [gp: vector ] -> [a1: vector ] + lwu a2, 108(s6) ;; [133] (set! a2-5 (l.wu (+ self 108))) [s6: target ] -> [a2: control-info ] + lwu a2, 432(a2) ;; [134] (set! a2-6 (l.wu (+ a2-5 432))) [a2: control-info ] -> [a2: dynamics ] + daddiu a2, a2, 28 ;; [135] (set! a2-7 (+ a2-6 28)) [a2: dynamics ] -> [a2: vector ] + lqc2 vf1, 0(a2) ;; [136] (set! a1-11 (vector-float*!2 a1-10 a2-7 f0-8)) + ;; [a1: vector a2: vector ] -> [a1: vector ] + mfc1 a2, f0 + qmtc2.i vf2, a2 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a1) + lqc2 vf4, 0(a0) ;; [137] (set! v1-48 (vector-!2 v1-47 a0-21 a1-11)) + ;; [v1: vector a0: vector a1: vector ] -> [v1: vector ] + lqc2 vf5, 0(a1) + vmove.w vf6, vf0 + vsub.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) + lw t9, vector-length(s7) ;; [138] (set! t9-3 vector-length) [] -> [t9: (function vector float) ] + or a0, gp, r0 ;; [139] (set! a0-22 gp-2) [gp: vector ] -> [a0: vector ] + jalr ra, t9 ;; [140] (call! a0-22) [a0: vector t9: (function vector float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [141] (set! f0-9 (gpr->fpr v0-3)) [v0: float ] -> [] + mov.s f1, f0 ;; [142] (set! f1-11 f0-9) [] -> [] + lui v1, L797 ;; [143] (set! v1-49 L797) [] -> [v1: ] + ori v1, v1, L797 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [144] (set! f2-6 (l.f v1-49)) [v1: ] -> [] + lui v1, L720 ;; [145] (set! v1-50 L720) [] -> [v1: ] + ori v1, v1, L720 + addu v1, fp, v1 + lwc1 f3, 0(v1) ;; [146] (set! f3-0 (l.f v1-50)) [v1: ] -> [] + lui v1, L798 ;; [147] (set! v1-51 L798) [] -> [v1: ] + ori v1, v1, L798 + addu v1, fp, v1 + lwc1 f4, 0(v1) ;; [148] (set! f4-0 (l.f v1-51)) [v1: ] -> [] + add.s f4, f4, f30 ;; [149] (set! f4-1 (+.s f4-0 f30-0)) [] -> [] + mul.s f3, f3, f4 ;; [150] (set! f3-1 (*.s f3-0 f4-1)) [] -> [] + sqrt.s f3, f3 ;; [151] (set! f3-2 (sqrt.s f3-1)) [] -> [] + add.s f2, f2, f3 ;; [152] (set! f2-7 (+.s f2-6 f3-2)) [] -> [] + lwu v1, 108(s6) ;; [153] (set! v1-52 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [154] (set! v1-53 (+ v1-52 60)) [v1: control-info ] -> [v1: vector ] + lwu a0, 108(s6) ;; [155] (set! a0-23 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + daddiu a0, a0, 60 ;; [156] (set! a0-24 (+ a0-23 60)) [a0: control-info ] -> [a0: vector ] + lwu a1, 108(s6) ;; [157] (set! a1-12 (l.wu (+ self 108))) [s6: target ] -> [a1: control-info ] + lwu a1, 432(a1) ;; [158] (set! a1-13 (l.wu (+ a1-12 432))) [a1: control-info ] -> [a1: dynamics ] + daddiu a1, a1, 28 ;; [159] (set! a1-14 (+ a1-13 28)) [a1: dynamics ] -> [a1: vector ] + lqc2 vf1, 0(a1) ;; [160] (set! a0-25 (vector-float*!2 a0-24 a1-14 f2-7)) + ;; [a0: vector a1: vector ] -> [a0: vector ] + mfc1 a1, f2 + qmtc2.i vf2, a1 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a0) + or a1, gp, r0 ;; [161] (set! a1-15 gp-2) [gp: vector ] -> [a1: vector ] + div.s f0, f0, f1 ;; [162] (set! f0-10 (/.s f0-9 f1-11)) [] -> [] + lqc2 vf1, 0(gp) ;; [163] (set! a1-16 (vector-float*!2 a1-15 gp-2 f0-10)) + ;; [a1: vector gp: vector ] -> [a1: vector ] + mfc1 a2, f0 + qmtc2.i vf2, a2 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a1) + vmove.w vf6, vf0 ;; [164] (set! v1-54 (vector+!2 v1-53 a0-25 a1-16)) + ;; [v1: vector a0: vector a1: vector ] -> [v1: vector ] + lqc2 vf4, 0(a0) + lqc2 vf5, 0(a1) + vadd.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) +B12: +L167: + lui v1, L723 ;; [165] (set! v1-55 L723) [] -> [v1: ] + ori v1, v1, L723 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [166] (set! f0-11 (l.f v1-55)) [v1: ] -> [] + lwu v1, 108(s6) ;; [167] (set! v1-56 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [168] (set! v1-57 (l.wu (+ v1-56 432))) [v1: control-info ] -> [v1: dynamics ] + swc1 f0, 8(v1) ;; [169] (s.f! (+ v1-57 8) f0-11) [v1: dynamics ] -> [] + lwu v1, 108(s6) ;; [170] (set! v1-58 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v0, v1, 1212 ;; [171] (set! v0-4 (+ v1-58 1212)) [v1: control-info ] -> [v0: vector ] + lwu v1, 108(s6) ;; [172] (set! v1-59 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 12 ;; [173] (set! v1-60 (+ v1-59 12)) [v1: control-info ] -> [v1: vector ] + lq v1, 0(v1) ;; [174] (set! v1-61 (l.q v1-60)) [v1: vector ] -> [v1: uint128 ] + sq v1, 0(v0) ;; [175] (s.q! v0-4 v1-61) [v0: vector v1: uint128 ] -> [] + ld ra, 0(sp) + ld fp, 8(sp) + lwc1 f30, 80(sp) + lq gp, 64(sp) + jr ra + daddiu sp, sp, 96 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-attack-air) + ((arg0 symbol)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (target-start-attack) + (target-danger-set! 'spin-air #f) + (set! (-> self control unknown-surface00) *jump-attack-mods*) + (let ((f0-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + (cond + ((or (>= 0.0 f0-1) (= arg0 'flop)) + (let ((gp-1 (new-stack-vector0))) + (let ((f0-3 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-1 (-> self control transv) (vector-float*! gp-1 (-> self control dynam gravity-normal) f0-3)) + ) + (let* ((f0-4 (vector-length gp-1)) + (f1-2 f0-4) + (f2-0 33775.48) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) + (vector-float*! gp-1 gp-1 (/ f0-4 f1-2)) + ) + ) + ) + ) + (else + (let* ((f1-5 (/ f0-1 (* (-> self control dynam gravity-length) (-> *display* seconds-per-frame)))) + (f30-0 (* 0.5 f1-5 (-> *display* seconds-per-frame) f0-1)) + ) + (if (ja-group? (-> self draw art-group data 62)) + (set! f30-0 + (fmax + 0.0 + (- (-> *TARGET-bank* attack-jump-height-max) + (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control unknown-vector52)) + ) + ) + ) + ) + ) + (let ((gp-2 (new-stack-vector0))) + (let ((f0-8 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-2 (-> self control transv) (vector-float*! gp-2 (-> self control dynam gravity-normal) f0-8)) + ) + (let* ((f0-9 (vector-length gp-2)) + (f1-11 f0-9) + (f2-7 (+ 1024.0 (sqrtf (* 245760.0 (+ 2048.0 f30-0))))) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-7) + (vector-float*! gp-2 gp-2 (/ f0-9 f1-11)) + ) + ) + ) + ) + ) + ) + ) + (set! (-> self control dynam gravity-length) 122880.0) + (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (event target-attack-air) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x50, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 + ;gprs: gp s5 s4 s3 +;; v0-0: object a0-0: process a1-0: int a2-0: symbol +;; a3-0: event-message-block +L168: + daddiu sp, sp, -80 + sd ra, 0(sp) + sq s3, 16(sp) + sq s4, 32(sp) + sq s5, 48(sp) + sq gp, 64(sp) +B0: + or gp, a0, r0 ;; [ 0] (set! arg0 arg0) [a0: process ] -> [gp: process ] + or s5, a1, r0 ;; [ 1] (set! arg1 arg1) [a1: int ] -> [s5: int ] + or s4, a2, r0 ;; [ 2] (set! arg2 arg2) [a2: symbol ] -> [s4: symbol ] + or s3, a3, r0 ;; [ 3] (set! arg3 arg3) [a3: event-message-block ] -> [s3: event-message-block ] + lw t9, target-bonk-event-handler(s7);; [ 4] (set! t9-0 target-bonk-event-handler) + ;; [] -> [t9: (function process int symbol event-message-block object :behavior target) ] + or a0, gp, r0 ;; [ 5] (set! a0-1 arg0) [gp: process ] -> [a0: process ] + or a1, s5, r0 ;; [ 6] (set! a1-1 arg1) [s5: int ] -> [a1: int ] + or a2, s4, r0 ;; [ 7] (set! a2-1 arg2) [s4: symbol ] -> [a2: symbol ] + or a3, s3, r0 ;; [ 8] (set! a3-1 arg3) [s3: event-message-block ] -> [a3: event-message-block ] + jalr ra, t9 ;; [ 9] (call! a0-1 a1-1 a2-1 a3-1) + ;; [a0: process a1: int a2: symbol a3: event-message-block t9: (function process int symbol event-message-block object :behavior target) ] -> [v0: object ] + sll v0, ra, 0 + + beq s7, v0, L169 ;; [ 10] (b! (not v0-0) L169 (nop!)) [v0: object ] -> [] + sll r0, r0, 0 + +B1: + beq r0, r0, L170 ;; [ 11] (b! #t L170 (nop!)) [] -> [] + sll r0, r0, 0 + +B2: +L169: + lw t9, target-dangerous-event-handler(s7);; [ 12] (set! t9-1 target-dangerous-event-handler) + ;; [] -> [t9: (function process int symbol event-message-block object :behavior target) ] + or a0, gp, r0 ;; [ 13] (set! a0-2 arg0) [gp: process ] -> [a0: process ] + or a1, s5, r0 ;; [ 14] (set! a1-2 arg1) [s5: int ] -> [a1: int ] + or a2, s4, r0 ;; [ 15] (set! a2-2 arg2) [s4: symbol ] -> [a2: symbol ] + or a3, s3, r0 ;; [ 16] (set! a3-2 arg3) [s3: event-message-block ] -> [a3: event-message-block ] + jalr ra, t9 ;; [ 17] (call! a0-2 a1-2 a2-2 a3-2) + ;; [a0: process a1: int a2: symbol a3: event-message-block t9: (function process int symbol event-message-block object :behavior target) ] -> [v0: object ] + sll v0, ra, 0 + +B3: +L170: + ld ra, 0(sp) + lq gp, 64(sp) + lq s5, 48(sp) + lq s4, 32(sp) + lq s3, 16(sp) + jr ra + daddiu sp, sp, 80 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (event target-attack-air) + ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v0-0 (target-bonk-event-handler arg0 arg1 arg2 arg3))) + (cond + (v0-0 + (empty) + v0-0 + ) + (else + (target-dangerous-event-handler arg0 arg1 arg2 arg3) + ) + ) + ) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-running-attack) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x50, fp? 1 ra? 1 ep? 1 + ;stack_vars: 16 bytes at 16 + ;gprs: gp s5 + ;fprs: f30 f28 f26 +;; Warnings: +;; INFO: Return type mismatch object vs none. +;; Used lq/sq + +;; v1-39: art-joint-anim v1-121: art-joint-anim s5-1: vector s6-0: target +;; gp-2: int f28-0: float f30-0: float +L171: + daddiu sp, sp, -80 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s5, 32(sp) + sq gp, 48(sp) + swc1 f26, 64(sp) + swc1 f28, 68(sp) + swc1 f30, 72(sp) +B0: + lwu v1, 152(s6) ;; [ 0] (set! v1-0 (l.wu (+ self 152))) [s6: target ] -> [v1: water-control ] + lwu v1, 0(v1) ;; [ 1] (set! v1-1 (l.wu v1-0)) [v1: water-control ] -> [v1: water-flags ] + andi v1, v1, 512 ;; [ 2] (set! v1-2 (logand v1-1 512)) [v1: water-flags ] -> [v1: water-flags ] + beq v1, r0, L172 ;; [ 3] (b! (zero? v1-2) L172 (set! v1-3 #f)) [v1: water-flags ] -> [v1: '#f ] + or v1, s7, r0 + +B1: + lw gp, sound-play-by-name(s7);; [ 4] (set! gp-0 sound-play-by-name) + ;; [] -> [gp: (function sound-name sound-id int int int sound-group symbol sound-id) ] + lui v1, 101 ;; [ 5] (set! v1-4 #x656b6f) [] -> [v1: ] + ori v1, v1, 27503 + lui a0, L815 ;; [ 6] (set! a0-0 L815) [] -> [a0: ] + ori a0, a0, L815 + addu a0, fp, a0 + ld a0, 0(a0) ;; [ 7] (set! a0-1 (l.d a0-0)) [a0: ] -> [a0: uint ] + pcpyld s5, v1, a0 ;; [ 8] (set! s5-0 (pcypld v1-4 a0-1)) [v1: a0: uint ] -> [s5: uint ] + lw t9, new-sound-id(s7) ;; [ 9] (set! t9-0 new-sound-id) [] -> [t9: (function sound-id) ] + jalr ra, t9 ;; [ 10] (call!) [t9: (function sound-id) ] -> [v0: sound-id ] + sll v0, ra, 0 + + or a1, v0, r0 ;; [ 11] (set! a1-0 v0-0) [v0: sound-id ] -> [a1: sound-id ] + addiu a2, r0, 1024 ;; [ 12] (set! a2-0 1024) [] -> [a2: ] + addiu a3, r0, 0 ;; [ 13] (set! a3-0 0) [] -> [a3: ] + addiu t0, r0, 0 ;; [ 14] (set! t0-0 0) [] -> [t0: ] + addiu t1, r0, 1 ;; [ 15] (set! t1-0 1) [] -> [t1: ] + daddiu t2, s7, #t ;; [ 16] (set! t2-0 #t) [] -> [t2: symbol ] + or t9, gp, r0 ;; [ 17] (set! t9-1 gp-0) + ;; [gp: (function sound-name sound-id int int int sound-group symbol sound-id) ] -> [t9: (function sound-name sound-id int int int sound-group symbol sound-id) ] + por a0, s5, r0 ;; [ 18] (set! a0-2 s5-0) [s5: uint ] -> [a0: uint ] + jalr ra, t9 ;; [ 19] (call! a0-2 a1-0 a2-0 a3-0 t0-0 t1-0 t2-0) + ;; [a0: uint a1: sound-id a2: a3: t0: t1: t2: symbol t9: (function sound-name sound-id int int int sound-group symbol sound-id) ] -> [v0: sound-id ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 20] (set! v1-5 v0-1) [v0: sound-id ] -> [v1: sound-id ] +B2: +L172: + lw t9, ja-channel-push!(s7);; [ 21] (set! t9-2 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [ 22] (set! a0-3 1) [] -> [a0: ] + addiu a1, r0, 6 ;; [ 23] (set! a1-1 6) [] -> [a1: ] + jalr ra, t9 ;; [ 24] (call! a0-3 a1-1) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [ 25] (set! v1-6 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 26] (set! v1-7 (l.wu (+ v1-6 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu gp, r0, v1 ;; [ 27] (set! gp-1 (+ v1-7 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lw t9, joint-control-channel-group-eval!(s7);; [ 28] (set! t9-3 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a0, gp, r0 ;; [ 29] (set! a0-4 gp-1) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 30] (set! v1-8 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 31] (set! v1-9 (l.wu (+ v1-8 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 264(v1) ;; [ 32] (set! a1-2 (l.wu (+ v1-9 264))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-identity(s7);; [ 33] (set! a2-1 num-func-identity) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 34] (call! a0-4 a1-2 a2-1) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + mtc1 f0, r0 ;; [ 35] (set! f0-0 0) [] -> [] + swc1 f0, 16(gp) ;; [ 36] (s.f! (+ gp-1 16) f0-0) [gp: joint-control-channel ] -> [] + mfc1 v1, f0 ;; [ 37] (set! v1-10 (fpr->gpr f0-0)) [] -> [v1: float ] + lui v1, L724 ;; [ 38] (set! v1-11 L724) [] -> [v1: ] + ori v1, v1, L724 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 39] (set! f0-1 (l.f v1-11)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 40] (set! v1-12 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 41] (set! v1-13 (l.wu (+ v1-12 432))) [v1: control-info ] -> [v1: dynamics ] + swc1 f0, 4(v1) ;; [ 42] (s.f! (+ v1-13 4) f0-1) [v1: dynamics ] -> [] + lui v1, L724 ;; [ 43] (set! v1-14 L724) [] -> [v1: ] + ori v1, v1, L724 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 44] (set! f0-2 (l.f v1-14)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 45] (set! v1-15 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 46] (set! v1-16 (l.wu (+ v1-15 432))) [v1: control-info ] -> [v1: dynamics ] + swc1 f0, 8(v1) ;; [ 47] (s.f! (+ v1-16 8) f0-2) [v1: dynamics ] -> [] + mtc1 f28, r0 ;; [ 48] (set! f28-0 0) [] -> [] + lui v1, L786 ;; [ 49] (set! v1-17 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f30, 0(v1) ;; [ 50] (set! f30-0 (l.f v1-17)) [v1: ] -> [] + addiu gp, r0, 0 ;; [ 51] (set! gp-2 0) [] -> [gp: ] +B3: +L173: + lwu a0, 128(s6) ;; [ 52] (set! a0-5 (l.wu (+ self 128))) [s6: target ] -> [a0: align-control ] + lwu v1, -4(a0) ;; [ 53] (set! v1-18 (l.wu (+ a0-5 -4))) + ;; [a0: align-control ] -> [v1: ] + lwu t9, 52(v1) ;; [ 54] (set! t9-4 (l.wu (+ v1-18 52))) + ;; [v1: ] -> [t9: ] + jalr ra, t9 ;; [ 55] (call! a0-5) + ;; [a0: align-control t9: ] -> [v0: transformq ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 56] (set! v1-19 v0-4) [v0: transformq ] -> [v1: transformq ] + lw t9, ja-min?(s7) ;; [ 57] (set! t9-5 ja-min?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 58] (set! a0-6 0) [] -> [a0: ] + jalr ra, t9 ;; [ 59] (call! a0-6) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + bne s7, v0, L188 ;; [ 60] (b! (truthy v0-5) L188 (set! v1-20 #f)) [v0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B4: + lw t9, ja-aframe-num(s7) ;; [ 61] (set! t9-6 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 62] (set! a0-7 0) [] -> [a0: ] + jalr ra, t9 ;; [ 63] (call! a0-7) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 64] (set! f0-3 (gpr->fpr v0-6)) [v0: float ] -> [] + lui v1, L747 ;; [ 65] (set! v1-21 L747) [] -> [v1: ] + ori v1, v1, L747 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 66] (set! f1-0 (l.f v1-21)) [v1: ] -> [] + c.lt.s f0, f1 ;; [ 67] (b! (>=.s f0-3 f1-0) L174 (set! v1-22 #t)) [] -> [v1: symbol ] + bc1f L174 + daddiu v1, s7, 8 + +B5: + or v1, s7, r0 ;; [ 68] (set! v1-22 #f) [] -> [v1: '#f ] +B6: +L174: + beql s7, v1, L179 ;; [ 69] (bl! (not v1-22) L179 (no-delay!)) [v1: symbol ] -> [] +B7: + or v1, v1, r0 ;; [ 70] (set! v1-23 v1-22) [v1: symbol ] -> [v1: symbol ] + +B8: + lwu v1, 108(s6) ;; [ 71] (set! v1-24 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld v1, 268(v1) ;; [ 72] (set! v1-25 (l.d (+ v1-24 268))) [v1: control-info ] -> [v1: cshape-moving-flags ] + andi v1, v1, 1 ;; [ 73] (set! v1-26 (logand v1-25 1)) + ;; [v1: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + bnel v1, r0, L178 ;; [ 74] (bl! (nonzero? v1-26) L178 (no-delay!)) [v1: cshape-moving-flags ] -> [] +B9: + or v1, s7, r0 ;; [ 75] (set! v1-27 #f) [] -> [v1: '#f ] + +B10: + lw v1, *display*(s7) ;; [ 76] (set! v1-28 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 77] (set! v1-29 (l.d (+ v1-28 780))) [v1: display ] -> [v1: time-frame ] + lwu a0, 108(s6) ;; [ 78] (set! a0-8 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 1284(a0) ;; [ 79] (set! a0-9 (l.d (+ a0-8 1284))) [a0: control-info ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [ 80] (set! v1-30 (- v1-29 a0-9)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + lw a0, *TARGET-bank*(s7) ;; [ 81] (set! a0-10 *TARGET-bank*) [] -> [a0: target-bank ] + ld a0, 164(a0) ;; [ 82] (set! a0-11 (l.d (+ a0-10 164))) [a0: target-bank ] -> [a0: time-frame ] + slt v1, v1, a0 ;; [ 83] (set! a0-12 (>=.si v1-30 a0-11)) [v1: time-frame a0: time-frame ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L178 ;; [ 84] (bl! (not a0-12) L178 (no-delay!)) [a0: symbol ] -> [] +B11: + or v1, a0, r0 ;; [ 85] (set! v1-27 a0-12) [a0: symbol ] -> [v1: symbol ] + +B12: + mtc1 f0, r0 ;; [ 86] (set! f0-4 0) [] -> [] + lwu v1, 108(s6) ;; [ 87] (set! v1-31 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 88] (set! v1-32 (l.wu (+ v1-31 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 89] (set! a0-13 (+ v1-32 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 90] (set! v1-33 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 91] (set! v1-34 (+ v1-33 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f1, 0(a0) ;; [ 92] (set! f1-1 (vec3dot a0-13 v1-34)) [v1: vector a0: vector ] -> [] + lwc1 f2, 4(a0) + lwc1 f3, 8(a0) + lwc1 f4, 0(v1) + lwc1 f5, 4(v1) + lwc1 f6, 8(v1) + mula.s f1, f4 + madda.s f2, f5 + madd.s f1, f3, f6 + mfc1 v1, f1 ;; [ 93] (set! v1-35 (fpr->gpr f1-1)) [] -> [v1: float ] + mtc1 f1, v1 ;; [ 94] (set! f1-2 (gpr->fpr v1-35)) [v1: float ] -> [] + c.lt.s f0, f1 ;; [ 95] (b! (>=.s f0-4 f1-2) L175 (set! v1-36 #t)) [] -> [v1: symbol ] + bc1f L175 + daddiu v1, s7, 8 + +B13: + or v1, s7, r0 ;; [ 96] (set! v1-36 #f) [] -> [v1: '#f ] +B14: +L175: + beql s7, v1, L178 ;; [ 97] (bl! (not v1-36) L178 (no-delay!)) [v1: symbol ] -> [] +B15: + or v1, v1, r0 ;; [ 98] (set! v1-27 v1-36) [v1: symbol ] -> [v1: symbol ] + +B16: + lwu v1, 120(s6) ;; [ 99] (set! v1-37 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [100] (set! v1-38 (l.w (+ v1-37 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [101] (b! (<=0.si v1-38) L176 (set! v1-39 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L176 + or v1, s7, r0 + +B17: + lwu v1, 120(s6) ;; [102] (set! v1-40 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [103] (set! v1-41 (l.wu (+ v1-40 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [104] (set! v1-39 (l.wu (+ v1-41 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B18: +L176: + lwu a0, 116(s6) ;; [105] (set! a0-14 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [106] (set! a0-15 (l.wu (+ a0-14 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 264(a0) ;; [107] (set! a0-16 (l.wu (+ a0-15 264))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [108] (set! a1-3 (= v1-39 a0-16)) [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L177 ;; [109] (bl! (truthy a1-3) L177 (no-delay!)) [a1: symbol ] -> [] +B19: + or a0, a1, r0 ;; [110] (set! a0-17 a1-3) [a1: symbol ] -> [a0: symbol ] + +B20: + lwu a0, 116(s6) ;; [111] (set! a0-18 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [112] (set! a0-19 (l.wu (+ a0-18 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 268(a0) ;; [113] (set! a0-20 (l.wu (+ a0-19 268))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [114] (set! a1-4 (= v1-39 a0-20)) [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L177 ;; [115] (bl! (truthy a1-4) L177 (no-delay!)) [a1: symbol ] -> [] +B21: + or a0, a1, r0 ;; [116] (set! a0-17 a1-4) [a1: symbol ] -> [a0: symbol ] + +B22: + lwu a0, 116(s6) ;; [117] (set! a0-21 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [118] (set! a0-22 (l.wu (+ a0-21 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 272(a0) ;; [119] (set! a0-23 (l.wu (+ a0-22 272))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [120] (set! a0-17 (= v1-39 a0-23)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 +B23: +L177: + beql s7, a0, L178 ;; [121] (bl! (not a0-17) L178 (no-delay!)) [a0: symbol ] -> [] +B24: + daddiu v1, s7, 8 ;; [122] (set! v1-27 #t) [] -> [v1: symbol ] + +B25: + lui v1, L726 ;; [123] (set! v1-42 L726) [] -> [v1: ] + ori v1, v1, L726 + addu v1, fp, v1 + lwc1 f26, 0(v1) ;; [124] (set! f26-0 (l.f v1-42)) [v1: ] -> [] + lw t9, target-height-above-ground(s7);; [125] (set! t9-7 target-height-above-ground) + ;; [] -> [t9: (function float :behavior target) ] + jalr ra, t9 ;; [126] (call!) [t9: (function float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [127] (set! f0-5 (gpr->fpr v0-7)) [v0: float ] -> [] + c.lt.s f26, f0 ;; [128] (b! (<.s f26-0 f0-5) L178 (set! v1-27 #t)) [] -> [v1: symbol ] + bc1t L178 + daddiu v1, s7, 8 + +B26: + or v1, s7, r0 ;; [129] (set! v1-27 #f) [] -> [v1: '#f ] +B27: +L178: + beql s7, v1, L179 ;; [130] (bl! (not v1-27) L179 (no-delay!)) [v1: symbol ] -> [] +B28: + or v1, v1, r0 ;; [131] (set! v1-23 v1-27) [v1: symbol ] -> [v1: symbol ] + +B29: + lw v1, *display*(s7) ;; [132] (set! v1-43 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [133] (set! v1-44 (l.d (+ v1-43 780))) [v1: display ] -> [v1: time-frame ] + lwu a0, 108(s6) ;; [134] (set! a0-24 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 2180(a0) ;; [135] (set! a0-25 (l.wu (+ a0-24 2180))) [a0: control-info ] -> [a0: uint ] + dsubu v1, v1, a0 ;; [136] (set! v1-45 (- v1-44 a0-25)) [v1: time-frame a0: uint ] -> [v1: time-frame ] + sltiu a0, v1, 12 ;; [137] (set! v1-23 (>=.ui v1-45 12)) [v1: time-frame ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 +B30: +L179: + beq s7, v1, L180 ;; [138] (b! (not v1-23) L180 (nop!)) [v1: symbol ] -> [] + sll r0, r0, 0 + +B31: + lw t9, enter-state(s7) ;; [139] (set! t9-8 enter-state) [] -> [t9: ] + or a0, s7, r0 ;; [140] (set! a0-26 #f) [] -> [a0: '#f ] + lw v1, target-falling(s7) ;; [141] (set! v1-46 target-falling) [] -> [v1: (state symbol target) ] + sw v1, 72(s6) ;; [142] (s.w! (+ self 72) v1-46) [v1: (state symbol target) s6: target ] -> [] + jalr ra, t9 ;; [143] (call! a0-26) [a0: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [144] (set! v1-47 v0-8) [v0: object ] -> [v1: object ] + beq r0, r0, L188 ;; [145] (b! #t L188 (nop!)) [] -> [] + sll r0, r0, 0 + +B32: +L180: + lwu v1, 108(s6) ;; [146] (set! v1-48 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 2184(v1) ;; [147] (set! v1-49 (l.wu (+ v1-48 2184))) [v1: control-info ] -> [v1: uint ] + beql v1, r0, L181 ;; [148] (bl! (zero? v1-49) L181 (no-delay!)) [v1: uint ] -> [] +B33: + or v1, s7, r0 ;; [149] (set! v1-50 #f) [] -> [v1: '#f ] + +B34: + lw v1, *display*(s7) ;; [150] (set! v1-51 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [151] (set! v1-52 (l.d (+ v1-51 780))) [v1: display ] -> [v1: time-frame ] + lwu a0, 108(s6) ;; [152] (set! a0-27 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 2184(a0) ;; [153] (set! a0-28 (l.wu (+ a0-27 2184))) [a0: control-info ] -> [a0: uint ] + dsubu v1, v1, a0 ;; [154] (set! v1-53 (- v1-52 a0-28)) [v1: time-frame a0: uint ] -> [v1: time-frame ] + sltiu a0, v1, 12 ;; [155] (set! v1-50 (>=.ui v1-53 12)) [v1: time-frame ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 +B35: +L181: + beq s7, v1, L182 ;; [156] (b! (not v1-50) L182 (nop!)) [v1: symbol ] -> [] + sll r0, r0, 0 + +B36: + lw t9, set-forward-vel(s7);; [157] (set! t9-9 set-forward-vel) [] -> [t9: (function float vector :behavior target) ] + lui v1, L814 ;; [158] (set! v1-54 L814) [] -> [v1: ] + ori v1, v1, L814 + addu v1, fp, v1 + lw a0, 0(v1) ;; [159] (set! a0-29 (l.w v1-54)) [v1: ] -> [a0: int ] + jalr ra, t9 ;; [160] (call! a0-29) + ;; [a0: int t9: (function float vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [161] (set! v1-55 v0-9) [v0: vector ] -> [v1: vector ] + beq r0, r0, L188 ;; [162] (b! #t L188 (nop!)) [] -> [] + sll r0, r0, 0 + +B37: +L182: + lwu v1, 108(s6) ;; [163] (set! v1-56 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [164] (set! v1-57 (l.wu (+ v1-56 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [165] (set! v1-58 (l.w (+ v1-57 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [166] (set! v1-59 (sll v1-58 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [167] (set! a0-30 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [168] (set! v1-60 (+ v1-59 a0-30)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [169] (set! v1-61 (l.wu (+ v1-60 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 40(v1) ;; [170] (set! v1-62 (l.wu (+ v1-61 40))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 32768 ;; [171] (set! v1-63 (logand v1-62 #x8000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + bnel v1, r0, L183 ;; [172] (bl! (nonzero? v1-63) L183 (no-delay!)) [v1: pad-buttons ] -> [] +B38: + or v1, s7, r0 ;; [173] (set! v1-64 #f) [] -> [v1: '#f ] + +B39: + lw v1, *display*(s7) ;; [174] (set! v1-65 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [175] (set! v1-66 (l.d (+ v1-65 780))) [v1: display ] -> [v1: time-frame ] + ld a0, 164(s6) ;; [176] (set! a0-31 (l.d (+ self 164))) [s6: target ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [177] (set! v1-67 (- v1-66 a0-31)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + slti a0, v1, 15 ;; [178] (set! v1-64 (>=.si v1-67 15)) [v1: time-frame ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 +B40: +L183: + beq s7, v1, L186 ;; [179] (b! (not v1-64) L186 (nop!)) [v1: symbol ] -> [] + sll r0, r0, 0 + +B41: + addiu v1, r0, 1 ;; [180] (set! v1-68 1) [] -> [v1: ] + lwu a0, 108(s6) ;; [181] (set! a0-32 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 260(a0) ;; [182] (set! a0-33 (l.wu (+ a0-32 260))) [a0: control-info ] -> [a0: pat-surface ] + dsll32 a0, a0, 20 ;; [183] (set! a0-34 (sll a0-33 52)) [a0: pat-surface ] -> [a0: ( << 52) ] + dsrl32 a0, a0, 26 ;; [184] (set! a0-35 (srl a0-34 58)) [a0: ( << 52) ] -> [a0: pat-material ] + bne a0, v1, L184 ;; [185] (b! (!= a0-35 v1-68) L184 (nop!)) [v1: a0: pat-material ] -> [] + sll r0, r0, 0 + +B42: + lw t9, set-forward-vel(s7);; [186] (set! t9-10 set-forward-vel) [] -> [t9: (function float vector :behavior target) ] + lui v1, L733 ;; [187] (set! v1-69 L733) [] -> [v1: ] + ori v1, v1, L733 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [188] (set! f0-6 (l.f v1-69)) [v1: ] -> [] + lui v1, L764 ;; [189] (set! v1-70 L764) [] -> [v1: ] + ori v1, v1, L764 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [190] (set! f1-3 (l.f v1-70)) [v1: ] -> [] + lwu v1, 108(s6) ;; [191] (set! v1-71 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f2, 528(v1) ;; [192] (set! f2-0 (l.f (+ v1-71 528))) [v1: control-info ] -> [] + mul.s f1, f1, f2 ;; [193] (set! f1-4 (*.s f1-3 f2-0)) [] -> [] + max.s f0, f0, f1 ;; [194] (set! f0-7 (max.s f0-6 f1-4)) [] -> [] + mfc1 a0, f0 ;; [195] (set! a0-36 (fpr->gpr f0-7)) [] -> [a0: float ] + jalr ra, t9 ;; [196] (call! a0-36) + ;; [a0: float t9: (function float vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [197] (set! v1-72 v0-10) [v0: vector ] -> [v1: vector ] + beq r0, r0, L185 ;; [198] (b! #t L185 (nop!)) [] -> [] + sll r0, r0, 0 + +B43: +L184: + lw t9, set-forward-vel(s7);; [199] (set! t9-11 set-forward-vel) [] -> [t9: (function float vector :behavior target) ] + lui v1, L764 ;; [200] (set! v1-73 L764) [] -> [v1: ] + ori v1, v1, L764 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [201] (set! f0-8 (l.f v1-73)) [v1: ] -> [] + lwu v1, 108(s6) ;; [202] (set! v1-74 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f1, 528(v1) ;; [203] (set! f1-5 (l.f (+ v1-74 528))) [v1: control-info ] -> [] + mul.s f0, f0, f1 ;; [204] (set! f0-9 (*.s f0-8 f1-5)) [] -> [] + mfc1 a0, f0 ;; [205] (set! a0-37 (fpr->gpr f0-9)) [] -> [a0: float ] + jalr ra, t9 ;; [206] (call! a0-37) + ;; [a0: float t9: (function float vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [207] (set! v1-75 v0-11) [v0: vector ] -> [v1: vector ] +B44: +L185: + beq r0, r0, L188 ;; [208] (b! #t L188 (nop!)) [] -> [] + sll r0, r0, 0 + +B45: +L186: + lw t9, ja-done?(s7) ;; [209] (set! t9-12 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [210] (set! a0-38 0) [] -> [a0: ] + jalr ra, t9 ;; [211] (call! a0-38) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L187 ;; [212] (b! (not v0-12) L187 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B46: + lw t9, set-forward-vel(s7);; [213] (set! t9-13 set-forward-vel) [] -> [t9: (function float vector :behavior target) ] + mfc1 a0, f28 ;; [214] (set! a0-39 (fpr->gpr f28-0)) [] -> [a0: float ] + jalr ra, t9 ;; [215] (call! a0-39) + ;; [a0: float t9: (function float vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [216] (set! v1-76 v0-13) [v0: vector ] -> [v1: vector ] + beq r0, r0, L188 ;; [217] (b! #t L188 (nop!)) [] -> [] + sll r0, r0, 0 + +B47: +L187: + lw t9, target-align-vel-z-adjust(s7);; [218] (set! t9-14 target-align-vel-z-adjust) + ;; [] -> [t9: (function float float :behavior target) ] + lwu v1, 128(s6) ;; [219] (set! v1-77 (l.wu (+ self 128))) [s6: target ] -> [v1: align-control ] + lwc1 f0, 260(v1) ;; [220] (set! f0-10 (l.f (+ v1-77 260))) [v1: align-control ] -> [] + mfc1 a0, f0 ;; [221] (set! a0-40 (fpr->gpr f0-10)) [] -> [a0: float ] + jalr ra, t9 ;; [222] (call! a0-40) + ;; [a0: float t9: (function float float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [223] (set! f0-11 (gpr->fpr v0-14)) [v0: float ] -> [] + lw v1, *display*(s7) ;; [224] (set! v1-78 *display*) [] -> [v1: display ] + lwc1 f1, 908(v1) ;; [225] (set! f1-6 (l.f (+ v1-78 908))) [v1: display ] -> [] + mul.s f0, f0, f1 ;; [226] (set! f0-12 (*.s f0-11 f1-6)) [] -> [] + mul.s f28, f0, f30 ;; [227] (set! f28-0 (*.s f0-12 f30-0)) [] -> [] + lw t9, set-forward-vel(s7);; [228] (set! t9-15 set-forward-vel) [] -> [t9: (function float vector :behavior target) ] + mfc1 a0, f28 ;; [229] (set! a0-41 (fpr->gpr f28-0)) [] -> [a0: float ] + jalr ra, t9 ;; [230] (call! a0-41) + ;; [a0: float t9: (function float vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [231] (set! v1-79 v0-15) [v0: vector ] -> [v1: vector ] +B48: +L188: + daddiu s5, sp, 16 ;; [232] (set! s5-1 (+ sp-0 16)) [sp: ] -> [s5: vector ] + sq r0, 0(s5) ;; [233] (s.q! s5-1 0) [s5: vector ] -> [] + lw t9, vector-matrix*!(s7);; [234] (set! t9-16 vector-matrix*!) [] -> [t9: (function vector vector matrix vector) ] + or a0, s5, r0 ;; [235] (set! a0-42 s5-1) [s5: vector ] -> [a0: vector ] + lwu v1, 108(s6) ;; [236] (set! v1-80 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a1, v1, 60 ;; [237] (set! a1-5 (+ v1-80 60)) [v1: control-info ] -> [a1: vector ] + lwu v1, 108(s6) ;; [238] (set! v1-81 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a2, v1, 924 ;; [239] (set! a2-2 (+ v1-81 924)) [v1: control-info ] -> [a2: matrix ] + jalr ra, t9 ;; [240] (call! a0-42 a1-5 a2-2) + ;; [a0: vector a1: vector a2: matrix t9: (function vector vector matrix vector) ] -> [v0: vector ] + sll v0, ra, 0 + + mtc1 f0, r0 ;; [241] (set! f0-13 0) [] -> [] + swc1 f0, 4(s5) ;; [242] (s.f! (+ s5-1 4) f0-13) [s5: vector ] -> [] + lw t9, vector-matrix*!(s7);; [243] (set! t9-17 vector-matrix*!) [] -> [t9: (function vector vector matrix vector) ] + lwu v1, 108(s6) ;; [244] (set! v1-82 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a0, v1, 18924 ;; [245] (set! a0-43 (+ v1-82 #x49ec)) [v1: control-info ] -> [a0: vector ] + lwu v1, 108(s6) ;; [246] (set! v1-83 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a2, v1, 988 ;; [247] (set! a2-3 (+ v1-83 988)) [v1: control-info ] -> [a2: matrix ] + or a1, s5, r0 ;; [248] (set! a1-6 s5-1) [s5: vector ] -> [a1: vector ] + jalr ra, t9 ;; [249] (call! a0-43 a1-6 a2-3) + ;; [a0: vector a1: vector a2: matrix t9: (function vector vector matrix vector) ] -> [v0: vector ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [250] (set! v1-84 v0-17) [v0: vector ] -> [v1: vector ] + lwu s6, 44(s6) ;; [251] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [252] (set! v1-85 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [253] (set! v1-86 (l.wu (+ v1-85 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [254] (set! a0-44 (+ v1-86 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [255] (set! v1-87 (l.wu (+ a0-44 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [256] (set! v1-88 (l.wu (+ v1-87 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [257] (set! v1-89 (l.h (+ v1-88 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [258] (set! v1-90 (+ v1-89 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [259] (set! f0-14 (gpr->fpr v1-90)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [260] (set! f0-15 (i2f f0-14)) [] -> [] + swc1 f0, 24(a0) ;; [261] (s.f! (+ a0-44 24) f0-15) [a0: joint-control-channel ] -> [] + lwu v1, 108(s6) ;; [262] (set! v1-91 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 660(v1) ;; [263] (set! v1-92 (l.wu (+ v1-91 660))) [v1: control-info ] -> [v1: surface ] + lwc1 f0, 88(v1) ;; [264] (set! f0-16 (l.f (+ v1-92 88))) [v1: surface ] -> [] + swc1 f0, 28(a0) ;; [265] (s.f! (+ a0-44 28) f0-16) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [266] (set! t9-18 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [267] (set! a1-7 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [268] (set! a2-4 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [269] (call! a0-44 a1-7 a2-4) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [270] (set! v1-93 v0-18) [v0: int ] -> [v1: int ] + lw v1, *display*(s7) ;; [271] (set! v1-94 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [272] (set! v1-95 (l.d (+ v1-94 780))) [v1: display ] -> [v1: time-frame ] + ld a0, 164(s6) ;; [273] (set! a0-45 (l.d (+ self 164))) [s6: target ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [274] (set! v1-96 (- v1-95 a0-45)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + slti v1, v1, 30 ;; [275] (b! (<.si v1-96 30) L189 (set! v1-97 #f)) [v1: time-frame ] -> [v1: '#f ] + bne v1, r0, L189 + or v1, s7, r0 + +B49: + mtc1 f0, r0 ;; [276] (set! f0-17 0) [] -> [] + lw v1, *run-attack-mods*(s7);; [277] (set! v1-98 *run-attack-mods*) [] -> [v1: surface ] + swc1 f0, 8(v1) ;; [278] (s.f! (+ v1-98 8) f0-17) [v1: surface ] -> [] + mfc1 v1, f0 ;; [279] (set! v1-99 (fpr->gpr f0-17)) [] -> [v1: float ] +B50: +L189: + addiu v1, r0, 2 ;; [280] (set! v1-100 2) [] -> [v1: ] + slt v1, v1, gp ;; [281] (b! (>=.si v1-100 gp-2) L190 (set! v1-101 #f)) + ;; [v1: gp: int ] -> [v1: '#f ] + beq v1, r0, L190 + or v1, s7, r0 + +B51: + lui v1, L786 ;; [282] (set! v1-102 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [283] (set! f0-18 (l.f v1-102)) [v1: ] -> [] + lwu v1, 108(s6) ;; [284] (set! v1-103 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f1, 18940(v1) ;; [285] (set! f1-7 (l.f (+ v1-103 #x49fc))) [v1: control-info ] -> [] + min.s f0, f0, f1 ;; [286] (set! f0-19 (min.s f0-18 f1-7)) [] -> [] + mul.s f30, f30, f0 ;; [287] (set! f30-0 (*.s f30-0 f0-19)) [] -> [] + mfc1 v1, f30 ;; [288] (set! v1-104 (fpr->gpr f30-0)) [] -> [v1: float ] +B52: +L190: + daddiu gp, gp, 1 ;; [289] (set! gp-2 (+ gp-2 1)) [gp: int ] -> [gp: ] + lw t9, ja-done?(s7) ;; [290] (set! t9-19 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [291] (set! a0-46 0) [] -> [a0: ] + jalr ra, t9 ;; [292] (call! a0-46) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L173 ;; [293] (b! (not v0-19) L173 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B53: + or v1, s7, r0 ;; [294] (set! v1-105 #f) [] -> [v1: '#f ] + lwu v1, 108(s6) ;; [295] (set! v1-106 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld v1, 268(v1) ;; [296] (set! v1-107 (l.d (+ v1-106 268))) + ;; [v1: control-info ] -> [v1: cshape-moving-flags ] + andi v1, v1, 1 ;; [297] (set! v1-108 (logand v1-107 1)) + ;; [v1: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + bnel v1, r0, L194 ;; [298] (bl! (nonzero? v1-108) L194 (no-delay!)) [v1: cshape-moving-flags ] -> [] +B54: + or v1, s7, r0 ;; [299] (set! v1-109 #f) [] -> [v1: '#f ] + +B55: + lw v1, *display*(s7) ;; [300] (set! v1-110 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [301] (set! v1-111 (l.d (+ v1-110 780))) [v1: display ] -> [v1: time-frame ] + lwu a0, 108(s6) ;; [302] (set! a0-47 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 1284(a0) ;; [303] (set! a0-48 (l.d (+ a0-47 1284))) [a0: control-info ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [304] (set! v1-112 (- v1-111 a0-48)) + ;; [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + lw a0, *TARGET-bank*(s7) ;; [305] (set! a0-49 *TARGET-bank*) [] -> [a0: target-bank ] + ld a0, 164(a0) ;; [306] (set! a0-50 (l.d (+ a0-49 164))) [a0: target-bank ] -> [a0: time-frame ] + slt v1, v1, a0 ;; [307] (set! a0-51 (>=.si v1-112 a0-50)) + ;; [v1: time-frame a0: time-frame ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L194 ;; [308] (bl! (not a0-51) L194 (no-delay!)) [a0: symbol ] -> [] +B56: + or v1, a0, r0 ;; [309] (set! v1-109 a0-51) [a0: symbol ] -> [v1: symbol ] + +B57: + mtc1 f0, r0 ;; [310] (set! f0-20 0) [] -> [] + lwu v1, 108(s6) ;; [311] (set! v1-113 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [312] (set! v1-114 (l.wu (+ v1-113 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [313] (set! a0-52 (+ v1-114 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [314] (set! v1-115 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [315] (set! v1-116 (+ v1-115 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f1, 0(a0) ;; [316] (set! f1-8 (vec3dot a0-52 v1-116)) [v1: vector a0: vector ] -> [] + lwc1 f2, 4(a0) + lwc1 f3, 8(a0) + lwc1 f4, 0(v1) + lwc1 f5, 4(v1) + lwc1 f6, 8(v1) + mula.s f1, f4 + madda.s f2, f5 + madd.s f1, f3, f6 + mfc1 v1, f1 ;; [317] (set! v1-117 (fpr->gpr f1-8)) [] -> [v1: float ] + mtc1 f1, v1 ;; [318] (set! f1-9 (gpr->fpr v1-117)) [v1: float ] -> [] + c.lt.s f0, f1 ;; [319] (b! (>=.s f0-20 f1-9) L191 (set! v1-118 #t)) [] -> [v1: symbol ] + bc1f L191 + daddiu v1, s7, 8 + +B58: + or v1, s7, r0 ;; [320] (set! v1-118 #f) [] -> [v1: '#f ] +B59: +L191: + beql s7, v1, L194 ;; [321] (bl! (not v1-118) L194 (no-delay!)) [v1: symbol ] -> [] +B60: + or v1, v1, r0 ;; [322] (set! v1-109 v1-118) [v1: symbol ] -> [v1: symbol ] + +B61: + lwu v1, 120(s6) ;; [323] (set! v1-119 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [324] (set! v1-120 (l.w (+ v1-119 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [325] (b! (<=0.si v1-120) L192 (set! v1-121 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L192 + or v1, s7, r0 + +B62: + lwu v1, 120(s6) ;; [326] (set! v1-122 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [327] (set! v1-123 (l.wu (+ v1-122 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [328] (set! v1-121 (l.wu (+ v1-123 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B63: +L192: + lwu a0, 116(s6) ;; [329] (set! a0-53 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [330] (set! a0-54 (l.wu (+ a0-53 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 264(a0) ;; [331] (set! a0-55 (l.wu (+ a0-54 264))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [332] (set! a1-8 (= v1-121 a0-55)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L193 ;; [333] (bl! (truthy a1-8) L193 (no-delay!)) [a1: symbol ] -> [] +B64: + or a0, a1, r0 ;; [334] (set! a0-56 a1-8) [a1: symbol ] -> [a0: symbol ] + +B65: + lwu a0, 116(s6) ;; [335] (set! a0-57 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [336] (set! a0-58 (l.wu (+ a0-57 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 268(a0) ;; [337] (set! a0-59 (l.wu (+ a0-58 268))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [338] (set! a1-9 (= v1-121 a0-59)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L193 ;; [339] (bl! (truthy a1-9) L193 (no-delay!)) [a1: symbol ] -> [] +B66: + or a0, a1, r0 ;; [340] (set! a0-56 a1-9) [a1: symbol ] -> [a0: symbol ] + +B67: + lwu a0, 116(s6) ;; [341] (set! a0-60 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [342] (set! a0-61 (l.wu (+ a0-60 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 272(a0) ;; [343] (set! a0-62 (l.wu (+ a0-61 272))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [344] (set! a0-56 (= v1-121 a0-62)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 +B68: +L193: + beql s7, a0, L194 ;; [345] (bl! (not a0-56) L194 (no-delay!)) [a0: symbol ] -> [] +B69: + daddiu v1, s7, 8 ;; [346] (set! v1-109 #t) [] -> [v1: symbol ] + +B70: + lui v1, L726 ;; [347] (set! v1-124 L726) [] -> [v1: ] + ori v1, v1, L726 + addu v1, fp, v1 + lwc1 f30, 0(v1) ;; [348] (set! f30-1 (l.f v1-124)) [v1: ] -> [] + lw t9, target-height-above-ground(s7);; [349] (set! t9-20 target-height-above-ground) + ;; [] -> [t9: (function float :behavior target) ] + jalr ra, t9 ;; [350] (call!) [t9: (function float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [351] (set! f0-21 (gpr->fpr v0-20)) [v0: float ] -> [] + c.lt.s f30, f0 ;; [352] (b! (<.s f30-1 f0-21) L194 (set! v1-109 #t)) [] -> [v1: symbol ] + bc1t L194 + daddiu v1, s7, 8 + +B71: + or v1, s7, r0 ;; [353] (set! v1-109 #f) [] -> [v1: '#f ] +B72: +L194: + beq s7, v1, L195 ;; [354] (b! (not v1-109) L195 (set! v1-125 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B73: + lw t9, enter-state(s7) ;; [355] (set! t9-21 enter-state) [] -> [t9: ] + or a0, s7, r0 ;; [356] (set! a0-63 #f) [] -> [a0: '#f ] + lw v1, target-falling(s7) ;; [357] (set! v1-126 target-falling) [] -> [v1: (state symbol target) ] + sw v1, 72(s6) ;; [358] (s.w! (+ self 72) v1-126) [v1: (state symbol target) s6: target ] -> [] + jalr ra, t9 ;; [359] (call! a0-63) [a0: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [360] (set! v1-127 v0-21) [v0: object ] -> [v1: object ] +B74: +L195: + lw t9, enter-state(s7) ;; [361] (set! t9-22 enter-state) [] -> [t9: ] + lw v1, target-stance(s7) ;; [362] (set! v1-128 target-stance) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [363] (s.w! (+ self 72) v1-128) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [364] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + ld ra, 0(sp) + ld fp, 8(sp) + lwc1 f30, 72(sp) + lwc1 f28, 68(sp) + lwc1 f26, 64(sp) + lq gp, 48(sp) + lq s5, 32(sp) + jr ra + daddiu sp, sp, 80 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-running-attack) + () + (if (logtest? (-> self water flags) (water-flags wt09)) + (sound-play "swim-stroke") + ) + (ja-channel-push! 1 (seconds 0.02)) + (ja :group! (-> self draw art-group data 59) :num! min) + (set! (-> self control dynam gravity-max) 368640.0) + (set! (-> self control dynam gravity-length) 368640.0) + (let ((f28-0 0.0) + (f30-0 1.0) + (gp-2 0) + ) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (when (not (ja-min? 0)) + (cond + ((and (>= (ja-aframe-num 0) 20.0) + (and (and (zero? (logand (-> self control status) (cshape-moving-flags onsurf))) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (-> *TARGET-bank* ground-timeout)) + (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (let ((v1-39 (ja-group))) + (or (not (or (= v1-39 (-> self draw art-group data 59)) + (= v1-39 (-> self draw art-group data 60)) + (= v1-39 (-> self draw art-group data 61)) + ) + ) + (< 4096.0 (target-height-above-ground)) + ) + ) + ) + (>= (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> self control unknown-uint20)))) + (the-as uint 12) + ) ) ) + (go target-falling #f) + ) + ((and (nonzero? (-> self control unknown-uint30)) + (>= (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> self control unknown-uint30)))) + (the-as uint 12) + ) + ) + (set-forward-vel (the-as float 0.0)) + ) + ((and (zero? (logand (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) + (pad-buttons square) + ) + ) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.05)) + ) + (if (= (-> self control ground-pat material) (pat-material ice)) + (set-forward-vel (fmax 32768.0 (* 0.8 (-> self control unknown-float01)))) + (set-forward-vel (* 0.8 (-> self control unknown-float01))) + ) + ) + ((ja-done? 0) + (set-forward-vel f28-0) + ) + (else + (set! f28-0 + (* (target-align-vel-z-adjust (-> self align delta trans z)) (-> *display* frames-per-second) f30-0) + ) + (set-forward-vel f28-0) + ) ) - (if t1-4 - (return #t) + ) + (let ((s5-1 (new-stack-vector0))) + (vector-matrix*! s5-1 (-> self control transv) (-> self control unknown-matrix00)) + (set! (-> s5-1 y) 0.0) + (vector-matrix*! (-> self control unknown-vector120) s5-1 (-> self control unknown-matrix01)) + ) + (suspend) + (ja :num! (seek! max (-> self control unknown-surface01 align-speed))) + (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.1)) + (set! (-> *run-attack-mods* turnvv) 0.0) + ) + (if (< 2 gp-2) + (set! f30-0 (* f30-0 (fmin 1.0 (-> self control unknown-float140)))) + ) + (+! gp-2 1) + ) + ) + (if (and (zero? (logand (-> self control status) (cshape-moving-flags onsurf))) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (-> *TARGET-bank* ground-timeout)) + (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (let ((v1-121 (ja-group))) + (or (not (or (= v1-121 (-> self draw art-group data 59)) + (= v1-121 (-> self draw art-group data 60)) + (= v1-121 (-> self draw art-group data 61)) + ) + ) + (< 4096.0 (target-height-above-ground)) + ) + ) + ) + (go target-falling #f) + ) + (go target-stance) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (trans target-running-attack) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x70, fp? 1 ra? 1 ep? 1 + ;stack_vars: 32 bytes at 16 + ;gprs: gp s5 s4 + ;fprs: f30 +;; Warnings: +;; Used lq/sq + +;; s6-0: target gp-0: vector f0-5: float f1-1: float f2-1: float f30-0: float +L196: + daddiu sp, sp, -112 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s4, 48(sp) + sq s5, 64(sp) + sq gp, 80(sp) + swc1 f30, 96(sp) +B0: + lw v1, *display*(s7) ;; [ 0] (set! v1-0 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 1] (set! v1-1 (l.d (+ v1-0 780))) [v1: display ] -> [v1: time-frame ] + ld a0, 164(s6) ;; [ 2] (set! a0-0 (l.d (+ self 164))) [s6: target ] -> [a0: time-frame ] + beq a0, v1, L209 ;; [ 3] (b! (= a0-0 v1-1) L209 (set! v0-0 #f)) + ;; [v1: time-frame a0: time-frame ] -> [v0: '#f ] + or v0, s7, r0 + +B1: + lw t9, smack-surface?(s7) ;; [ 4] (set! t9-0 smack-surface?) [] -> [t9: (function symbol symbol :behavior target) ] + daddiu a0, s7, #t ;; [ 5] (set! a0-1 #t) [] -> [a0: symbol ] + jalr ra, t9 ;; [ 6] (call! a0-1) + ;; [a0: symbol t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + bnel s7, v0, L198 ;; [ 7] (bl! (truthy v0-1) L198 (no-delay!)) [v0: symbol ] -> [] +B2: + or v1, v0, r0 ;; [ 8] (set! v1-2 v0-1) [v0: symbol ] -> [v1: symbol ] + +B3: + lwu v1, 108(s6) ;; [ 9] (set! v1-3 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 1308(v1) ;; [ 10] (set! f0-0 (l.f (+ v1-3 1308))) [v1: control-info ] -> [] + lui v1, L762 ;; [ 11] (set! v1-4 L762) [] -> [v1: ] + ori v1, v1, L762 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 12] (set! f1-0 (l.f v1-4)) [v1: ] -> [] + c.lt.s f0, f1 ;; [ 13] (b! (>=.s f0-0 f1-0) L197 (set! v1-5 #t)) [] -> [v1: symbol ] + bc1f L197 + daddiu v1, s7, 8 + +B4: + or v1, s7, r0 ;; [ 14] (set! v1-5 #f) [] -> [v1: '#f ] +B5: +L197: + beql s7, v1, L198 ;; [ 15] (bl! (not v1-5) L198 (no-delay!)) [v1: symbol ] -> [] +B6: + or v1, v1, r0 ;; [ 16] (set! v1-2 v1-5) [v1: symbol ] -> [v1: symbol ] + +B7: + daddiu v1, s7, 8 ;; [ 17] (set! v1-6 #t) [] -> [v1: symbol ] + lwu a0, 108(s6) ;; [ 18] (set! a0-2 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 268(a0) ;; [ 19] (set! a0-3 (l.d (+ a0-2 268))) [a0: control-info ] -> [a0: cshape-moving-flags ] + andi a0, a0, 32 ;; [ 20] (set! a0-4 (logand a0-3 32)) + ;; [a0: cshape-moving-flags ] -> [a0: cshape-moving-flags ] + movn v1, s7, a0 ;; [ 21] (cmove-#f-nonzero v1-2 a0-4 v1-6) + ;; [v1: symbol a0: cshape-moving-flags ] -> [v1: symbol ] +B8: +L198: + beql s7, v1, L200 ;; [ 22] (bl! (not v1-2) L200 (no-delay!)) [v1: symbol ] -> [] +B9: + or v1, v1, r0 ;; [ 23] (set! v1-7 v1-2) [v1: symbol ] -> [v1: symbol ] + +B10: + lw v1, *display*(s7) ;; [ 24] (set! v1-8 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 25] (set! v1-9 (l.d (+ v1-8 780))) [v1: display ] -> [v1: time-frame ] + lwu a0, 108(s6) ;; [ 26] (set! a0-5 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sw v1, 2184(a0) ;; [ 27] (s.w! (+ a0-5 2184) v1-9) [v1: time-frame a0: control-info ] -> [] + mtc1 f0, r0 ;; [ 28] (set! f0-1 0) [] -> [] + lwu v1, 108(s6) ;; [ 29] (set! v1-10 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 1724(v1) ;; [ 30] (s.f! (+ v1-10 1724) f0-1) [v1: control-info ] -> [] + daddiu gp, sp, 16 ;; [ 31] (set! gp-0 (+ sp-0 16)) [sp: ] -> [gp: vector ] + sq r0, 0(gp) ;; [ 32] (s.q! gp-0 0) [gp: vector ] -> [] + lwu v1, 108(s6) ;; [ 33] (set! v1-11 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 34] (set! v1-12 (l.wu (+ v1-11 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 35] (set! a0-6 (+ v1-12 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 36] (set! v1-13 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 37] (set! v1-14 (+ v1-13 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [ 38] (set! f0-2 (vec3dot a0-6 v1-14)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [ 39] (set! v1-15 (fpr->gpr f0-2)) [] -> [v1: float ] + mtc1 f30, v1 ;; [ 40] (set! f30-0 (gpr->fpr v1-15)) [v1: float ] -> [] + mtc1 f0, r0 ;; [ 41] (set! f0-3 0) [] -> [] + or v1, gp, r0 ;; [ 42] (set! v1-16 gp-0) [gp: vector ] -> [v1: vector ] + lwu a0, 108(s6) ;; [ 43] (set! a0-7 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + daddiu a0, a0, 60 ;; [ 44] (set! a0-8 (+ a0-7 60)) [a0: control-info ] -> [a0: vector ] + or a1, gp, r0 ;; [ 45] (set! a1-0 gp-0) [gp: vector ] -> [a1: vector ] + lwu a2, 108(s6) ;; [ 46] (set! a2-0 (l.wu (+ self 108))) [s6: target ] -> [a2: control-info ] + lwu a2, 432(a2) ;; [ 47] (set! a2-1 (l.wu (+ a2-0 432))) [a2: control-info ] -> [a2: dynamics ] + daddiu a2, a2, 28 ;; [ 48] (set! a2-2 (+ a2-1 28)) [a2: dynamics ] -> [a2: vector ] + mov.s f0, f30 ;; [ 49] (set! f0-4 f30-0) [] -> [] + lqc2 vf1, 0(a2) ;; [ 50] (set! a1-1 (vector-float*!2 a1-0 a2-2 f0-4)) + ;; [a1: vector a2: vector ] -> [a1: vector ] + mfc1 a2, f0 + qmtc2.i vf2, a2 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a1) + lqc2 vf4, 0(a0) ;; [ 51] (set! v1-17 (vector-!2 v1-16 a0-8 a1-1)) + ;; [v1: vector a0: vector a1: vector ] -> [v1: vector ] + lqc2 vf5, 0(a1) + vmove.w vf6, vf0 + vsub.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) + lw t9, vector-length(s7) ;; [ 52] (set! t9-1 vector-length) [] -> [t9: (function vector float) ] + or a0, gp, r0 ;; [ 53] (set! a0-9 gp-0) [gp: vector ] -> [a0: vector ] + jalr ra, t9 ;; [ 54] (call! a0-9) [a0: vector t9: (function vector float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 55] (set! f0-5 (gpr->fpr v0-2)) [v0: float ] -> [] + mov.s f1, f0 ;; [ 56] (set! f1-1 f0-5) [] -> [] + mtc1 f2, r0 ;; [ 57] (set! f2-0 0) [] -> [] + min.s f2, f2, f30 ;; [ 58] (set! f2-1 (min.s f2-0 f30-0)) [] -> [] + lwu v1, 108(s6) ;; [ 59] (set! v1-18 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 60] (set! v1-19 (+ v1-18 60)) [v1: control-info ] -> [v1: vector ] + lwu a0, 108(s6) ;; [ 61] (set! a0-10 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + daddiu a0, a0, 60 ;; [ 62] (set! a0-11 (+ a0-10 60)) [a0: control-info ] -> [a0: vector ] + lwu a1, 108(s6) ;; [ 63] (set! a1-2 (l.wu (+ self 108))) [s6: target ] -> [a1: control-info ] + lwu a1, 432(a1) ;; [ 64] (set! a1-3 (l.wu (+ a1-2 432))) [a1: control-info ] -> [a1: dynamics ] + daddiu a1, a1, 28 ;; [ 65] (set! a1-4 (+ a1-3 28)) [a1: dynamics ] -> [a1: vector ] + lqc2 vf1, 0(a1) ;; [ 66] (set! a0-12 (vector-float*!2 a0-11 a1-4 f2-1)) + ;; [a0: vector a1: vector ] -> [a0: vector ] + mfc1 a1, f2 + qmtc2.i vf2, a1 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a0) + or a1, gp, r0 ;; [ 67] (set! a1-5 gp-0) [gp: vector ] -> [a1: vector ] + div.s f0, f0, f1 ;; [ 68] (set! f0-6 (/.s f0-5 f1-1)) [] -> [] + lqc2 vf1, 0(gp) ;; [ 69] (set! a1-6 (vector-float*!2 a1-5 gp-0 f0-6)) + ;; [a1: vector gp: vector ] -> [a1: vector ] + mfc1 a2, f0 + qmtc2.i vf2, a2 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a1) + vmove.w vf6, vf0 ;; [ 70] (set! v1-20 (vector+!2 v1-19 a0-12 a1-6)) + ;; [v1: vector a0: vector a1: vector ] -> [v1: vector ] + lqc2 vf4, 0(a0) + lqc2 vf5, 0(a1) + vadd.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) + daddiu v1, s7, #t ;; [ 71] (set! v1-21 #t) [] -> [v1: symbol ] + beql s7, v1, L200 ;; [ 72] (bl! (not v1-21) L200 (no-delay!)) [v1: symbol ] -> [] +B11: + or v1, v1, r0 ;; [ 73] (set! v1-7 v1-21) [v1: symbol ] -> [v1: symbol ] + +B12: + lwu v1, 108(s6) ;; [ 74] (set! v1-22 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 2180(v1) ;; [ 75] (set! v1-23 (l.wu (+ v1-22 2180))) [v1: control-info ] -> [v1: uint ] + beql v1, r0, L199 ;; [ 76] (bl! (zero? v1-23) L199 (no-delay!)) [v1: uint ] -> [] +B13: + daddiu v1, s7, 8 ;; [ 77] (set! v1-24 #t) [] -> [v1: symbol ] + +B14: + lw v1, *display*(s7) ;; [ 78] (set! v1-25 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 79] (set! v1-26 (l.d (+ v1-25 780))) [v1: display ] -> [v1: time-frame ] + lwu a0, 108(s6) ;; [ 80] (set! a0-13 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 2180(a0) ;; [ 81] (set! a0-14 (l.wu (+ a0-13 2180))) [a0: control-info ] -> [a0: uint ] + dsubu v1, v1, a0 ;; [ 82] (set! v1-27 (- v1-26 a0-14)) [v1: time-frame a0: uint ] -> [v1: time-frame ] + sltiu a0, v1, 12 ;; [ 83] (set! v1-24 (>=.ui v1-27 12)) [v1: time-frame ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 +B15: +L199: + beql s7, v1, L200 ;; [ 84] (bl! (not v1-24) L200 (no-delay!)) [v1: symbol ] -> [] +B16: + or v1, v1, r0 ;; [ 85] (set! v1-7 v1-24) [v1: symbol ] -> [v1: symbol ] + +B17: + lwu v1, 108(s6) ;; [ 86] (set! v1-28 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 2188(v1) ;; [ 87] (set! v1-29 (l.wu (+ v1-28 2188))) [v1: control-info ] -> [v1: uint ] + daddiu a0, v1, -1 ;; [ 88] (set! a0-15 (+ v1-29 -1)) [v1: uint ] -> [a0: ] + daddiu v1, s7, 8 ;; [ 89] (set! v1-7 (nonzero? a0-15)) [a0: ] -> [v1: symbol ] + movz v1, s7, a0 +B18: +L200: + beq s7, v1, L201 ;; [ 90] (b! (not v1-7) L201 (set! v1-30 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B19: + lw t9, target-shoved(s7) ;; [ 91] (set! t9-2 target-shoved) + ;; [] -> [t9: (function meters meters process (state object object target) object :behavior target) ] + lw v1, *TARGET-bank*(s7) ;; [ 92] (set! v1-31 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 256(v1) ;; [ 93] (set! f0-7 (l.f (+ v1-31 256))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [ 94] (set! a0-16 (fpr->gpr f0-7)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [ 95] (set! v1-32 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 260(v1) ;; [ 96] (set! f0-8 (l.f (+ v1-32 260))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [ 97] (set! a1-7 (fpr->gpr f0-8)) [] -> [a1: meters ] + or a2, s7, r0 ;; [ 98] (set! a2-3 #f) [] -> [a2: '#f ] + lw a3, target-hit(s7) ;; [ 99] (set! a3-0 target-hit) [] -> [a3: (state symbol attack-info target) ] + jalr ra, t9 ;; [100] (call! a0-16 a1-7 a2-3 a3-0) + ;; [a0: meters a1: meters a2: '#f a3: (state symbol attack-info target) t9: (function meters meters process (state object object target) object :behavior target) ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [101] (set! v1-33 v0-3) [v0: object ] -> [v1: object ] +B20: +L201: + lwu v1, 108(s6) ;; [102] (set! v1-34 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [103] (set! v1-35 (l.wu (+ v1-34 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [104] (set! v1-36 (l.w (+ v1-35 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [105] (set! v1-37 (sll v1-36 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [106] (set! a0-17 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [107] (set! v1-38 (+ v1-37 a0-17)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [108] (set! v1-39 (l.wu (+ v1-38 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [109] (set! v1-40 (l.wu (+ v1-39 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 16384 ;; [110] (set! v1-41 (logand v1-40 #x4000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L204 ;; [111] (bl! (zero? v1-41) L204 (no-delay!)) [v1: pad-buttons ] -> [] +B21: + or v1, s7, r0 ;; [112] (set! v1-42 #f) [] -> [v1: '#f ] + +B22: + lui v1, L726 ;; [113] (set! v1-43 L726) [] -> [v1: ] + ori v1, v1, L726 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [114] (set! f0-9 (l.f v1-43)) [v1: ] -> [] + lwu v1, 108(s6) ;; [115] (set! v1-44 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f1, 528(v1) ;; [116] (set! f1-2 (l.f (+ v1-44 528))) [v1: control-info ] -> [] + c.lt.s f0, f1 ;; [117] (b! (<.s f0-9 f1-2) L202 (set! v1-45 #t)) [] -> [v1: symbol ] + bc1t L202 + daddiu v1, s7, 8 + +B23: + or v1, s7, r0 ;; [118] (set! v1-45 #f) [] -> [v1: '#f ] +B24: +L202: + beql s7, v1, L204 ;; [119] (bl! (not v1-45) L204 (no-delay!)) [v1: symbol ] -> [] +B25: + or v1, v1, r0 ;; [120] (set! v1-42 v1-45) [v1: symbol ] -> [v1: symbol ] + +B26: + lw v1, *display*(s7) ;; [121] (set! v1-46 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [122] (set! v1-47 (l.d (+ v1-46 780))) [v1: display ] -> [v1: time-frame ] + ld a0, 164(s6) ;; [123] (set! a0-18 (l.d (+ self 164))) [s6: target ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [124] (set! v1-48 (- v1-47 a0-18)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + slti v1, v1, 30 ;; [125] (set! a0-19 (>=.si v1-48 30)) [v1: time-frame ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + bnel s7, a0, L203 ;; [126] (bl! (truthy a0-19) L203 (no-delay!)) [a0: symbol ] -> [] +B27: + or v1, a0, r0 ;; [127] (set! v1-49 a0-19) [a0: symbol ] -> [v1: symbol ] + +B28: + daddiu v1, s7, 8 ;; [128] (set! v1-50 #t) [] -> [v1: symbol ] + lwu a0, 108(s6) ;; [129] (set! a0-20 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [130] (set! a0-21 (l.wu (+ a0-20 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [131] (set! a0-22 (l.w (+ a0-21 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [132] (set! a0-23 (sll a0-22 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [133] (set! a1-8 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [134] (set! a0-24 (+ a0-23 a1-8)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [135] (set! a0-25 (l.wu (+ a0-24 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 40(a0) ;; [136] (set! a0-26 (l.wu (+ a0-25 40))) [a0: cpad-info ] -> [a0: pad-buttons ] + andi a0, a0, 32768 ;; [137] (set! a0-27 (logand a0-26 #x8000)) [a0: pad-buttons ] -> [a0: pad-buttons ] + movn v1, s7, a0 ;; [138] (cmove-#f-nonzero v1-49 a0-27 v1-50) + ;; [v1: symbol a0: pad-buttons ] -> [v1: symbol ] +B29: +L203: + beql s7, v1, L204 ;; [139] (bl! (not v1-49) L204 (no-delay!)) [v1: symbol ] -> [] +B30: + or v1, v1, r0 ;; [140] (set! v1-42 v1-49) [v1: symbol ] -> [v1: symbol ] + +B31: + lwu v1, 160(s6) ;; [141] (set! v1-51 (l.wu (+ self 160))) [s6: target ] -> [v1: state-flags ] + andi v1, v1, 6144 ;; [142] (set! v1-52 (logand v1-51 6144)) [v1: state-flags ] -> [v1: state-flags ] + bnel v1, r0, L204 ;; [143] (bl! (nonzero? v1-52) L204 (no-delay!)) [v1: state-flags ] -> [] +B32: + or v1, s7, r0 ;; [144] (set! v1-42 #f) [] -> [v1: '#f ] + +B33: + daddiu v1, s7, 8 ;; [145] (set! v1-53 #t) [] -> [v1: symbol ] + lwu a0, 108(s6) ;; [146] (set! a0-28 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 660(a0) ;; [147] (set! a0-29 (l.wu (+ a0-28 660))) [a0: control-info ] -> [a0: surface ] + lwu a0, 144(a0) ;; [148] (set! a0-30 (l.wu (+ a0-29 144))) [a0: surface ] -> [a0: surface-flags ] + andi a0, a0, 128 ;; [149] (set! a0-31 (logand a0-30 128)) [a0: surface-flags ] -> [a0: surface-flags ] + movn v1, s7, a0 ;; [150] (cmove-#f-nonzero v1-42 a0-31 v1-53) + ;; [v1: symbol a0: surface-flags ] -> [v1: symbol ] +B34: +L204: + beq s7, v1, L205 ;; [151] (b! (not v1-42) L205 (set! v1-54 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B35: + lw t9, enter-state(s7) ;; [152] (set! t9-3 enter-state) [] -> [t9: ] + lw v1, *TARGET-bank*(s7) ;; [153] (set! v1-55 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 44(v1) ;; [154] (set! f0-10 (l.f (+ v1-55 44))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [155] (set! a0-32 (fpr->gpr f0-10)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [156] (set! v1-56 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 48(v1) ;; [157] (set! f0-11 (l.f (+ v1-56 48))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [158] (set! a1-9 (fpr->gpr f0-11)) [] -> [a1: meters ] + lw v1, target-attack-uppercut(s7);; [159] (set! v1-57 target-attack-uppercut) [] -> [v1: (state float float target) ] + sw v1, 72(s6) ;; [160] (s.w! (+ self 72) v1-57) [v1: (state float float target) s6: target ] -> [] + jalr ra, t9 ;; [161] (call! a0-32 a1-9) + ;; [a0: meters a1: meters t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [162] (set! v1-58 v0-4) [v0: object ] -> [v1: object ] +B36: +L205: + lwu v1, 152(s6) ;; [163] (set! v1-59 (l.wu (+ self 152))) [s6: target ] -> [v1: water-control ] + lwu v1, 0(v1) ;; [164] (set! v1-60 (l.wu v1-59)) [v1: water-control ] -> [v1: water-flags ] + andi v1, v1, 512 ;; [165] (set! v1-61 (logand v1-60 512)) [v1: water-flags ] -> [v1: water-flags ] + beql v1, r0, L206 ;; [166] (bl! (zero? v1-61) L206 (no-delay!)) [v1: water-flags ] -> [] +B37: + or v1, s7, r0 ;; [167] (set! v1-62 #f) [] -> [v1: '#f ] + +B38: + daddiu v1, s7, 8 ;; [168] (set! v1-63 #t) [] -> [v1: symbol ] + lw a0, *display*(s7) ;; [169] (set! a0-33 *display*) [] -> [a0: display ] + ld a0, 780(a0) ;; [170] (set! a0-34 (l.d (+ a0-33 780))) [a0: display ] -> [a0: time-frame ] + ld a1, 164(s6) ;; [171] (set! a1-10 (l.d (+ self 164))) [s6: target ] -> [a1: time-frame ] + dsubu a0, a0, a1 ;; [172] (set! a0-35 (- a0-34 a1-10)) [a0: time-frame a1: time-frame ] -> [a0: time-frame ] + addiu a1, r0, 21 ;; [173] (set! a1-11 21) [] -> [a1: ] + div a0, a1 ;; [174] (set! a0-36 (mod.si a0-35 a1-11)) [a0: time-frame a1: ] -> [a0: int ] + mfhi a0 + movn v1, s7, a0 ;; [175] (cmove-#f-nonzero v1-62 a0-36 v1-63) [v1: symbol a0: int ] -> [v1: symbol ] +B39: +L206: + beq s7, v1, L207 ;; [176] (b! (not v1-62) L207 (set! v1-64 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B40: + lwu gp, 152(s6) ;; [177] (set! gp-1 (l.wu (+ self 152))) [s6: target ] -> [gp: water-control ] + lwu v1, -4(gp) ;; [178] (set! v1-65 (l.wu (+ gp-1 -4))) + ;; [gp: water-control ] -> [v1: ] + lwu s5, 68(v1) ;; [179] (set! s5-0 (l.wu (+ v1-65 68))) + ;; [v1: ] -> [s5: ] + lui v1, L755 ;; [180] (set! v1-66 L755) [] -> [v1: ] + ori v1, v1, L755 + addu v1, fp, v1 + lw s4, 0(v1) ;; [181] (set! s4-0 (l.w v1-66)) [v1: ] -> [s4: int ] + lw t9, vector<-cspace!(s7);; [182] (set! t9-4 vector<-cspace!) [] -> [t9: (function vector cspace vector) ] + daddiu a0, sp, 32 ;; [183] (set! a0-37 (+ sp-0 32)) [sp: ] -> [a0: vector ] + lwu v1, 112(s6) ;; [184] (set! v1-67 (l.wu (+ self 112))) [s6: target ] -> [v1: cspace-array ] + daddiu a1, v1, 1196 ;; [185] (set! a1-12 (+ v1-67 1196)) [v1: cspace-array ] -> [a1: cspace ] + jalr ra, t9 ;; [186] (call! a0-37 a1-12) + ;; [a0: vector a1: cspace t9: (function vector cspace vector) ] -> [v0: vector ] + sll v0, ra, 0 + + or a2, v0, r0 ;; [187] (set! a2-4 v0-5) [v0: vector ] -> [a2: vector ] + addiu a3, r0, 0 ;; [188] (set! a3-1 0) [] -> [a3: ] + lwu v1, 108(s6) ;; [189] (set! v1-68 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu t0, v1, 60 ;; [190] (set! t0-0 (+ v1-68 60)) [v1: control-info ] -> [t0: vector ] + or t9, s5, r0 ;; [191] (set! t9-5 s5-0) + ;; [s5: ] -> [t9: ] + or a0, gp, r0 ;; [192] (set! a0-38 gp-1) [gp: water-control ] -> [a0: water-control ] + or a1, s4, r0 ;; [193] (set! a1-13 s4-0) [s4: int ] -> [a1: int ] + jalr ra, t9 ;; [194] (call! a0-38 a1-13 a2-4 a3-1 t0-0) + ;; [a0: water-control a1: int a2: vector a3: t0: vector t9: ] -> [v0: none ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [195] (set! v1-69 v0-6) [v0: none ] -> [v1: none ] +B41: +L207: + lwu v1, 140(s6) ;; [196] (set! v1-70 (l.wu (+ self 140))) [s6: target ] -> [v1: fact-info-target ] + lw v1, 36(v1) ;; [197] (set! v1-71 (l.w (+ v1-70 36))) [v1: fact-info-target ] -> [v1: pickup-type ] + daddiu v1, v1, -2 ;; [198] (set! v1-72 (+ v1-71 -2)) [v1: pickup-type ] -> [v1: ] + daddiu a0, s7, 8 ;; [199] (set! a0-39 (zero? v1-72)) [v1: ] -> [a0: symbol ] + movn a0, s7, v1 + beql s7, a0, L208 ;; [200] (bl! (not a0-39) L208 (no-delay!)) [a0: symbol ] -> [] +B42: + or v1, a0, r0 ;; [201] (set! v1-73 a0-39) [a0: symbol ] -> [v1: symbol ] + +B43: + lwu v1, 140(s6) ;; [202] (set! v1-74 (l.wu (+ self 140))) [s6: target ] -> [v1: fact-info-target ] + lwc1 f0, 40(v1) ;; [203] (set! f0-12 (l.f (+ v1-74 40))) [v1: fact-info-target ] -> [] + lui v1, L786 ;; [204] (set! v1-75 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [205] (set! f1-3 (l.f v1-75)) [v1: ] -> [] + c.lt.s f0, f1 ;; [206] (b! (>=.s f0-12 f1-3) L208 (set! v1-73 #t)) [] -> [v1: symbol ] + bc1f L208 + daddiu v1, s7, 8 + +B44: + or v1, s7, r0 ;; [207] (set! v1-73 #f) [] -> [v1: '#f ] +B45: +L208: + beq s7, v1, L209 ;; [208] (b! (not v1-73) L209 (set! v0-7 #f)) [v1: symbol ] -> [v0: '#f ] + or v0, s7, r0 + +B46: + lwu v1, 120(s6) ;; [209] (set! v1-76 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu gp, 36(v1) ;; [210] (set! gp-2 (l.wu (+ v1-76 36))) [v1: joint-control ] -> [gp: effect-control ] + lwu v1, -4(gp) ;; [211] (set! v1-77 (l.wu (+ gp-2 -4))) + ;; [gp: effect-control ] -> [v1: ] + lwu s5, 56(v1) ;; [212] (set! s5-1 (l.wu (+ v1-77 56))) + ;; [v1: ] -> [s5: ] + daddiu s4, s7, group-red-eco-spinkick;; [213] (set! s4-1 'group-red-eco-spinkick) [] -> [s4: symbol ] + lw t9, ja-frame-num(s7) ;; [214] (set! t9-6 ja-frame-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [215] (set! a0-40 0) [] -> [a0: ] + jalr ra, t9 ;; [216] (call! a0-40) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + or a2, v0, r0 ;; [217] (set! a2-5 v0-8) [v0: float ] -> [a2: float ] + addiu a3, r0, 23 ;; [218] (set! a3-2 23) [] -> [a3: ] + or t9, s5, r0 ;; [219] (set! t9-7 s5-1) + ;; [s5: ] -> [t9: ] + or a0, gp, r0 ;; [220] (set! a0-41 gp-2) [gp: effect-control ] -> [a0: effect-control ] + or a1, s4, r0 ;; [221] (set! a1-14 s4-1) [s4: symbol ] -> [a1: symbol ] + jalr ra, t9 ;; [222] (call! a0-41 a1-14 a2-5 a3-2) + ;; [a0: effect-control a1: symbol a2: float a3: t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [223] (set! v1-78 v0-9) [v0: object ] -> [v1: object ] + lw t9, cpad-set-buzz!(s7) ;; [224] (set! t9-8 cpad-set-buzz!) + ;; [] -> [t9: (function cpad-info int int time-frame none) ] + lw v1, *cpad-list*(s7) ;; [225] (set! v1-79 *cpad-list*) [] -> [v1: cpad-list ] + lwu a0, 4(v1) ;; [226] (set! a0-42 (l.wu (+ v1-79 4))) [v1: cpad-list ] -> [a0: cpad-info ] + addiu a1, r0, 1 ;; [227] (set! a1-15 1) [] -> [a1: ] + addiu a2, r0, 153 ;; [228] (set! a2-6 153) [] -> [a2: ] + addiu a3, r0, 30 ;; [229] (set! a3-3 30) [] -> [a3: ] + jalr ra, t9 ;; [230] (call! a0-42 a1-15 a2-6 a3-3) + ;; [a0: cpad-info a1: a2: a3: t9: (function cpad-info int int time-frame none) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, level-hint-spawn(s7);; [231] (set! t9-9 level-hint-spawn) + ;; [] -> [t9: (function game-text-id string entity process-tree game-task none) ] + addiu a0, r0, 678 ;; [232] (set! a0-43 678) [] -> [a0: ] + lui v1, L700 ;; [233] (set! a1-16 L700) [] -> [a1: ] "sksp0072" + ori v1, v1, L700 ;; "sksp0072" + daddu a1, v1, fp + or a2, s7, r0 ;; [234] (set! a2-7 #f) [] -> [a2: '#f ] + lw a3, *entity-pool*(s7) ;; [235] (set! a3-4 *entity-pool*) [] -> [a3: process-tree ] + addiu t0, r0, 0 ;; [236] (set! t0-1 0) [] -> [t0: ] + jalr ra, t9 ;; [237] (call! a0-43 a1-16 a2-7 a3-4 t0-1) + ;; [a0: a1: a2: '#f a3: process-tree t0: t9: (function game-text-id string entity process-tree game-task none) ] -> [v0: none ] + sll v0, ra, 0 + +B47: +L209: + ld ra, 0(sp) + ld fp, 8(sp) + lwc1 f30, 96(sp) + lq gp, 80(sp) + lq s5, 64(sp) + lq s4, 48(sp) + jr ra + daddiu sp, sp, 112 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (trans target-running-attack) + () + (when (!= (-> self state-time) (-> *display* base-frame-counter)) + (if (and (or (smack-surface? #t) + (and (>= (-> self control unknown-float63) 0.7) + (zero? (logand (-> self control status) (cshape-moving-flags t-act))) + ) + ) + (begin + (set! (-> self control unknown-int21) (the-as int (-> *display* base-frame-counter))) + (set! (-> self control unknown-float81) 0.0) + (let ((gp-0 (new-stack-vector0)) + (f30-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + ) + 0.0 + (vector-! gp-0 (-> self control transv) (vector-float*! gp-0 (-> self control dynam gravity-normal) f30-0)) + (let* ((f0-5 (vector-length gp-0)) + (f1-1 f0-5) + (f2-1 (fmin 0.0 f30-0)) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-1) + (vector-float*! gp-0 gp-0 (/ f0-5 f1-1)) + ) + ) + ) + #t + ) + (or (zero? (-> self control unknown-uint20)) + (>= (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> self control unknown-uint20)))) + (the-as uint 12) + ) + ) + (!= (-> self control unknown-uint31) 1) + ) + (target-shoved + (-> *TARGET-bank* smack-surface-dist) + (-> *TARGET-bank* smack-surface-height) + (the-as process #f) + target-hit + ) + ) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) x) + (and (< 4096.0 (-> self control unknown-float01)) + (or (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.1)) + (zero? (logand (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) + (pad-buttons square) + ) + ) + ) + (zero? (logand (-> self state-flags) (state-flags prevent-jump prevent-attack))) + (zero? (logand (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump))) + ) + ) + (go + target-attack-uppercut + (-> *TARGET-bank* attack-jump-height-min) + (-> *TARGET-bank* attack-jump-height-max) + ) + ) + (if (and (logtest? (-> self water flags) (water-flags wt09)) + (zero? (mod (- (-> *display* base-frame-counter) (-> self state-time)) 21)) + ) + (dummy-13 + (-> self water) + (the-as float 0.6) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 37)) + 0 + (-> self control transv) + ) + ) + (when (and (= (-> self fact-info-target eco-type) (pickup-type eco-red)) + (>= (-> self fact-info-target eco-level) 1.0) + ) + (dummy-10 (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 23) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) + (level-hint-spawn + (game-text-id misty-eco-red-first-use) + "sksp0072" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (exit target-running-attack) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; s6-0: target +L210: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lwu v1, 108(s6) ;; [ 0] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 652(v1) ;; [ 1] (set! v1-1 (l.wu (+ v1-0 652))) [v1: control-info ] -> [v1: dynamics ] + lwc1 f0, 4(v1) ;; [ 2] (set! f0-0 (l.f (+ v1-1 4))) [v1: dynamics ] -> [] + lwu v1, 108(s6) ;; [ 3] (set! v1-2 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 4] (set! v1-3 (l.wu (+ v1-2 432))) [v1: control-info ] -> [v1: dynamics ] + swc1 f0, 4(v1) ;; [ 5] (s.f! (+ v1-3 4) f0-0) [v1: dynamics ] -> [] + lwu v1, 108(s6) ;; [ 6] (set! v1-4 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 652(v1) ;; [ 7] (set! v1-5 (l.wu (+ v1-4 652))) [v1: control-info ] -> [v1: dynamics ] + lwc1 f0, 8(v1) ;; [ 8] (set! f0-1 (l.f (+ v1-5 8))) [v1: dynamics ] -> [] + lwu v1, 108(s6) ;; [ 9] (set! v1-6 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 10] (set! v1-7 (l.wu (+ v1-6 432))) [v1: control-info ] -> [v1: dynamics ] + swc1 f0, 8(v1) ;; [ 11] (s.f! (+ v1-7 8) f0-1) [v1: dynamics ] -> [] + mtc1 f0, r0 ;; [ 12] (set! f0-2 0) [] -> [] + lw v1, *run-attack-mods*(s7);; [ 13] (set! v1-8 *run-attack-mods*) [] -> [v1: surface ] + swc1 f0, 4(v1) ;; [ 14] (s.f! (+ v1-8 4) f0-2) [v1: surface ] -> [] + mtc1 f0, r0 ;; [ 15] (set! f0-3 0) [] -> [] + lw v1, *run-attack-mods*(s7);; [ 16] (set! v1-9 *run-attack-mods*) [] -> [v1: surface ] + swc1 f0, 8(v1) ;; [ 17] (s.f! (+ v1-9 8) f0-3) [v1: surface ] -> [] + lw v1, *display*(s7) ;; [ 18] (set! v1-10 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 19] (set! v1-11 (l.d (+ v1-10 780))) [v1: display ] -> [v1: time-frame ] + lwu a0, 108(s6) ;; [ 20] (set! a0-0 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sd v1, 1668(a0) ;; [ 21] (s.d! (+ a0-0 1668) v1-11) [v1: time-frame a0: control-info ] -> [] + lw t9, target-exit(s7) ;; [ 22] (set! t9-0 target-exit) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 23] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (exit target-running-attack) + () + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (set! (-> *run-attack-mods* turnv) 0.0) + (set! (-> *run-attack-mods* turnvv) 0.0) + (set! (-> self control unknown-dword31) (-> *display* base-frame-counter)) + (target-exit) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-running-attack) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 1 ra? 1 ep? 1 +;; Warnings: +;; INFO: Return type mismatch float vs none. + +;; s6-0: target +L211: + daddiu sp, sp, -16 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 +B0: + lwu v1, 140(s6) ;; [ 0] (set! v1-0 (l.wu (+ self 140))) [s6: target ] -> [v1: fact-info-target ] + lw v1, 36(v1) ;; [ 1] (set! v1-1 (l.w (+ v1-0 36))) [v1: fact-info-target ] -> [v1: pickup-type ] + daddiu v1, v1, -1 ;; [ 2] (set! v1-2 (+ v1-1 -1)) [v1: pickup-type ] -> [v1: ] + daddiu a0, s7, 8 ;; [ 3] (set! a0-0 (zero? v1-2)) [v1: ] -> [a0: symbol ] + movn a0, s7, v1 + beql s7, a0, L212 ;; [ 4] (bl! (not a0-0) L212 (no-delay!)) [a0: symbol ] -> [] +B1: + or v1, a0, r0 ;; [ 5] (set! v1-3 a0-0) [a0: symbol ] -> [v1: symbol ] + +B2: + lwu v1, 140(s6) ;; [ 6] (set! v1-4 (l.wu (+ self 140))) [s6: target ] -> [v1: fact-info-target ] + lwc1 f0, 40(v1) ;; [ 7] (set! f0-0 (l.f (+ v1-4 40))) [v1: fact-info-target ] -> [] + lui v1, L786 ;; [ 8] (set! v1-5 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 9] (set! f1-0 (l.f v1-5)) [v1: ] -> [] + c.lt.s f0, f1 ;; [ 10] (b! (>=.s f0-0 f1-0) L212 (set! v1-3 #t)) [] -> [v1: symbol ] + bc1f L212 + daddiu v1, s7, 8 + +B3: + or v1, s7, r0 ;; [ 11] (set! v1-3 #f) [] -> [v1: '#f ] +B4: +L212: + bnel s7, v1, L213 ;; [ 12] (bl! (truthy v1-3) L213 (no-delay!)) [v1: symbol ] -> [] +B5: + or v1, v1, r0 ;; [ 13] (set! v1-6 v1-3) [v1: symbol ] -> [v1: symbol ] + +B6: + lw v1, *display*(s7) ;; [ 14] (set! v1-7 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 15] (set! v1-8 (l.d (+ v1-7 780))) [v1: display ] -> [v1: time-frame ] + lwu a0, 108(s6) ;; [ 16] (set! a0-1 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 18908(a0) ;; [ 17] (set! a0-2 (l.d (+ a0-1 #x49dc))) [a0: control-info ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [ 18] (set! v1-9 (- v1-8 a0-2)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + slti a0, v1, 450 ;; [ 19] (set! v1-6 (<.si v1-9 450)) [v1: time-frame ] -> [v1: symbol ] + daddiu v1, s7, 8 + movz v1, s7, a0 +B7: +L213: + beq s7, v1, L214 ;; [ 20] (b! (not v1-6) L214 (set! v1-10 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B8: + lw t9, enter-state(s7) ;; [ 21] (set! t9-0 enter-state) [] -> [t9: ] + lw v1, target-yellow-blast(s7);; [ 22] (set! v1-11 target-yellow-blast) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 23] (s.w! (+ self 72) v1-11) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 24] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 25] (set! v1-12 v0-0) [v0: object ] -> [v1: object ] +B9: +L214: + lw v1, *display*(s7) ;; [ 26] (set! v1-13 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 27] (set! v1-14 (l.d (+ v1-13 780))) [v1: display ] -> [v1: time-frame ] + sd v1, 164(s6) ;; [ 28] (s.d! (+ self 164) v1-14) [v1: time-frame s6: target ] -> [] + lwu v1, 108(s6) ;; [ 29] (set! v1-15 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw r0, 2180(v1) ;; [ 30] (s.w! (+ v1-15 2180) 0) [v1: control-info ] -> [] + lwu v1, 108(s6) ;; [ 31] (set! v1-16 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw r0, 2184(v1) ;; [ 32] (s.w! (+ v1-16 2184) 0) [v1: control-info ] -> [] + lwu v1, 108(s6) ;; [ 33] (set! v1-17 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw r0, 2188(v1) ;; [ 34] (s.w! (+ v1-17 2188) 0) [v1: control-info ] -> [] + lw v1, *run-attack-mods*(s7);; [ 35] (set! v1-18 *run-attack-mods*) [] -> [v1: surface ] + lwu a0, 108(s6) ;; [ 36] (set! a0-3 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sw v1, 656(a0) ;; [ 37] (s.w! (+ a0-3 656) v1-18) [v1: surface a0: control-info ] -> [] + lui v1, L725 ;; [ 38] (set! v1-19 L725) [] -> [v1: ] + ori v1, v1, L725 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 39] (set! f0-1 (l.f v1-19)) [v1: ] -> [] + lw v1, *run-attack-mods*(s7);; [ 40] (set! v1-20 *run-attack-mods*) [] -> [v1: surface ] + swc1 f0, 4(v1) ;; [ 41] (s.f! (+ v1-20 4) f0-1) [v1: surface ] -> [] + lui v1, L725 ;; [ 42] (set! v1-21 L725) [] -> [v1: ] + ori v1, v1, L725 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 43] (set! f0-2 (l.f v1-21)) [v1: ] -> [] + lw v1, *run-attack-mods*(s7);; [ 44] (set! v1-22 *run-attack-mods*) [] -> [v1: surface ] + swc1 f0, 8(v1) ;; [ 45] (s.f! (+ v1-22 8) f0-2) [v1: surface ] -> [] + lw t9, target-start-attack(s7);; [ 46] (set! t9-1 target-start-attack) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 47] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, target-danger-set!(s7);; [ 48] (set! t9-2 target-danger-set!) + ;; [] -> [t9: (function symbol symbol float :behavior target) ] + daddiu a0, s7, punch ;; [ 49] (set! a0-4 'punch) [] -> [a0: symbol ] + or a1, s7, r0 ;; [ 50] (set! a1-0 #f) [] -> [a1: '#f ] + jalr ra, t9 ;; [ 51] (call! a0-4 a1-0) + ;; [a0: symbol a1: '#f t9: (function symbol symbol float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + + lwu v1, 108(s6) ;; [ 52] (set! v1-23 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 1304(v1) ;; [ 53] (set! f0-3 (l.f (+ v1-23 1304))) [v1: control-info ] -> [] + abs.s f0, f0 ;; [ 54] (set! f0-4 (abs.s f0-3)) [] -> [] + lui v1, L751 ;; [ 55] (set! v1-24 L751) [] -> [v1: ] + ori v1, v1, L751 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 56] (set! f1-1 (l.f v1-24)) [v1: ] -> [] + c.lt.s f0, f1 ;; [ 57] (b! (<.s f0-4 f1-1) L215 (set! v1-25 #t)) [] -> [v1: symbol ] + bc1t L215 + daddiu v1, s7, 8 + +B10: + or v1, s7, r0 ;; [ 58] (set! v1-25 #f) [] -> [v1: '#f ] +B11: +L215: + bnel s7, v1, L216 ;; [ 59] (bl! (truthy v1-25) L216 (no-delay!)) [v1: symbol ] -> [] +B12: + or v1, v1, r0 ;; [ 60] (set! v1-26 v1-25) [v1: symbol ] -> [v1: symbol ] + +B13: + lui v1, L751 ;; [ 61] (set! v1-27 L751) [] -> [v1: ] + ori v1, v1, L751 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 62] (set! f0-5 (l.f v1-27)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 63] (set! v1-28 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f1, 1300(v1) ;; [ 64] (set! f1-2 (l.f (+ v1-28 1300))) [v1: control-info ] -> [] + abs.s f1, f1 ;; [ 65] (set! f1-3 (abs.s f1-2)) [] -> [] + c.lt.s f0, f1 ;; [ 66] (b! (<.s f0-5 f1-3) L216 (set! v1-26 #t)) [] -> [v1: symbol ] + bc1t L216 + daddiu v1, s7, 8 + +B14: + or v1, s7, r0 ;; [ 67] (set! v1-26 #f) [] -> [v1: '#f ] +B15: +L216: + beq s7, v1, L217 ;; [ 68] (b! (not v1-26) L217 (set! v0-3 #f)) [v1: symbol ] -> [v0: '#f ] + or v0, s7, r0 + +B16: + lui v1, L786 ;; [ 69] (set! v1-29 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 70] (set! f0-6 (l.f v1-29)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 71] (set! v1-30 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 1724(v1) ;; [ 72] (s.f! (+ v1-30 1724) f0-6) [v1: control-info ] -> [] + mfc1 v0, f0 ;; [ 73] (set! v0-4 (fpr->gpr f0-6)) [] -> [v0: float ] +B17: +L217: + ld ra, 0(sp) + ld fp, 8(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-running-attack) + () + (if (or (and (= (-> self fact-info-target eco-type) (pickup-type eco-yellow)) + (>= (-> self fact-info-target eco-level) 1.0) + ) + (< (- (-> *display* base-frame-counter) (-> self control unknown-dword82)) (seconds 1.5)) + ) + (go target-yellow-blast) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self control unknown-uint20) (the-as uint 0)) + (set! (-> self control unknown-int21) 0) + (set! (-> self control unknown-uint31) (the-as uint 0)) + (set! (-> self control unknown-surface00) *run-attack-mods*) + (set! (-> *run-attack-mods* turnv) 655360.0) + (set! (-> *run-attack-mods* turnvv) 655360.0) + (target-start-attack) + (target-danger-set! 'punch #f) + (if (or (< (fabs (-> self control unknown-float62)) 0.3) (< 0.3 (fabs (-> self control unknown-float61)))) + (set! (-> self control unknown-float81) 1.0) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (event target-running-attack) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x50, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 + ;gprs: gp s5 s4 s3 +;; Warnings: +;; WARN: disable def twice: 73. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. + +;; v0-2: object v1-9: process v1-11: collide-shape a0-0: process +;; a1-0: int a2-0: symbol a3-0: event-message-block s5-1: trsqv +;; s6-0: target gp-1: symbol +L218: + daddiu sp, sp, -80 + sd ra, 0(sp) + sq s3, 16(sp) + sq s4, 32(sp) + sq s5, 48(sp) + sq gp, 64(sp) +B0: + or s5, a0, r0 ;; [ 0] (set! arg0 arg0) [a0: process ] -> [s5: process ] + or s4, a1, r0 ;; [ 1] (set! arg1 arg1) [a1: int ] -> [s4: int ] + or s3, a2, r0 ;; [ 2] (set! arg2 arg2) [a2: symbol ] -> [s3: symbol ] + or gp, a3, r0 ;; [ 3] (set! arg3 arg3) [a3: event-message-block ] -> [gp: event-message-block ] + or v1, s3, r0 ;; [ 4] (set! v1-0 arg2) [s3: symbol ] -> [v1: symbol ] + daddiu a0, s7, touched ;; [ 5] (set! a0-1 'touched) [] -> [a0: symbol ] + bne v1, a0, L229 ;; [ 6] (b! (!= v1-0 a0-1) L229 (nop!)) [v1: symbol a0: symbol ] -> [] + sll r0, r0, 0 + +B1: + ld a0, 16(gp) ;; [ 7] (set! a0-2 (l.d (+ arg3 16))) [gp: event-message-block ] -> [a0: uint ] + lw v1, touching-shapes-entry(s7);; [ 8] (set! v1-1 touching-shapes-entry) + ;; [] -> [v1: ] + lwu t9, 64(v1) ;; [ 9] (set! t9-0 (l.wu (+ v1-1 64))) + ;; [v1: ] -> [t9: ] + lwu a1, 108(s6) ;; [ 10] (set! a1-1 (l.wu (+ self 108))) [s6: target ] -> [a1: control-info ] + addiu a2, r0, 224 ;; [ 11] (set! a2-1 224) [] -> [a2: ] + jalr ra, t9 ;; [ 12] (call! a0-2 a1-1 a2-1) + ;; [a0: uint a1: control-info a2: t9: ] -> [v0: touching-prims-entry ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 13] (set! v1-2 v0-0) [v0: touching-prims-entry ] -> [v1: touching-prims-entry ] + beq s7, v1, L227 ;; [ 14] (b! (not v1-2) L227 (nop!)) [v1: touching-prims-entry ] -> [] + sll r0, r0, 0 + +B2: + lw t9, target-send-attack(s7);; [ 15] (set! t9-1 target-send-attack) + ;; [] -> [t9: (function process uint uint int int symbol :behavior target) ] + or a0, s5, r0 ;; [ 16] (set! a0-3 arg0) [s5: process ] -> [a0: process ] + lwu v1, 108(s6) ;; [ 17] (set! v1-3 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu a1, 2380(v1) ;; [ 18] (set! a1-2 (l.wu (+ v1-3 2380))) [v1: control-info ] -> [a1: symbol ] + ld a2, 16(gp) ;; [ 19] (set! a2-2 (l.d (+ arg3 16))) [gp: event-message-block ] -> [a2: uint ] + lwu v1, 108(s6) ;; [ 20] (set! v1-4 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld a3, 2388(v1) ;; [ 21] (set! a3-1 (l.d (+ v1-4 2388))) [v1: control-info ] -> [a3: int ] + lwu v1, 108(s6) ;; [ 22] (set! v1-5 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld t0, 2396(v1) ;; [ 23] (set! t0-0 (l.d (+ v1-5 2396))) [v1: control-info ] -> [t0: int ] + jalr ra, t9 ;; [ 24] (call! a0-3 a1-2 a2-2 a3-1 t0-0) + ;; [a0: process a1: symbol a2: uint a3: int t0: int t9: (function process uint uint int int symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or gp, v0, r0 ;; [ 25] (set! gp-1 v0-1) [v0: symbol ] -> [gp: symbol ] + beq s7, gp, L226 ;; [ 26] (b! (not gp-1) L226 (set! v0-2 #f)) [gp: symbol ] -> [v0: '#f ] + or v0, s7, r0 + +B3: + lw v1, *display*(s7) ;; [ 27] (set! v1-6 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 28] (set! v1-7 (l.d (+ v1-6 780))) [v1: display ] -> [v1: time-frame ] + lwu a0, 108(s6) ;; [ 29] (set! a0-4 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sw v1, 2180(a0) ;; [ 30] (s.w! (+ a0-4 2180) v1-7) [v1: time-frame a0: control-info ] -> [] + beql s5, r0, L219 ;; [ 31] (bl! (zero? arg0) L219 (no-delay!)) [s5: process ] -> [] +B4: + or v1, s7, r0 ;; [ 32] (set! v1-8 #f) [] -> [v1: '#f ] + +B5: + lw t9, type-type?(s7) ;; [ 33] (set! t9-2 type-type?) [] -> [t9: (function type type symbol) ] + lwu a0, -4(s5) ;; [ 34] (set! a0-5 (l.wu (+ arg0 -4))) [s5: process ] -> [a0: ] + lw a1, process-drawable(s7);; [ 35] (set! a1-3 process-drawable) [] -> [a1: ] + jalr ra, t9 ;; [ 36] (call! a0-5 a1-3) + ;; [a0: a1: t9: (function type type symbol) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 37] (set! v1-8 v0-3) [v0: symbol ] -> [v1: symbol ] +B6: +L219: + beq s7, v1, L220 ;; [ 38] (b! (not v1-8) L220 (set! v1-9 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B7: + or v1, s5, r0 ;; [ 39] (set! v1-9 arg0) [s5: process ] -> [v1: process ] +B8: +L220: + beq s7, v1, L224 ;; [ 40] (b! (not v1-9) L224 (set! a0-6 #f)) [v1: process ] -> [a0: '#f ] + or a0, s7, r0 + +B9: + lwu s5, 108(v1) ;; [ 41] (set! s5-1 (l.wu (+ (the-as process-drawable v1-9) 108))) + ;; [v1: process-drawable ] -> [s5: trsqv ] + beql s5, r0, L221 ;; [ 42] (bl! (zero? s5-1) L221 (no-delay!)) [s5: trsqv ] -> [] +B10: + or v1, s7, r0 ;; [ 43] (set! v1-10 #f) [] -> [v1: '#f ] + +B11: + lw t9, type-type?(s7) ;; [ 44] (set! t9-3 type-type?) [] -> [t9: (function type type symbol) ] + lwu a0, -4(s5) ;; [ 45] (set! a0-7 (l.wu (+ s5-1 -4))) [s5: trsqv ] -> [a0: ] + lw a1, collide-shape(s7) ;; [ 46] (set! a1-4 collide-shape) [] -> [a1: ] + jalr ra, t9 ;; [ 47] (call! a0-7 a1-4) + ;; [a0: a1: t9: (function type type symbol) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 48] (set! v1-10 v0-4) [v0: symbol ] -> [v1: symbol ] +B12: +L221: + beq s7, v1, L222 ;; [ 49] (b! (not v1-10) L222 (set! v1-11 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B13: + or v1, s5, r0 ;; [ 50] (set! v1-11 (the-as collide-shape s5-1)) + ;; [s5: collide-shape ] -> [v1: collide-shape ] +B14: +L222: + beql s7, v1, L223 ;; [ 51] (bl! (not v1-11) L223 (no-delay!)) [v1: collide-shape ] -> [] +B15: + or a0, v1, r0 ;; [ 52] (set! a0-8 v1-11) [v1: collide-shape ] -> [a0: collide-shape ] + +B16: + lwu a0, 156(v1) ;; [ 53] (set! a0-9 (l.wu (+ v1-11 156))) [v1: collide-shape ] -> [a0: collide-shape-prim ] + ld a0, 28(a0) ;; [ 54] (set! a0-10 (l.d (+ a0-9 28))) [a0: collide-shape-prim ] -> [a0: collide-kind ] + andi a0, a0, 256 ;; [ 55] (set! a0-11 (logand a0-10 256)) [a0: collide-kind ] -> [a0: collide-kind ] + bnel a0, r0, L223 ;; [ 56] (bl! (nonzero? a0-11) L223 (no-delay!)) [a0: collide-kind ] -> [] +B17: + daddiu a0, s7, 8 ;; [ 57] (set! a0-8 #t) [] -> [a0: symbol ] + +B18: + daddiu a0, s7, 8 ;; [ 58] (set! a0-12 #t) [] -> [a0: symbol ] + lwu v1, 156(v1) ;; [ 59] (set! v1-12 (l.wu (+ v1-11 156))) + ;; [v1: collide-shape ] -> [v1: collide-shape-prim ] + lwu v1, 36(v1) ;; [ 60] (set! v1-13 (l.wu (+ v1-12 36))) + ;; [v1: collide-shape-prim ] -> [v1: collide-action ] + andi v1, v1, 1024 ;; [ 61] (set! v1-14 (logand v1-13 1024)) [v1: collide-action ] -> [v1: collide-action ] + movz a0, s7, v1 ;; [ 62] (cmove-#f-zero a0-8 v1-14 a0-12) [v1: collide-action a0: symbol ] -> [a0: symbol ] +B19: +L223: + beq s7, a0, L224 ;; [ 63] (b! (not a0-8) L224 (set! a0-13 #f)) [a0: basic ] -> [a0: '#f ] + or a0, s7, r0 + +B20: + addiu a0, r0, 1 ;; [ 64] (set! a0-14 1) [] -> [a0: ] + lwu v1, 108(s6) ;; [ 65] (set! v1-15 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw a0, 2188(v1) ;; [ 66] (s.w! (+ v1-15 2188) a0-14) [v1: control-info a0: ] -> [] +B21: +L224: + daddiu v1, s7, die ;; [ 67] (set! v1-16 'die) [] -> [v1: symbol ] + dsubu v1, gp, v1 ;; [ 68] (set! a0-15 (= gp-1 v1-16)) [v1: symbol gp: symbol ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + bnel s7, a0, L225 ;; [ 69] (bl! (truthy a0-15) L225 (no-delay!)) [a0: symbol ] -> [] +B22: + or v1, a0, r0 ;; [ 70] (set! v1-17 a0-15) [a0: symbol ] -> [v1: symbol ] + +B23: + daddiu v1, s7, push ;; [ 71] (set! v1-18 'push) [] -> [v1: symbol ] + dsubu a0, gp, v1 ;; [ 72] (set! v1-17 (= gp-1 v1-18)) [v1: symbol gp: symbol ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 +B24: +L225: + beq s7, v1, L226 ;; [ 73] (b! (not v1-17) L226 (set! v0-2 #f)) [v1: symbol ] -> [v0: '#f ] + or v0, s7, r0 + +B25: + lw v1, *display*(s7) ;; [ 74] (set! v1-19 *display*) [] -> [v1: display ] + ld v0, 780(v1) ;; [ 75] (set! v0-2 (l.d (+ v1-19 780))) [v1: display ] -> [v0: time-frame ] + lwu v1, 108(s6) ;; [ 76] (set! v1-20 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw v0, 2184(v1) ;; [ 77] (s.w! (+ v1-20 2184) (the-as time-frame v0-2)) + ;; [v0: time-frame v1: control-info ] -> [] +B26: +L226: + beq r0, r0, L228 ;; [ 78] (b! #t L228 (nop!)) [] -> [] + sll r0, r0, 0 + +B27: +L227: + lw t9, target-dangerous-event-handler(s7);; [ 79] (set! t9-4 target-dangerous-event-handler) + ;; [] -> [t9: (function process int symbol event-message-block object :behavior target) ] + or a0, s5, r0 ;; [ 80] (set! a0-16 arg0) [s5: process ] -> [a0: process ] + or a1, s4, r0 ;; [ 81] (set! a1-5 arg1) [s4: int ] -> [a1: int ] + or a2, s3, r0 ;; [ 82] (set! a2-3 arg2) [s3: symbol ] -> [a2: symbol ] + or a3, gp, r0 ;; [ 83] (set! a3-2 arg3) [gp: event-message-block ] -> [a3: event-message-block ] + jalr ra, t9 ;; [ 84] (call! a0-16 a1-5 a2-3 a3-2) + ;; [a0: process a1: int a2: symbol a3: event-message-block t9: (function process int symbol event-message-block object :behavior target) ] -> [v0: object ] + sll v0, ra, 0 + +B28: +L228: + beq r0, r0, L230 ;; [ 85] (b! #t L230 (nop!)) [] -> [] + sll r0, r0, 0 + +B29: +L229: + lw t9, target-dangerous-event-handler(s7);; [ 86] (set! t9-5 target-dangerous-event-handler) + ;; [] -> [t9: (function process int symbol event-message-block object :behavior target) ] + or a0, s5, r0 ;; [ 87] (set! a0-17 arg0) [s5: process ] -> [a0: process ] + or a1, s4, r0 ;; [ 88] (set! a1-6 arg1) [s4: int ] -> [a1: int ] + or a2, s3, r0 ;; [ 89] (set! a2-4 arg2) [s3: symbol ] -> [a2: symbol ] + or a3, gp, r0 ;; [ 90] (set! a3-3 arg3) [gp: event-message-block ] -> [a3: event-message-block ] + jalr ra, t9 ;; [ 91] (call! a0-17 a1-6 a2-4 a3-3) + ;; [a0: process a1: int a2: symbol a3: event-message-block t9: (function process int symbol event-message-block object :behavior target) ] -> [v0: object ] + sll v0, ra, 0 + +B30: +L230: + ld ra, 0(sp) + lq gp, 64(sp) + lq s5, 48(sp) + lq s4, 32(sp) + lq s3, 16(sp) + jr ra + daddiu sp, sp, 80 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (event target-running-attack) + ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('touched) + (cond + (((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> self control) + (the-as uint 224) + ) + (let ((gp-1 (target-send-attack + arg0 + (the-as uint (-> self control unknown-symbol30)) + (-> arg3 param 0) + (-> self control unknown-dword50) + (-> self control unknown-dword51) + ) + ) + ) + (when gp-1 + (set! (-> self control unknown-uint20) (the-as uint (-> *display* base-frame-counter))) + (let ((v1-9 (if (and (nonzero? arg0) (type-type? (-> arg0 type) process-drawable)) + arg0 + ) + ) + ) + (when v1-9 + (let* ((s5-1 (-> (the-as process-drawable v1-9) root)) + (v1-11 (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) collide-shape)) + (the-as collide-shape s5-1) + ) + ) + ) + (if (and v1-11 (or (logtest? (-> v1-11 root-prim prim-core collide-as) (collide-kind enemy)) + (logtest? (-> v1-11 root-prim prim-core action) (collide-action ca-10)) + ) + ) + (set! (-> self control unknown-uint31) (the-as uint 1)) + ) + ) + ) + ) + (when (or (= gp-1 'die) (= gp-1 'push)) + (let ((v0-2 (the-as object (-> *display* base-frame-counter)))) + (set! (-> self control unknown-int21) (the-as int v0-2)) + v0-2 + ) + ) + ) + ) + ) + (else + (target-dangerous-event-handler arg0 arg1 arg2 arg3) + ) + ) + ) + (else + (target-dangerous-event-handler arg0 arg1 arg2 arg3) + ) + ) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-attack) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x40, fp? 1 ra? 1 ep? 1 + ;gprs: gp s5 s4 +;; Warnings: +;; INFO: Return type mismatch object vs none. + +;; s6-0: target +L231: + daddiu sp, sp, -64 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s4, 16(sp) + sq s5, 32(sp) + sq gp, 48(sp) +B0: + lw t9, ja-channel-push!(s7);; [ 0] (set! t9-0 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [ 1] (set! a0-0 1) [] -> [a0: ] + addiu a1, r0, 15 ;; [ 2] (set! a1-0 15) [] -> [a1: ] + jalr ra, t9 ;; [ 3] (call! a0-0 a1-0) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [ 4] (set! v1-0 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 5] (set! v1-1 (l.wu (+ v1-0 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 6] (set! a0-1 (+ v1-1 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 7] (set! v1-2 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 8] (set! v1-3 (l.wu (+ v1-2 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 232(v1) ;; [ 9] (set! v1-4 (l.wu (+ v1-3 232))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [ 10] (s.w! (+ a0-1 12) v1-4) [v1: art-element a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [ 11] (set! v1-5 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 12] (set! v1-6 (l.wu (+ v1-5 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 232(v1) ;; [ 13] (set! v1-7 (l.wu (+ v1-6 232))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 14] (set! (the-as art-joint-anim v1-8) (l.wu (+ v1-7 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 15] (set! v1-9 (l.h (+ v1-8 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 16] (set! v1-10 (+ v1-9 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 17] (set! f0-0 (gpr->fpr v1-10)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 18] (set! f0-1 (i2f f0-0)) [] -> [] + swc1 f0, 24(a0) ;; [ 19] (s.f! (+ a0-1 24) f0-1) [a0: joint-control-channel ] -> [] + lwu v1, 108(s6) ;; [ 20] (set! v1-11 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 660(v1) ;; [ 21] (set! v1-12 (l.wu (+ v1-11 660))) [v1: control-info ] -> [v1: surface ] + lwc1 f0, 88(v1) ;; [ 22] (set! f0-2 (l.f (+ v1-12 88))) [v1: surface ] -> [] + swc1 f0, 28(a0) ;; [ 23] (s.f! (+ a0-1 28) f0-2) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [ 24] (set! f0-3 0) [] -> [] + swc1 f0, 16(a0) ;; [ 25] (s.f! (+ a0-1 16) f0-3) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [ 26] (set! t9-1 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [ 27] (set! v1-13 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 28] (set! v1-14 (l.wu (+ v1-13 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 232(v1) ;; [ 29] (set! a1-1 (l.wu (+ v1-14 232))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [ 30] (set! a2-0 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 31] (call! a0-1 a1-1 a2-0) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 32] (set! v1-15 v0-1) [v0: int ] -> [v1: int ] +B1: +L232: + lwu v1, 140(s6) ;; [ 33] (set! v1-16 (l.wu (+ self 140))) [s6: target ] -> [v1: fact-info-target ] + lw v1, 36(v1) ;; [ 34] (set! v1-17 (l.w (+ v1-16 36))) [v1: fact-info-target ] -> [v1: pickup-type ] + daddiu v1, v1, -2 ;; [ 35] (set! v1-18 (+ v1-17 -2)) [v1: pickup-type ] -> [v1: ] + daddiu a0, s7, 8 ;; [ 36] (set! a0-2 (zero? v1-18)) [v1: ] -> [a0: symbol ] + movn a0, s7, v1 + beql s7, a0, L233 ;; [ 37] (bl! (not a0-2) L233 (no-delay!)) [a0: symbol ] -> [] +B2: + or v1, a0, r0 ;; [ 38] (set! v1-19 a0-2) [a0: symbol ] -> [v1: symbol ] + +B3: + lwu v1, 140(s6) ;; [ 39] (set! v1-20 (l.wu (+ self 140))) [s6: target ] -> [v1: fact-info-target ] + lwc1 f0, 40(v1) ;; [ 40] (set! f0-4 (l.f (+ v1-20 40))) [v1: fact-info-target ] -> [] + lui v1, L786 ;; [ 41] (set! v1-21 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 42] (set! f1-0 (l.f v1-21)) [v1: ] -> [] + c.lt.s f0, f1 ;; [ 43] (b! (>=.s f0-4 f1-0) L233 (set! v1-19 #t)) [] -> [v1: symbol ] + bc1f L233 + daddiu v1, s7, 8 + +B4: + or v1, s7, r0 ;; [ 44] (set! v1-19 #f) [] -> [v1: '#f ] +B5: +L233: + beq s7, v1, L234 ;; [ 45] (b! (not v1-19) L234 (set! v1-22 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B6: + lwu v1, 120(s6) ;; [ 46] (set! v1-23 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu gp, 36(v1) ;; [ 47] (set! gp-0 (l.wu (+ v1-23 36))) [v1: joint-control ] -> [gp: effect-control ] + lwu v1, -4(gp) ;; [ 48] (set! v1-24 (l.wu (+ gp-0 -4))) + ;; [gp: effect-control ] -> [v1: ] + lwu s5, 56(v1) ;; [ 49] (set! s5-0 (l.wu (+ v1-24 56))) + ;; [v1: ] -> [s5: ] + daddiu s4, s7, group-red-eco-spinkick;; [ 50] (set! s4-0 'group-red-eco-spinkick) [] -> [s4: symbol ] + lw t9, ja-frame-num(s7) ;; [ 51] (set! t9-2 ja-frame-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 52] (set! a0-3 0) [] -> [a0: ] + jalr ra, t9 ;; [ 53] (call! a0-3) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + or a2, v0, r0 ;; [ 54] (set! a2-1 v0-2) [v0: float ] -> [a2: float ] + addiu a3, r0, 74 ;; [ 55] (set! a3-0 74) [] -> [a3: ] + or t9, s5, r0 ;; [ 56] (set! t9-3 s5-0) + ;; [s5: ] -> [t9: ] + or a0, gp, r0 ;; [ 57] (set! a0-4 gp-0) [gp: effect-control ] -> [a0: effect-control ] + or a1, s4, r0 ;; [ 58] (set! a1-2 s4-0) [s4: symbol ] -> [a1: symbol ] + jalr ra, t9 ;; [ 59] (call! a0-4 a1-2 a2-1 a3-0) + ;; [a0: effect-control a1: symbol a2: float a3: t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 60] (set! v1-25 v0-3) [v0: object ] -> [v1: object ] + lw t9, cpad-set-buzz!(s7) ;; [ 61] (set! t9-4 cpad-set-buzz!) + ;; [] -> [t9: (function cpad-info int int time-frame none) ] + lw v1, *cpad-list*(s7) ;; [ 62] (set! v1-26 *cpad-list*) [] -> [v1: cpad-list ] + lwu a0, 4(v1) ;; [ 63] (set! a0-5 (l.wu (+ v1-26 4))) [v1: cpad-list ] -> [a0: cpad-info ] + addiu a1, r0, 1 ;; [ 64] (set! a1-3 1) [] -> [a1: ] + addiu a2, r0, 153 ;; [ 65] (set! a2-2 153) [] -> [a2: ] + addiu a3, r0, 30 ;; [ 66] (set! a3-1 30) [] -> [a3: ] + jalr ra, t9 ;; [ 67] (call! a0-5 a1-3 a2-2 a3-1) + ;; [a0: cpad-info a1: a2: a3: t9: (function cpad-info int int time-frame none) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, level-hint-spawn(s7);; [ 68] (set! t9-5 level-hint-spawn) + ;; [] -> [t9: (function game-text-id string entity process-tree game-task none) ] + addiu a0, r0, 678 ;; [ 69] (set! a0-6 678) [] -> [a0: ] + lui v1, L700 ;; [ 70] (set! a1-4 L700) [] -> [a1: ] "sksp0072" + ori v1, v1, L700 ;; "sksp0072" + daddu a1, v1, fp + or a2, s7, r0 ;; [ 71] (set! a2-3 #f) [] -> [a2: '#f ] + lw a3, *entity-pool*(s7) ;; [ 72] (set! a3-2 *entity-pool*) [] -> [a3: process-tree ] + addiu t0, r0, 0 ;; [ 73] (set! t0-0 0) [] -> [t0: ] + jalr ra, t9 ;; [ 74] (call! a0-6 a1-4 a2-3 a3-2 t0-0) + ;; [a0: a1: a2: '#f a3: process-tree t0: t9: (function game-text-id string entity process-tree game-task none) ] -> [v0: none ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 75] (set! v1-27 v0-5) [v0: none ] -> [v1: none ] +B7: +L234: + lwu v1, 108(s6) ;; [ 76] (set! v1-28 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 77] (set! v1-29 (l.wu (+ v1-28 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 78] (set! v1-30 (l.w (+ v1-29 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 79] (set! v1-31 (sll v1-30 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 80] (set! a0-7 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 81] (set! v1-32 (+ v1-31 a0-7)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 82] (set! v1-33 (l.wu (+ v1-32 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 83] (set! v1-34 (l.wu (+ v1-33 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 84] (set! a0-8 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 85] (set! a0-9 (l.wu (+ a0-8 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 86] (set! a0-10 (l.w (+ a0-9 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 87] (set! a0-11 (sll a0-10 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 88] (set! a1-5 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 89] (set! a0-12 (+ a0-11 a1-5)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 90] (set! a0-13 (l.wu (+ a0-12 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 60(a0) ;; [ 91] (set! a0-14 (l.wu (+ a0-13 60))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 92] (set! v1-35 (logior v1-34 a0-14)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 93] (set! a0-15 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 94] (set! a0-16 (l.wu (+ a0-15 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 95] (set! a0-17 (l.w (+ a0-16 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 96] (set! a0-18 (sll a0-17 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 97] (set! a1-6 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 98] (set! a0-19 (+ a0-18 a1-6)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 99] (set! a0-20 (l.wu (+ a0-19 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 64(a0) ;; [100] (set! a0-21 (l.wu (+ a0-20 64))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [101] (set! v1-36 (logior v1-35 a0-21)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + andi v1, v1, 16384 ;; [102] (set! v1-37 (logand v1-36 #x4000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L235 ;; [103] (bl! (zero? v1-37) L235 (no-delay!)) [v1: pad-buttons ] -> [] +B8: + or v1, s7, r0 ;; [104] (set! v1-38 #f) [] -> [v1: '#f ] + +B9: + lw t9, can-jump?(s7) ;; [105] (set! t9-6 can-jump?) [] -> [t9: (function symbol symbol :behavior target) ] + or a0, s7, r0 ;; [106] (set! a0-22 #f) [] -> [a0: '#f ] + jalr ra, t9 ;; [107] (call! a0-22) + ;; [a0: '#f t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [108] (set! v1-38 v0-6) [v0: symbol ] -> [v1: symbol ] +B10: +L235: + beq s7, v1, L236 ;; [109] (b! (not v1-38) L236 (set! v1-39 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B11: + lw t9, enter-state(s7) ;; [110] (set! t9-7 enter-state) [] -> [t9: ] + lw v1, *TARGET-bank*(s7) ;; [111] (set! v1-40 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 4(v1) ;; [112] (set! f0-5 (l.f (+ v1-40 4))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [113] (set! a0-23 (fpr->gpr f0-5)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [114] (set! v1-41 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 8(v1) ;; [115] (set! f0-6 (l.f (+ v1-41 8))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [116] (set! a1-7 (fpr->gpr f0-6)) [] -> [a1: meters ] + or a2, s7, r0 ;; [117] (set! a2-4 #f) [] -> [a2: '#f ] + lw v1, target-jump(s7) ;; [118] (set! v1-42 target-jump) [] -> [v1: (state float float surface target) ] + sw v1, 72(s6) ;; [119] (s.w! (+ self 72) v1-42) + ;; [v1: (state float float surface target) s6: target ] -> [] + jalr ra, t9 ;; [120] (call! a0-23 a1-7 a2-4) + ;; [a0: meters a1: meters a2: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [121] (set! v1-43 v0-7) [v0: object ] -> [v1: object ] +B12: +L236: + lwu s6, 44(s6) ;; [122] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [123] (set! v1-44 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [124] (set! v1-45 (l.wu (+ v1-44 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [125] (set! a0-24 (+ v1-45 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [126] (set! v1-46 (l.wu (+ a0-24 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [127] (set! v1-47 (l.wu (+ v1-46 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [128] (set! v1-48 (l.h (+ v1-47 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [129] (set! v1-49 (+ v1-48 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [130] (set! f0-7 (gpr->fpr v1-49)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [131] (set! f0-8 (i2f f0-7)) [] -> [] + swc1 f0, 24(a0) ;; [132] (s.f! (+ a0-24 24) f0-8) [a0: joint-control-channel ] -> [] + lwu v1, 108(s6) ;; [133] (set! v1-50 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 660(v1) ;; [134] (set! v1-51 (l.wu (+ v1-50 660))) [v1: control-info ] -> [v1: surface ] + lwc1 f0, 88(v1) ;; [135] (set! f0-9 (l.f (+ v1-51 88))) [v1: surface ] -> [] + swc1 f0, 28(a0) ;; [136] (s.f! (+ a0-24 28) f0-9) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [137] (set! t9-8 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [138] (set! a1-8 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [139] (set! a2-5 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [140] (call! a0-24 a1-8 a2-5) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [141] (set! v1-52 v0-8) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [142] (set! t9-9 ja-done?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [143] (set! a0-25 0) [] -> [a0: ] + jalr ra, t9 ;; [144] (call! a0-25) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L232 ;; [145] (b! (not v0-9) L232 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B13: + or v1, s7, r0 ;; [146] (set! v1-53 #f) [] -> [v1: '#f ] + lw t9, enter-state(s7) ;; [147] (set! t9-10 enter-state) [] -> [t9: ] + lw v1, target-stance(s7) ;; [148] (set! v1-54 target-stance) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [149] (s.w! (+ self 72) v1-54) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [150] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 48(sp) + lq s5, 32(sp) + lq s4, 16(sp) + jr ra + daddiu sp, sp, 64 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-attack) + () + (ja-channel-push! 1 (seconds 0.05)) + (ja-no-eval :group! (-> self draw art-group data 51) + :num! (seek! max (-> self control unknown-surface01 align-speed)) + :frame-num 0.0 + ) + (until (ja-done? 0) + (when (and (= (-> self fact-info-target eco-type) (pickup-type eco-red)) + (>= (-> self fact-info-target eco-level) 1.0) + ) + (dummy-10 (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 74) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) + (level-hint-spawn + (game-text-id misty-eco-red-first-use) + "sksp0072" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) + ) + (suspend) + (ja :num! (seek! max (-> self control unknown-surface01 align-speed))) + ) + (go target-stance) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (exit target-attack) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; s6-0: target +L237: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lw v1, *display*(s7) ;; [ 0] (set! v1-0 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 1] (set! v1-1 (l.d (+ v1-0 780))) [v1: display ] -> [v1: time-frame ] + lwu a0, 108(s6) ;; [ 2] (set! a0-0 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sd v1, 1684(a0) ;; [ 3] (s.d! (+ a0-0 1684) v1-1) [v1: time-frame a0: control-info ] -> [] + lw t9, target-exit(s7) ;; [ 4] (set! t9-0 target-exit) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 5] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (exit target-attack) + () + (set! (-> self control unknown-dword33) (-> *display* base-frame-counter)) + (target-exit) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-attack) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 1 ra? 1 ep? 1 +;; Warnings: +;; INFO: Return type mismatch float vs none. + +;; s6-0: target +L238: + daddiu sp, sp, -16 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 +B0: + lw v1, *display*(s7) ;; [ 0] (set! v1-0 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 1] (set! v1-1 (l.d (+ v1-0 780))) [v1: display ] -> [v1: time-frame ] + sd v1, 164(s6) ;; [ 2] (s.d! (+ self 164) v1-1) [v1: time-frame s6: target ] -> [] + lw t9, target-start-attack(s7);; [ 3] (set! t9-0 target-start-attack) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 4] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, target-danger-set!(s7);; [ 5] (set! t9-1 target-danger-set!) + ;; [] -> [t9: (function symbol symbol float :behavior target) ] + daddiu a0, s7, spin ;; [ 6] (set! a0-0 'spin) [] -> [a0: symbol ] + or a1, s7, r0 ;; [ 7] (set! a1-0 #f) [] -> [a1: '#f ] + jalr ra, t9 ;; [ 8] (call! a0-0 a1-0) + ;; [a0: symbol a1: '#f t9: (function symbol symbol float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + + lw v1, *attack-mods*(s7) ;; [ 9] (set! v1-2 *attack-mods*) [] -> [v1: surface ] + lwu a0, 108(s6) ;; [ 10] (set! a0-1 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sw v1, 656(a0) ;; [ 11] (s.w! (+ a0-1 656) v1-2) [v1: surface a0: control-info ] -> [] + lui v1, L749 ;; [ 12] (set! v1-3 L749) [] -> [v1: ] + ori v1, v1, L749 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 13] (set! f0-0 (l.f v1-3)) [v1: ] -> [] + lwu v1, 152(s6) ;; [ 14] (set! v1-4 (l.wu (+ self 152))) [s6: target ] -> [v1: water-control ] + swc1 f0, 276(v1) ;; [ 15] (s.f! (+ v1-4 276) f0-0) [v1: water-control ] -> [] + mtc1 f0, r0 ;; [ 16] (set! f0-1 0) [] -> [] + lwu v1, 184(s6) ;; [ 17] (set! v1-5 (l.wu (+ self 184))) [s6: target ] -> [v1: joint-mod ] + swc1 f0, 116(v1) ;; [ 18] (s.f! (+ v1-5 116) f0-1) [v1: joint-mod ] -> [] + mfc1 v0, f0 ;; [ 19] (set! v0-2 (fpr->gpr f0-1)) [] -> [v0: float ] + ld ra, 0(sp) + ld fp, 8(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-attack) + () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (target-start-attack) + (target-danger-set! 'spin #f) + (set! (-> self control unknown-surface00) *attack-mods*) + (set! (-> self water drip-mult) 4.0) + (set! (-> self neck flex-blend) 0.0) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-hit-ground) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; Warnings: +;; INFO: Return type mismatch object vs none. + + +L239: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lw t9, target-hit-ground-anim(s7);; [ 0] (set! t9-0 target-hit-ground-anim) + ;; [] -> [t9: (function symbol symbol :behavior target) ] + or a0, s7, r0 ;; [ 1] (set! a0-1 #f) [] -> [a0: '#f ] + jalr ra, t9 ;; [ 2] (call! a0-1) + ;; [a0: '#f t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + lw t9, enter-state(s7) ;; [ 3] (set! t9-1 enter-state) [] -> [t9: ] + lw v1, target-stance(s7) ;; [ 4] (set! v1-0 target-stance) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 5] (s.w! (+ self 72) v1-0) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 6] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler (code target-hit-ground) ((arg0 symbol)) (target-hit-ground-anim #f) (go target-stance) (none)) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (trans target-hit-ground) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; s6-0: target +L240: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lwu v1, 108(s6) ;; [ 0] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 1] (set! v1-1 (l.wu (+ v1-0 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 2] (set! v1-2 (l.w (+ v1-1 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 3] (set! v1-3 (sll v1-2 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 4] (set! a0-0 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 5] (set! v1-4 (+ v1-3 a0-0)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 6] (set! v1-5 (l.wu (+ v1-4 4))) [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 7] (set! v1-6 (l.wu (+ v1-5 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 8] (set! a0-1 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 9] (set! a0-2 (l.wu (+ a0-1 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 10] (set! a0-3 (l.w (+ a0-2 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 11] (set! a0-4 (sll a0-3 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 12] (set! a1-0 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 13] (set! a0-5 (+ a0-4 a1-0)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 14] (set! a0-6 (l.wu (+ a0-5 4))) [a0: ] -> [a0: cpad-info ] + lwu a0, 60(a0) ;; [ 15] (set! a0-7 (l.wu (+ a0-6 60))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 16] (set! v1-7 (logior v1-6 a0-7)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 17] (set! a0-8 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 18] (set! a0-9 (l.wu (+ a0-8 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 19] (set! a0-10 (l.w (+ a0-9 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 20] (set! a0-11 (sll a0-10 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 21] (set! a1-1 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 22] (set! a0-12 (+ a0-11 a1-1)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 23] (set! a0-13 (l.wu (+ a0-12 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 64(a0) ;; [ 24] (set! a0-14 (l.wu (+ a0-13 64))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 25] (set! v1-8 (logior v1-7 a0-14)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + andi v1, v1, 16384 ;; [ 26] (set! v1-9 (logand v1-8 #x4000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L241 ;; [ 27] (bl! (zero? v1-9) L241 (no-delay!)) [v1: pad-buttons ] -> [] +B1: + or v1, s7, r0 ;; [ 28] (set! v1-10 #f) [] -> [v1: '#f ] + +B2: + lw t9, can-jump?(s7) ;; [ 29] (set! t9-0 can-jump?) [] -> [t9: (function symbol symbol :behavior target) ] + or a0, s7, r0 ;; [ 30] (set! a0-15 #f) [] -> [a0: '#f ] + jalr ra, t9 ;; [ 31] (call! a0-15) + ;; [a0: '#f t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 32] (set! v1-10 v0-0) [v0: symbol ] -> [v1: symbol ] +B3: +L241: + beq s7, v1, L242 ;; [ 33] (b! (not v1-10) L242 (set! v1-11 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B4: + lw t9, enter-state(s7) ;; [ 34] (set! t9-1 enter-state) [] -> [t9: ] + lw v1, *TARGET-bank*(s7) ;; [ 35] (set! v1-12 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 4(v1) ;; [ 36] (set! f0-0 (l.f (+ v1-12 4))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [ 37] (set! a0-16 (fpr->gpr f0-0)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [ 38] (set! v1-13 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 8(v1) ;; [ 39] (set! f0-1 (l.f (+ v1-13 8))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [ 40] (set! a1-2 (fpr->gpr f0-1)) [] -> [a1: meters ] + or a2, s7, r0 ;; [ 41] (set! a2-0 #f) [] -> [a2: '#f ] + lw v1, target-jump(s7) ;; [ 42] (set! v1-14 target-jump) [] -> [v1: (state float float surface target) ] + sw v1, 72(s6) ;; [ 43] (s.w! (+ self 72) v1-14) + ;; [v1: (state float float surface target) s6: target ] -> [] + jalr ra, t9 ;; [ 44] (call! a0-16 a1-2 a2-0) + ;; [a0: meters a1: meters a2: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 45] (set! v1-15 v0-1) [v0: object ] -> [v1: object ] +B5: +L242: + lw t9, can-exit-duck?(s7) ;; [ 46] (set! t9-2 can-exit-duck?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [ 47] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + bnel s7, v0, L243 ;; [ 48] (bl! (truthy v0-2) L243 (no-delay!)) [v0: symbol ] -> [] +B6: + or v1, s7, r0 ;; [ 49] (set! v1-16 #f) [] -> [v1: '#f ] + +B7: + lw t9, can-duck?(s7) ;; [ 50] (set! t9-3 can-duck?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [ 51] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 52] (set! v1-16 v0-3) [v0: symbol ] -> [v1: symbol ] +B8: +L243: + beq s7, v1, L244 ;; [ 53] (b! (not v1-16) L244 (set! v1-17 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B9: + lw t9, enter-state(s7) ;; [ 54] (set! t9-4 enter-state) [] -> [t9: ] + lw v1, target-duck-stance(s7);; [ 55] (set! v1-18 target-duck-stance) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 56] (s.w! (+ self 72) v1-18) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 57] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 58] (set! v1-19 v0-4) [v0: object ] -> [v1: object ] +B10: +L244: + lwu v1, 108(s6) ;; [ 59] (set! v1-20 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 60] (set! v1-21 (l.wu (+ v1-20 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 61] (set! v1-22 (l.w (+ v1-21 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 62] (set! v1-23 (sll v1-22 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 63] (set! a0-17 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 64] (set! v1-24 (+ v1-23 a0-17)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 65] (set! v1-25 (l.wu (+ v1-24 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwc1 f0, 72(v1) ;; [ 66] (set! f0-2 (l.f (+ v1-25 72))) [v1: cpad-info ] -> [] + mtc1 f1, r0 ;; [ 67] (set! f1-0 0) [] -> [] + c.eq.s f0, f1 ;; [ 68] (b! (=.s f0-2 f1-0) L246 (set! v1-26 #f)) [] -> [v1: '#f ] + bc1t L246 + or v1, s7, r0 + +B11: + lwu v1, 152(s6) ;; [ 69] (set! v1-27 (l.wu (+ self 152))) [s6: target ] -> [v1: water-control ] + lwu v1, 0(v1) ;; [ 70] (set! v1-28 (l.wu v1-27)) [v1: water-control ] -> [v1: water-flags ] + andi v1, v1, 1024 ;; [ 71] (set! v1-29 (logand v1-28 1024)) [v1: water-flags ] -> [v1: water-flags ] + beq v1, r0, L245 ;; [ 72] (b! (zero? v1-29) L245 (nop!)) [v1: water-flags ] -> [] + sll r0, r0, 0 + +B12: + lw t9, enter-state(s7) ;; [ 73] (set! t9-5 enter-state) [] -> [t9: ] + lw v1, target-wade-walk(s7);; [ 74] (set! v1-30 target-wade-walk) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 75] (s.w! (+ self 72) v1-30) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 76] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 77] (set! v1-31 v0-5) [v0: object ] -> [v1: object ] + beq r0, r0, L246 ;; [ 78] (b! #t L246 (nop!)) [] -> [] + sll r0, r0, 0 + +B13: +L245: + lw t9, enter-state(s7) ;; [ 79] (set! t9-6 enter-state) [] -> [t9: ] + lw v1, target-walk(s7) ;; [ 80] (set! v1-32 target-walk) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 81] (s.w! (+ self 72) v1-32) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 82] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 83] (set! v1-33 v0-6) [v0: object ] -> [v1: object ] +B14: +L246: + lwu v1, 108(s6) ;; [ 84] (set! v1-34 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 85] (set! v1-35 (l.wu (+ v1-34 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 86] (set! v1-36 (l.w (+ v1-35 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 87] (set! v1-37 (sll v1-36 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 88] (set! a0-18 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 89] (set! v1-38 (+ v1-37 a0-18)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 90] (set! v1-39 (l.wu (+ v1-38 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 40(v1) ;; [ 91] (set! v1-40 (l.wu (+ v1-39 40))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 3072 ;; [ 92] (set! v1-41 (logand v1-40 3072)) [v1: pad-buttons ] -> [v1: pad-buttons ] + bnel v1, r0, L247 ;; [ 93] (bl! (nonzero? v1-41) L247 (no-delay!)) [v1: pad-buttons ] -> [] +B15: + daddiu v1, s7, 8 ;; [ 94] (set! v1-42 #t) [] -> [v1: symbol ] + +B16: + lw t9, can-exit-duck?(s7) ;; [ 95] (set! t9-7 can-exit-duck?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [ 96] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L247 ;; [ 97] (b! (not v0-7) L247 (set! v1-42 #t)) [v0: symbol ] -> [v1: symbol ] + daddiu v1, s7, 8 + +B17: + or v1, s7, r0 ;; [ 98] (set! v1-42 #f) [] -> [v1: '#f ] +B18: +L247: + beql s7, v1, L248 ;; [ 99] (bl! (not v1-42) L248 (no-delay!)) [v1: symbol ] -> [] +B19: + or v1, v1, r0 ;; [100] (set! v1-43 v1-42) [v1: symbol ] -> [v1: symbol ] + +B20: + lw t9, can-duck?(s7) ;; [101] (set! t9-8 can-duck?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [102] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [103] (set! v1-43 v0-8) [v0: symbol ] -> [v1: symbol ] +B21: +L248: + beq s7, v1, L249 ;; [104] (b! (not v1-43) L249 (set! v1-44 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B22: + lw t9, enter-state(s7) ;; [105] (set! t9-9 enter-state) [] -> [t9: ] + lw v1, target-duck-stance(s7);; [106] (set! v1-45 target-duck-stance) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [107] (s.w! (+ self 72) v1-45) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [108] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [109] (set! v1-46 v0-9) [v0: object ] -> [v1: object ] +B23: +L249: + lwu v1, 108(s6) ;; [110] (set! v1-47 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [111] (set! v1-48 (l.wu (+ v1-47 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [112] (set! v1-49 (l.w (+ v1-48 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [113] (set! v1-50 (sll v1-49 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [114] (set! a0-19 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [115] (set! v1-51 (+ v1-50 a0-19)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [116] (set! v1-52 (l.wu (+ v1-51 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [117] (set! v1-53 (l.wu (+ v1-52 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 8192 ;; [118] (set! v1-54 (logand v1-53 8192)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L250 ;; [119] (bl! (zero? v1-54) L250 (no-delay!)) [v1: pad-buttons ] -> [] +B24: + or v1, s7, r0 ;; [120] (set! v1-55 #f) [] -> [v1: '#f ] + +B25: + lw t9, can-feet?(s7) ;; [121] (set! t9-10 can-feet?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [122] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [123] (set! v1-55 v0-10) [v0: symbol ] -> [v1: symbol ] +B26: +L250: + beq s7, v1, L251 ;; [124] (b! (not v1-55) L251 (set! v1-56 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B27: + lw t9, enter-state(s7) ;; [125] (set! t9-11 enter-state) [] -> [t9: ] + lw v1, target-attack(s7) ;; [126] (set! v1-57 target-attack) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [127] (s.w! (+ self 72) v1-57) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [128] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [129] (set! v1-58 v0-11) [v0: object ] -> [v1: object ] +B28: +L251: + lw t9, can-hands?(s7) ;; [130] (set! t9-12 can-hands?) [] -> [t9: (function symbol symbol :behavior target) ] + daddiu a0, s7, #t ;; [131] (set! a0-20 #t) [] -> [a0: symbol ] + jalr ra, t9 ;; [132] (call! a0-20) + ;; [a0: symbol t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L252 ;; [133] (b! (not v0-12) L252 (set! v1-59 #f)) [v0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B29: + lw t9, enter-state(s7) ;; [134] (set! t9-13 enter-state) [] -> [t9: ] + lw v1, target-running-attack(s7);; [135] (set! v1-60 target-running-attack) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [136] (s.w! (+ self 72) v1-60) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [137] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [138] (set! v1-61 v0-13) [v0: object ] -> [v1: object ] +B30: +L252: + lw t9, fall-test(s7) ;; [139] (set! t9-14 fall-test) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [140] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, slide-down-test(s7);; [141] (set! t9-15 slide-down-test) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [142] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (trans target-hit-ground) + () + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) + ) + (if (and (not (can-exit-duck?)) (can-duck?)) + (go target-duck-stance) + ) + (when (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (if (logtest? (-> self water flags) (water-flags wt10)) + (go target-wade-walk) + (go target-walk) + ) + ) + (if (and (or (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (not (can-exit-duck?))) (can-duck?)) + (go target-duck-stance) + ) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) + (go target-attack) + ) + (if (can-hands? #t) + (go target-running-attack) + ) + (fall-test) + (slide-down-test) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-hit-ground) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x40, fp? 1 ra? 1 ep? 1 + ;stack_vars: 16 bytes at 16 + ;gprs: gp s5 +;; v1-4: art-joint-anim a0-0: symbol s6-0: target f0-1: float +L253: + daddiu sp, sp, -64 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s5, 32(sp) + sq gp, 48(sp) +B0: + or gp, a0, r0 ;; [ 0] (set! arg0 arg0) [a0: symbol ] -> [gp: symbol ] + daddiu v1, s7, stuck ;; [ 1] (set! v1-0 'stuck) [] -> [v1: symbol ] + bne gp, v1, L254 ;; [ 2] (b! (!= arg0 v1-0) L254 (nop!)) [v1: symbol gp: symbol ] -> [] + sll r0, r0, 0 + +B1: + or v1, s7, r0 ;; [ 3] (set! v1-1 #f) [] -> [v1: '#f ] + beq r0, r0, L260 ;; [ 4] (b! #t L260 (nop!)) [] -> [] + sll r0, r0, 0 + +B2: +L254: + lwu v1, 120(s6) ;; [ 5] (set! v1-2 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 6] (set! v1-3 (l.w (+ v1-2 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 7] (b! (<=0.si v1-3) L255 (set! v1-4 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L255 + or v1, s7, r0 + +B3: + lwu v1, 120(s6) ;; [ 8] (set! v1-5 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 9] (set! v1-6 (l.wu (+ v1-5 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 10] (set! v1-4 (l.wu (+ v1-6 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B4: +L255: + lwu a0, 116(s6) ;; [ 11] (set! a0-1 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 12] (set! a0-2 (l.wu (+ a0-1 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 196(a0) ;; [ 13] (set! a0-3 (l.wu (+ a0-2 196))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [ 14] (set! a1-0 (= v1-4 a0-3)) [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L256 ;; [ 15] (bl! (truthy a1-0) L256 (no-delay!)) [a1: symbol ] -> [] +B5: + or a0, a1, r0 ;; [ 16] (set! a0-4 a1-0) [a1: symbol ] -> [a0: symbol ] + +B6: + lwu a0, 116(s6) ;; [ 17] (set! a0-5 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 18] (set! a0-6 (l.wu (+ a0-5 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 200(a0) ;; [ 19] (set! a0-7 (l.wu (+ a0-6 200))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 20] (set! a0-4 (= v1-4 a0-7)) [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 +B7: +L256: + beq s7, a0, L257 ;; [ 21] (b! (not a0-4) L257 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B8: + lwu v1, 120(s6) ;; [ 22] (set! v1-7 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu a0, 36(v1) ;; [ 23] (set! a0-8 (l.wu (+ v1-7 36))) [v1: joint-control ] -> [a0: effect-control ] + lwu v1, -4(a0) ;; [ 24] (set! v1-8 (l.wu (+ a0-8 -4))) + ;; [a0: effect-control ] -> [v1: ] + lwu t9, 56(v1) ;; [ 25] (set! t9-0 (l.wu (+ v1-8 56))) + ;; [v1: ] -> [t9: ] + daddiu a1, s7, group-blue-hit-ground-effect;; [ 26] (set! a1-1 'group-blue-hit-ground-effect) [] -> [a1: symbol ] + lui v1, L814 ;; [ 27] (set! v1-9 L814) [] -> [v1: ] + ori v1, v1, L814 + addu v1, fp, v1 + lw a2, 0(v1) ;; [ 28] (set! a2-0 (l.w v1-9)) [v1: ] -> [a2: int ] + addiu a3, r0, -1 ;; [ 29] (set! a3-0 -1) [] -> [a3: ] + jalr ra, t9 ;; [ 30] (call! a0-8 a1-1 a2-0 a3-0) + ;; [a0: effect-control a1: symbol a2: int a3: t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 31] (set! v1-10 v0-0) [v0: object ] -> [v1: object ] + lw t9, cpad-set-buzz!(s7) ;; [ 32] (set! t9-1 cpad-set-buzz!) + ;; [] -> [t9: (function cpad-info int int time-frame none) ] + lw v1, *cpad-list*(s7) ;; [ 33] (set! v1-11 *cpad-list*) [] -> [v1: cpad-list ] + lwu a0, 4(v1) ;; [ 34] (set! a0-9 (l.wu (+ v1-11 4))) [v1: cpad-list ] -> [a0: cpad-info ] + addiu a1, r0, 1 ;; [ 35] (set! a1-2 1) [] -> [a1: ] + addiu a2, r0, 255 ;; [ 36] (set! a2-1 255) [] -> [a2: ] + addiu a3, r0, 90 ;; [ 37] (set! a3-1 90) [] -> [a3: ] + jalr ra, t9 ;; [ 38] (call! a0-9 a1-2 a2-1 a3-1) + ;; [a0: cpad-info a1: a2: a3: t9: (function cpad-info int int time-frame none) ] -> [v0: none ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 39] (set! v1-12 v0-1) [v0: none ] -> [v1: none ] + beq r0, r0, L260 ;; [ 40] (b! #t L260 (nop!)) [] -> [] + sll r0, r0, 0 + +B9: +L257: + lwu v1, 108(s6) ;; [ 41] (set! v1-13 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 42] (set! v1-14 (l.wu (+ v1-13 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 43] (set! a0-10 (+ v1-14 28)) [v1: dynamics ] -> [a0: vector ] + daddiu v1, sp, 16 ;; [ 44] (set! v1-15 (+ sp-0 16)) [sp: ] -> [v1: vector ] + lwu a1, 108(s6) ;; [ 45] (set! a1-3 (l.wu (+ self 108))) [s6: target ] -> [a1: control-info ] + daddiu a1, a1, 1212 ;; [ 46] (set! a1-4 (+ a1-3 1212)) [a1: control-info ] -> [a1: vector ] + lwu a2, 108(s6) ;; [ 47] (set! a2-2 (l.wu (+ self 108))) [s6: target ] -> [a2: control-info ] + daddiu a2, a2, 12 ;; [ 48] (set! a2-3 (+ a2-2 12)) [a2: control-info ] -> [a2: vector ] + lqc2 vf4, 0(a1) ;; [ 49] (set! v1-16 (vector-!2 v1-15 a1-4 a2-3)) + ;; [v1: vector a1: vector a2: vector ] -> [v1: vector ] + lqc2 vf5, 0(a2) + vmove.w vf6, vf0 + vsub.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) + lwc1 f0, 0(a0) ;; [ 50] (set! f0-0 (vec3dot a0-10 v1-16)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [ 51] (set! v1-17 (fpr->gpr f0-0)) [] -> [v1: float ] + mtc1 f0, v1 ;; [ 52] (set! f0-1 (gpr->fpr v1-17)) [v1: float ] -> [] + lw v1, *TARGET-bank*(s7) ;; [ 53] (set! v1-18 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f1, 144(v1) ;; [ 54] (set! f1-0 (l.f (+ v1-18 144))) [v1: target-bank ] -> [] + c.lt.s f1, f0 ;; [ 55] (b! (<.s f1-0 f0-1) L258 (set! v1-19 #t)) [] -> [v1: symbol ] + bc1t L258 + daddiu v1, s7, 8 + +B10: + or v1, s7, r0 ;; [ 56] (set! v1-19 #f) [] -> [v1: '#f ] +B11: +L258: + beql s7, v1, L259 ;; [ 57] (bl! (not v1-19) L259 (no-delay!)) [v1: symbol ] -> [] +B12: + or v1, v1, r0 ;; [ 58] (set! v1-20 v1-19) [v1: symbol ] -> [v1: symbol ] + +B13: + daddiu v1, s7, 8 ;; [ 59] (set! v1-21 #t) [] -> [v1: symbol ] + lwu a0, 108(s6) ;; [ 60] (set! a0-11 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 268(a0) ;; [ 61] (set! a0-12 (l.d (+ a0-11 268))) [a0: control-info ] -> [a0: cshape-moving-flags ] + andi a0, a0, 1024 ;; [ 62] (set! a0-13 (logand a0-12 1024)) + ;; [a0: cshape-moving-flags ] -> [a0: cshape-moving-flags ] + movn v1, s7, a0 ;; [ 63] (cmove-#f-nonzero v1-20 a0-13 v1-21) + ;; [v1: symbol a0: cshape-moving-flags ] -> [v1: symbol ] +B14: +L259: + beq s7, v1, L260 ;; [ 64] (b! (not v1-20) L260 (set! v1-22 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B15: + lw t9, enter-state(s7) ;; [ 65] (set! t9-2 enter-state) [] -> [t9: ] + mfc1 a0, f0 ;; [ 66] (set! a0-14 (fpr->gpr f0-1)) [] -> [a0: float ] + lw v1, target-hit-ground-hard(s7);; [ 67] (set! v1-23 target-hit-ground-hard) [] -> [v1: (state float target) ] + sw v1, 72(s6) ;; [ 68] (s.w! (+ self 72) v1-23) [v1: (state float target) s6: target ] -> [] + jalr ra, t9 ;; [ 69] (call! a0-14) [a0: float t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 70] (set! v1-24 v0-2) [v0: object ] -> [v1: object ] +B16: +L260: + daddiu v1, s7, stuck ;; [ 71] (set! v1-25 'stuck) [] -> [v1: symbol ] + bne gp, v1, L261 ;; [ 72] (b! (!= arg0 v1-25) L261 (nop!)) [v1: symbol gp: symbol ] -> [] + sll r0, r0, 0 + +B17: + or v1, s7, r0 ;; [ 73] (set! v1-26 #f) [] -> [v1: '#f ] + beq r0, r0, L262 ;; [ 74] (b! #t L262 (nop!)) [] -> [] + sll r0, r0, 0 + +B18: +L261: + lw t9, target-land-effect(s7);; [ 75] (set! t9-3 target-land-effect) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 76] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 77] (set! v1-27 v0-3) [v0: none ] -> [v1: none ] +B19: +L262: + lwu v1, 108(s6) ;; [ 78] (set! v1-28 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sd r0, 1668(v1) ;; [ 79] (s.d! (+ v1-28 1668) 0) [v1: control-info ] -> [] + lwu v1, 108(s6) ;; [ 80] (set! v1-29 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sd r0, 1684(v1) ;; [ 81] (s.d! (+ v1-29 1684) 0) [v1: control-info ] -> [] + lwu v1, 108(s6) ;; [ 82] (set! v1-30 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 412(v1) ;; [ 83] (set! f0-2 (l.f (+ v1-30 412))) [v1: control-info ] -> [] + lw v1, *TARGET-bank*(s7) ;; [ 84] (set! v1-31 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f1, 188(v1) ;; [ 85] (set! f1-1 (l.f (+ v1-31 188))) [v1: target-bank ] -> [] + c.lt.s f0, f1 ;; [ 86] (b! (<.s f0-2 f1-1) L263 (set! v1-32 #f)) [] -> [v1: '#f ] + bc1t L263 + or v1, s7, r0 + +B20: + lw t9, set-forward-vel(s7);; [ 87] (set! t9-4 set-forward-vel) [] -> [t9: (function float vector :behavior target) ] + lui v1, L814 ;; [ 88] (set! v1-33 L814) [] -> [v1: ] + ori v1, v1, L814 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 89] (set! a0-15 (l.w v1-33)) [v1: ] -> [a0: int ] + jalr ra, t9 ;; [ 90] (call! a0-15) + ;; [a0: int t9: (function float vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 91] (set! v1-34 v0-4) [v0: vector ] -> [v1: vector ] +B21: +L263: + addiu v1, r0, 1 ;; [ 92] (set! v1-35 1) [] -> [v1: ] + lwu a0, 108(s6) ;; [ 93] (set! a0-16 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 260(a0) ;; [ 94] (set! a0-17 (l.wu (+ a0-16 260))) [a0: control-info ] -> [a0: pat-surface ] + dsll32 a0, a0, 20 ;; [ 95] (set! a0-18 (sll a0-17 52)) [a0: pat-surface ] -> [a0: ( << 52) ] + dsrl32 a0, a0, 26 ;; [ 96] (set! a0-19 (srl a0-18 58)) [a0: ( << 52) ] -> [a0: pat-material ] + beq a0, v1, L264 ;; [ 97] (b! (= a0-19 v1-35) L264 (set! v1-36 #f)) + ;; [v1: a0: pat-material ] -> [v1: '#f ] + or v1, s7, r0 + +B22: + lw t9, delete-back-vel(s7);; [ 98] (set! t9-5 delete-back-vel) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 99] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [100] (set! v1-37 v0-5) [v0: none ] -> [v1: none ] +B23: +L264: + lw v1, *walk-mods*(s7) ;; [101] (set! v1-38 *walk-mods*) [] -> [v1: surface ] + lwu a0, 108(s6) ;; [102] (set! a0-20 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sw v1, 656(a0) ;; [103] (s.w! (+ a0-20 656) v1-38) [v1: surface a0: control-info ] -> [] + lwu gp, 152(s6) ;; [104] (set! gp-1 (l.wu (+ self 152))) [s6: target ] -> [gp: water-control ] + lwu v1, -4(gp) ;; [105] (set! v1-39 (l.wu (+ gp-1 -4))) + ;; [gp: water-control ] -> [v1: ] + lwu s5, 60(v1) ;; [106] (set! s5-0 (l.wu (+ v1-39 60))) + ;; [v1: ] -> [s5: ] + lw t9, lerp-scale(s7) ;; [107] (set! t9-6 lerp-scale) [] -> [t9: (function float float float float float float) ] + lui v1, L814 ;; [108] (set! v1-40 L814) [] -> [v1: ] + ori v1, v1, L814 + addu v1, fp, v1 + lw a0, 0(v1) ;; [109] (set! a0-21 (l.w v1-40)) [v1: ] -> [a0: int ] + lui v1, L726 ;; [110] (set! v1-41 L726) [] -> [v1: ] + ori v1, v1, L726 + addu v1, fp, v1 + lw a1, 0(v1) ;; [111] (set! a1-5 (l.w v1-41)) [v1: ] -> [a1: int ] + lwu v1, 108(s6) ;; [112] (set! v1-42 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 412(v1) ;; [113] (set! f0-3 (l.f (+ v1-42 412))) [v1: control-info ] -> [] + mfc1 a2, f0 ;; [114] (set! a2-4 (fpr->gpr f0-3)) [] -> [a2: meters ] + lui v1, L732 ;; [115] (set! v1-43 L732) [] -> [v1: ] + ori v1, v1, L732 + addu v1, fp, v1 + lw a3, 0(v1) ;; [116] (set! a3-2 (l.w v1-43)) [v1: ] -> [a3: int ] + lui v1, L734 ;; [117] (set! v1-44 L734) [] -> [v1: ] + ori v1, v1, L734 + addu v1, fp, v1 + lw t0, 0(v1) ;; [118] (set! t0-0 (l.w v1-44)) [v1: ] -> [t0: int ] + jalr ra, t9 ;; [119] (call! a0-21 a1-5 a2-4 a3-2 t0-0) + ;; [a0: int a1: int a2: meters a3: int t0: int t9: (function float float float float float float) ] -> [v0: float ] + sll v0, ra, 0 + + or a1, v0, r0 ;; [120] (set! a1-6 v0-6) [v0: float ] -> [a1: float ] + addiu a2, r0, 600 ;; [121] (set! a2-5 600) [] -> [a2: ] + addiu a3, r0, 1500 ;; [122] (set! a3-3 1500) [] -> [a3: ] + or t9, s5, r0 ;; [123] (set! t9-7 s5-0) + ;; [s5: ] -> [t9: ] + or a0, gp, r0 ;; [124] (set! a0-22 gp-1) [gp: water-control ] -> [a0: water-control ] + jalr ra, t9 ;; [125] (call! a0-22 a1-6 a2-5 a3-3) + ;; [a0: water-control a1: float a2: a3: t9: ] -> [v0: none ] + sll v0, ra, 0 + + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 48(sp) + lq s5, 32(sp) + jr ra + daddiu sp, sp, 64 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-hit-ground) + ((arg0 symbol)) + (cond + ((= arg0 'stuck) + ) + ((let ((v1-4 (ja-group))) + (or (= v1-4 (-> self draw art-group data 42)) (= v1-4 (-> self draw art-group data 43))) + ) + (dummy-10 (-> self skel effect) 'group-blue-hit-ground-effect (the-as float 0.0) -1) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.3)) + ) + (else + (let ((f0-1 (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector52) (-> self control trans)) + ) + ) + ) + (if (and (< (-> *TARGET-bank* fall-far) f0-1) + (zero? (logand (-> self control status) (cshape-moving-flags on-water))) + ) + (go target-hit-ground-hard f0-1) ) ) ) ) + (cond + ((= arg0 'stuck) + ) + (else + (target-land-effect) + ) + ) + (set! (-> self control unknown-dword31) 0) + (set! (-> self control unknown-dword33) 0) + (if (>= (-> self control ground-impact-vel) (-> *TARGET-bank* fall-stumble-threshold)) + (set-forward-vel (the-as float 0.0)) + ) + (if (!= (-> self control ground-pat material) (pat-material ice)) + (delete-back-vel) + ) + (set! (-> self control unknown-surface00) *walk-mods*) + (start-bobbing! + (-> self water) + (lerp-scale + (the-as float 0.0) + (the-as float 4096.0) + (-> self control ground-impact-vel) + (the-as float 40960.0) + (the-as float 102400.0) + ) + 600 + 1500 + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-falling) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; Warnings: +;; INFO: Return type mismatch symbol vs none. + + +L265: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lw t9, target-falling-anim(s7);; [ 0] (set! t9-0 target-falling-anim) + ;; [] -> [t9: (function time-frame time-frame symbol :behavior target) ] + addiu a0, r0, -1 ;; [ 1] (set! a0-1 -1) [] -> [a0: ] + addiu a1, r0, 99 ;; [ 2] (set! a1-0 99) [] -> [a1: ] + jalr ra, t9 ;; [ 3] (call! a0-1 a1-0) + ;; [a0: a1: t9: (function time-frame time-frame symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler (code target-falling) ((arg0 symbol)) (target-falling-anim -1 (seconds 0.33)) (none)) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (trans target-falling) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; s6-0: target +L266: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lw t9, target-falling-trans(s7);; [ 0] (set! t9-0 target-falling-trans) + ;; [] -> [t9: (function basic time-frame none :behavior target) ] + lwu v1, 108(s6) ;; [ 1] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lw a0, 2180(v1) ;; [ 2] (set! a0-0 (l.w (+ v1-0 2180))) [v1: control-info ] -> [a0: spool-anim ] + lwu v1, 108(s6) ;; [ 3] (set! v1-1 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lw v1, 2180(v1) ;; [ 4] (set! v1-2 (l.w (+ v1-1 2180))) [v1: control-info ] -> [v1: spool-anim ] + bne v1, s7, L267 ;; [ 5] (b! (!= v1-2 #f) L267 (nop!)) [v1: spool-anim ] -> [] + sll r0, r0, 0 + +B1: + addiu a1, r0, 0 ;; [ 6] (set! a1-0 0) [] -> [a1: ] + beq r0, r0, L268 ;; [ 7] (b! #t L268 (nop!)) [] -> [] + sll r0, r0, 0 + +B2: +L267: + lw v1, *TARGET-bank*(s7) ;; [ 8] (set! v1-3 *TARGET-bank*) [] -> [v1: target-bank ] + ld v1, 556(v1) ;; [ 9] (set! v1-4 (l.d (+ v1-3 556))) [v1: target-bank ] -> [v1: seconds ] + dsra a1, v1, 1 ;; [ 10] (set! a1-0 (sra v1-4 1)) [v1: seconds ] -> [a1: int ] +B3: +L268: + jalr ra, t9 ;; [ 11] (call! a0-0 a1-0) + ;; [a0: spool-anim a1: int t9: (function basic time-frame none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (trans target-falling) + () + (target-falling-trans + (-> self control unknown-spoolanim00) + (the-as time-frame (if (= (-> self control unknown-spoolanim00) #f) + 0 + (/ (the-as int (-> *TARGET-bank* stuck-time)) 2) + ) + ) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-falling) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x00, fp? 0 ra? 0 ep? 1 +;; Warnings: +;; INFO: Return type mismatch time-frame vs none. + +;; a0-0: symbol s6-0: target +B0: +L269: + lw v1, *jump-mods*(s7) ;; [ 0] (set! v1-0 *jump-mods*) [] -> [v1: surface ] + lwu a1, 108(s6) ;; [ 1] (set! a1-0 (l.wu (+ self 108))) [s6: target ] -> [a1: control-info ] + sw v1, 656(a1) ;; [ 2] (s.w! (+ a1-0 656) v1-0) [v1: surface a1: control-info ] -> [] + lwu v1, 108(s6) ;; [ 3] (set! v1-1 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw a0, 2180(v1) ;; [ 4] (s.w! (+ v1-1 2180) arg0) [v1: control-info a0: symbol ] -> [] + lw v1, *display*(s7) ;; [ 5] (set! v1-2 *display*) [] -> [v1: display ] + ld v0, 780(v1) ;; [ 6] (set! v0-0 (l.d (+ v1-2 780))) [v1: display ] -> [v0: time-frame ] + sd v0, 164(s6) ;; [ 7] (s.d! (+ self 164) v0-0) [v0: time-frame s6: target ] -> [] + jr ra + daddu sp, sp, r0 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-falling) + ((arg0 symbol)) + (set! (-> self control unknown-surface00) *jump-mods*) + (set! (-> self control unknown-uint20) (the-as uint arg0)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-duck-high-jump-jump) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x50, fp? 1 ra? 1 ep? 1 + ;gprs: gp s5 + ;fprs: f30 f28 f26 f24 f22 f20 +;; v1-26: float a2-0: symbol s5-0: joint-control-channel +;; s6-0: target f22-1: float f24-0: float +;; f26-0: float f28-0: float f30-0: float +L270: + daddiu sp, sp, -80 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s5, 16(sp) + sq gp, 32(sp) + swc1 f20, 48(sp) + swc1 f22, 52(sp) + swc1 f24, 56(sp) + swc1 f26, 60(sp) + swc1 f28, 64(sp) + swc1 f30, 68(sp) +B0: + or gp, a2, r0 ;; [ 0] (set! arg2 arg2) [a2: symbol ] -> [gp: symbol ] + daddiu v1, s7, launch ;; [ 1] (set! v1-0 'launch) [] -> [v1: symbol ] + bne gp, v1, L271 ;; [ 2] (b! (!= arg2 v1-0) L271 (nop!)) [v1: symbol gp: symbol ] -> [] + sll r0, r0, 0 + +B1: + lui v1, L728 ;; [ 3] (set! v1-1 L728) [] -> [v1: ] + ori v1, v1, L728 + addu v1, fp, v1 + lw v1, 0(v1) ;; [ 4] (set! v1-2 (l.w v1-1)) [v1: ] -> [v1: int ] + beq r0, r0, L272 ;; [ 5] (b! #t L272 (nop!)) [] -> [] + sll r0, r0, 0 + +B2: +L271: + lui v1, L727 ;; [ 6] (set! v1-3 L727) [] -> [v1: ] + ori v1, v1, L727 + addu v1, fp, v1 + lw v1, 0(v1) ;; [ 7] (set! v1-2 (l.w v1-3)) [v1: ] -> [v1: int ] +B3: +L272: + mtc1 f30, v1 ;; [ 8] (set! f30-0 (gpr->fpr (the-as float v1-2))) [v1: float ] -> [] + lui v1, L786 ;; [ 9] (set! v1-4 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f28, 0(v1) ;; [ 10] (set! f28-0 (l.f v1-4)) [v1: ] -> [] +B4: +L273: + lwu v1, 108(s6) ;; [ 11] (set! v1-5 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 12] (set! v1-6 (l.wu (+ v1-5 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 13] (set! a0-1 (+ v1-6 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 14] (set! v1-7 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 15] (set! v1-8 (+ v1-7 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [ 16] (set! f0-0 (vec3dot a0-1 v1-8)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [ 17] (set! v1-9 (fpr->gpr f0-0)) [] -> [v1: float ] + mtc1 f24, v1 ;; [ 18] (set! f24-0 (gpr->fpr v1-9)) [v1: float ] -> [] + lw t9, ja-aframe-num(s7) ;; [ 19] (set! t9-0 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 20] (set! a0-2 0) [] -> [a0: ] + jalr ra, t9 ;; [ 21] (call! a0-2) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 22] (set! f0-1 (gpr->fpr v0-0)) [v0: float ] -> [] + sub.s f26, f30, f0 ;; [ 23] (set! f26-0 (-.s f30-0 f0-1)) [] -> [] + lui v1, L750 ;; [ 24] (set! v1-10 L750) [] -> [v1: ] + ori v1, v1, L750 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 25] (set! f0-2 (l.f v1-10)) [v1: ] -> [] + min.s f22, f0, f26 ;; [ 26] (set! f22-0 (min.s f0-2 f26-0)) [] -> [] + lui v1, L740 ;; [ 27] (set! v1-11 L740) [] -> [v1: ] + ori v1, v1, L740 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 28] (set! f0-3 (l.f v1-11)) [v1: ] -> [] + mul.s f20, f0, f26 ;; [ 29] (set! f20-0 (*.s f0-3 f26-0)) [] -> [] + lw t9, time-to-apex(s7) ;; [ 30] (set! t9-1 time-to-apex) [] -> [t9: (function float float int) ] + mfc1 a0, f24 ;; [ 31] (set! a0-3 (fpr->gpr f24-0)) [] -> [a0: float ] + lui v1, L730 ;; [ 32] (set! v1-12 L730) [] -> [v1: ] + ori v1, v1, L730 + addu v1, fp, v1 + lw a1, 0(v1) ;; [ 33] (set! a1-1 (l.w v1-12)) [v1: ] -> [a1: int ] + jalr ra, t9 ;; [ 34] (call! a0-3 a1-1) + ;; [a0: float a1: int t9: (function float float int) ] -> [v0: int ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 35] (set! f0-4 (gpr->fpr v0-1)) [v0: int ] -> [] + cvt.s.w f0, f0 ;; [ 36] (set! f0-5 (i2f f0-4)) [] -> [] + div.s f0, f20, f0 ;; [ 37] (set! f0-6 (/.s f20-0 f0-5)) [] -> [] + min.s f22, f22, f0 ;; [ 38] (set! f22-1 (min.s f22-0 f0-6)) [] -> [] + lwu v1, 120(s6) ;; [ 39] (set! v1-13 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 40] (set! v1-14 (l.wu (+ v1-13 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s5, r0, v1 ;; [ 41] (set! s5-0 (+ v1-14 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + lwu v1, 12(s5) ;; [ 42] (set! v1-15 (l.wu (+ s5-0 12))) + ;; [s5: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 43] (set! v1-16 (l.wu (+ v1-15 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 44] (set! v1-17 (l.h (+ v1-16 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 45] (set! v1-18 (+ v1-17 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 46] (set! f0-7 (gpr->fpr v1-18)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 47] (set! f0-8 (i2f f0-7)) [] -> [] + swc1 f0, 24(s5) ;; [ 48] (s.f! (+ s5-0 24) f0-8) [s5: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [ 49] (set! f0-9 0) [] -> [] + c.lt.s f0, f24 ;; [ 50] (b! (<.s f0-9 f24-0) L274 (set! v1-19 #t)) [] -> [v1: symbol ] + bc1t L274 + daddiu v1, s7, 8 + +B5: + or v1, s7, r0 ;; [ 51] (set! v1-19 #f) [] -> [v1: '#f ] +B6: +L274: + beql s7, v1, L275 ;; [ 52] (bl! (not v1-19) L275 (no-delay!)) [v1: symbol ] -> [] +B7: + or v1, v1, r0 ;; [ 53] (set! v1-20 v1-19) [v1: symbol ] -> [v1: symbol ] + +B8: + mtc1 f0, r0 ;; [ 54] (set! f0-10 0) [] -> [] + c.lt.s f0, f26 ;; [ 55] (b! (<.s f0-10 f26-0) L275 (set! v1-20 #t)) [] -> [v1: symbol ] + bc1t L275 + daddiu v1, s7, 8 + +B9: + or v1, s7, r0 ;; [ 56] (set! v1-20 #f) [] -> [v1: '#f ] +B10: +L275: + beq s7, v1, L277 ;; [ 57] (b! (not v1-20) L277 (nop!)) [v1: symbol ] -> [] + sll r0, r0, 0 + +B11: + daddiu v1, s7, launch ;; [ 58] (set! v1-21 'launch) [] -> [v1: symbol ] + bne gp, v1, L276 ;; [ 59] (b! (!= arg2 v1-21) L276 (set! v1-22 #f)) [v1: symbol gp: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B12: + lw t9, lerp(s7) ;; [ 60] (set! t9-2 lerp) [] -> [t9: (function float float float float) ] + mfc1 a0, f28 ;; [ 61] (set! a0-4 (fpr->gpr f28-0)) [] -> [a0: float ] + lui v1, L749 ;; [ 62] (set! v1-23 L749) [] -> [v1: ] + ori v1, v1, L749 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 63] (set! f0-11 (l.f v1-23)) [v1: ] -> [] + mul.s f0, f0, f22 ;; [ 64] (set! f0-12 (*.s f0-11 f22-1)) [] -> [] + mfc1 a1, f0 ;; [ 65] (set! a1-2 (fpr->gpr f0-12)) [] -> [a1: float ] + lui v1, L753 ;; [ 66] (set! v1-24 L753) [] -> [v1: ] + ori v1, v1, L753 + addu v1, fp, v1 + lw a2, 0(v1) ;; [ 67] (set! a2-1 (l.w v1-24)) [v1: ] -> [a2: int ] + jalr ra, t9 ;; [ 68] (call! a0-4 a1-2 a2-1) + ;; [a0: float a1: float a2: int t9: (function float float float float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f28, v0 ;; [ 69] (set! f28-0 (gpr->fpr v0-2)) [v0: float ] -> [] + mfc1 v1, f28 ;; [ 70] (set! v1-25 (fpr->gpr f28-0)) [] -> [v1: float ] +B13: +L276: + mfc1 v1, f22 ;; [ 71] (set! v1-26 (fpr->gpr f22-1)) [] -> [v1: float ] + beq r0, r0, L278 ;; [ 72] (b! #t L278 (nop!)) [] -> [] + sll r0, r0, 0 + +B14: +L277: + mfc1 v1, f28 ;; [ 73] (set! v1-26 (fpr->gpr f28-0)) [] -> [v1: float ] +B15: +L278: + mtc1 f0, v1 ;; [ 74] (set! f0-13 (gpr->fpr v1-26)) [v1: float ] -> [] + swc1 f0, 28(s5) ;; [ 75] (s.f! (+ s5-0 28) f0-13) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 76] (set! t9-3 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [ 77] (set! a1-3 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [ 78] (set! a2-2 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s5, r0 ;; [ 79] (set! a0-5 s5-0) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [ 80] (call! a0-5 a1-3 a2-2) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 81] (set! v1-27 v0-3) [v0: int ] -> [v1: int ] + lwu s6, 44(s6) ;; [ 82] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lw t9, ja-done?(s7) ;; [ 83] (set! t9-4 ja-done?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 84] (set! a0-6 0) [] -> [a0: ] + jalr ra, t9 ;; [ 85] (call! a0-6) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L273 ;; [ 86] (b! (not v0-4) L273 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B16: + or v1, s7, r0 ;; [ 87] (set! v1-28 #f) [] -> [v1: '#f ] + daddiu v1, s7, launch ;; [ 88] (set! v1-29 'launch) [] -> [v1: symbol ] + bne gp, v1, L280 ;; [ 89] (b! (!= arg2 v1-29) L280 (nop!)) [v1: symbol gp: symbol ] -> [] + sll r0, r0, 0 + +B17: + lwu v1, 120(s6) ;; [ 90] (set! v1-30 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 91] (set! v1-31 (l.wu (+ v1-30 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 92] (set! a0-7 (+ v1-31 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 93] (set! v1-32 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 94] (set! v1-33 (l.wu (+ v1-32 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 200(v1) ;; [ 95] (set! v1-34 (l.wu (+ v1-33 200))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [ 96] (s.w! (+ a0-7 12) v1-34) [v1: art-element a0: joint-control-channel ] -> [] + swc1 f28, 24(a0) ;; [ 97] (s.f! (+ a0-7 24) f28-0) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [ 98] (set! f0-14 0) [] -> [] + swc1 f0, 16(a0) ;; [ 99] (s.f! (+ a0-7 16) f0-14) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [100] (set! t9-5 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [101] (set! v1-35 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [102] (set! v1-36 (l.wu (+ v1-35 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 200(v1) ;; [103] (set! a1-4 (l.wu (+ v1-36 200))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-loop!(s7) ;; [104] (set! a2-3 num-func-loop!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [105] (call! a0-7 a1-4 a2-3) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [106] (set! v1-37 v0-5) [v0: int ] -> [v1: int ] +B18: +L279: + lwu s6, 44(s6) ;; [107] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [108] (set! v1-38 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [109] (set! v1-39 (l.wu (+ v1-38 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [110] (set! a0-8 (+ v1-39 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [111] (set! v1-40 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [112] (set! v1-41 (l.wu (+ v1-40 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 200(v1) ;; [113] (set! v1-42 (l.wu (+ v1-41 200))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [114] (s.w! (+ a0-8 12) v1-42) [v1: art-element a0: joint-control-channel ] -> [] + swc1 f28, 24(a0) ;; [115] (s.f! (+ a0-8 24) f28-0) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [116] (set! t9-6 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [117] (set! v1-43 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [118] (set! v1-44 (l.wu (+ v1-43 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 200(v1) ;; [119] (set! a1-5 (l.wu (+ v1-44 200))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-loop!(s7) ;; [120] (set! a2-4 num-func-loop!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [121] (call! a0-8 a1-5 a2-4) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [122] (set! v1-45 v0-6) [v0: int ] -> [v1: int ] + beq r0, r0, L279 ;; [123] (b! #t L279 (nop!)) [] -> [] + sll r0, r0, 0 + +B19: + or v1, s7, r0 ;; [124] (set! v1-46 #f) [] -> [v1: ] + beq r0, r0, L282 ;; [125] (b! #t L282 (nop!)) [] -> [] + sll r0, r0, 0 + +B20: +L280: + lwu v1, 120(s6) ;; [126] (set! v1-47 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [127] (set! v1-48 (l.wu (+ v1-47 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [128] (set! a0-9 (+ v1-48 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [129] (set! v1-49 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [130] (set! v1-50 (l.wu (+ v1-49 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 180(v1) ;; [131] (set! v1-51 (l.wu (+ v1-50 180))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [132] (s.w! (+ a0-9 12) v1-51) [v1: art-element a0: joint-control-channel ] -> [] + lui v1, L786 ;; [133] (set! v1-52 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [134] (set! f0-15 (l.f v1-52)) [v1: ] -> [] + swc1 f0, 24(a0) ;; [135] (s.f! (+ a0-9 24) f0-15) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [136] (set! f0-16 0) [] -> [] + swc1 f0, 16(a0) ;; [137] (s.f! (+ a0-9 16) f0-16) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [138] (set! t9-7 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [139] (set! v1-53 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [140] (set! v1-54 (l.wu (+ v1-53 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 180(v1) ;; [141] (set! a1-6 (l.wu (+ v1-54 180))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-loop!(s7) ;; [142] (set! a2-5 num-func-loop!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [143] (call! a0-9 a1-6 a2-5) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [144] (set! v1-55 v0-7) [v0: int ] -> [v1: int ] +B21: +L281: + lwu s6, 44(s6) ;; [145] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [146] (set! v1-56 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [147] (set! v1-57 (l.wu (+ v1-56 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [148] (set! a0-10 (+ v1-57 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [149] (set! v1-58 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [150] (set! v1-59 (l.wu (+ v1-58 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 180(v1) ;; [151] (set! v1-60 (l.wu (+ v1-59 180))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [152] (s.w! (+ a0-10 12) v1-60) [v1: art-element a0: joint-control-channel ] -> [] + lui v1, L786 ;; [153] (set! v1-61 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [154] (set! f0-17 (l.f v1-61)) [v1: ] -> [] + swc1 f0, 24(a0) ;; [155] (s.f! (+ a0-10 24) f0-17) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [156] (set! t9-8 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [157] (set! v1-62 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [158] (set! v1-63 (l.wu (+ v1-62 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 180(v1) ;; [159] (set! a1-7 (l.wu (+ v1-63 180))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-loop!(s7) ;; [160] (set! a2-6 num-func-loop!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [161] (call! a0-10 a1-7 a2-6) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [162] (set! v1-64 v0-8) [v0: int ] -> [v1: int ] + beq r0, r0, L281 ;; [163] (b! #t L281 (nop!)) [] -> [] + sll r0, r0, 0 + +B22: + or v1, s7, r0 ;; [164] (set! v1-65 #f) [] -> [v1: ] +B23: +L282: + or v0, r0, r0 ;; [165] (set! v0-9 0) [] -> [v0: ] + ld ra, 0(sp) + ld fp, 8(sp) + lwc1 f30, 68(sp) + lwc1 f28, 64(sp) + lwc1 f26, 60(sp) + lwc1 f24, 56(sp) + lwc1 f22, 52(sp) + lwc1 f20, 48(sp) + lq gp, 32(sp) + lq s5, 16(sp) + jr ra + daddiu sp, sp, 80 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-duck-high-jump-jump) + ((arg0 float) (arg1 float) (arg2 symbol)) + (let ((f30-0 (the-as float (if (= arg2 'launch) + 110.0 + 35.0 + ) + ) + ) + (f28-0 1.0) + ) + (until (ja-done? 0) + (let* ((f24-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (f26-0 (- f30-0 (ja-aframe-num 0))) + (f22-1 (fmin (fmin 3.0 f26-0) (/ (* 5.0 f26-0) (the float (time-to-apex f24-0 (the-as float -245760.0)))))) + (s5-0 (-> self skel root-channel 0)) + ) + (set! (-> s5-0 param 0) (the float (+ (-> s5-0 frame-group data 0 length) -1))) + (let ((v1-26 (cond + ((and (< 0.0 f24-0) (< 0.0 f26-0)) + (if (= arg2 'launch) + (set! f28-0 (lerp f28-0 (* 4.0 f22-1) (the-as float 0.25))) + ) + f22-1 + ) + (else + f28-0 + ) + ) + ) + ) + (set! (-> s5-0 param 1) v1-26) + ) + (joint-control-channel-group-eval! s5-0 (the-as art-joint-anim #f) num-func-seek!) + ) + (suspend) + ) + (cond + ((= arg2 'launch) + (ja-no-eval :group! (-> self draw art-group data 43) :num! (loop! f28-0) :frame-num 0.0) + (loop + (suspend) + (ja :group! (-> self draw art-group data 43) :num! (loop! f28-0)) + ) + ) + (else + (ja-no-eval :group! (-> self draw art-group data 38) :num! (loop!) :frame-num 0.0) + (loop + (suspend) + (ja :group! (-> self draw art-group data 38) :num! (loop!)) + ) + ) + ) + ) + (the-as none 0) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-duck-high-jump-jump) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x60, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 + ;gprs: gp s5 s4 s3 s2 +;; Warnings: +;; INFO: Return type mismatch surface vs none. + +;; a0-0: float a1-0: float a2-0: symbol s6-0: target +L283: + daddiu sp, sp, -96 + sd ra, 0(sp) + sq s2, 16(sp) + sq s3, 32(sp) + sq s4, 48(sp) + sq s5, 64(sp) + sq gp, 80(sp) +B0: + or s5, a0, r0 ;; [ 0] (set! arg0 arg0) [a0: float ] -> [s5: float ] + or s4, a1, r0 ;; [ 1] (set! arg1 arg1) [a1: float ] -> [s4: float ] + or gp, a2, r0 ;; [ 2] (set! arg2 arg2) [a2: symbol ] -> [gp: symbol ] + lw v1, *display*(s7) ;; [ 3] (set! v1-0 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 4] (set! v1-1 (l.d (+ v1-0 780))) [v1: display ] -> [v1: time-frame ] + sd v1, 164(s6) ;; [ 5] (s.d! (+ self 164) v1-1) [v1: time-frame s6: target ] -> [] + lw s3, sound-play-by-name(s7);; [ 6] (set! s3-0 sound-play-by-name) + ;; [] -> [s3: (function sound-name sound-id int int int sound-group symbol sound-id) ] + lui v1, 28781 ;; [ 7] (set! v1-2 #x706d756a) [] -> [v1: ] + ori v1, v1, 30058 + pcpyld s2, r0, v1 ;; [ 8] (set! s2-0 (pcypld 0 v1-2)) [v1: ] -> [s2: uint ] + lw t9, new-sound-id(s7) ;; [ 9] (set! t9-0 new-sound-id) [] -> [t9: (function sound-id) ] + jalr ra, t9 ;; [ 10] (call!) [t9: (function sound-id) ] -> [v0: sound-id ] + sll v0, ra, 0 + + or a1, v0, r0 ;; [ 11] (set! a1-1 v0-0) [v0: sound-id ] -> [a1: sound-id ] + addiu a2, r0, 819 ;; [ 12] (set! a2-1 819) [] -> [a2: ] + addiu a3, r0, -609 ;; [ 13] (set! a3-0 -609) [] -> [a3: ] + addiu t0, r0, 0 ;; [ 14] (set! t0-0 0) [] -> [t0: ] + addiu t1, r0, 1 ;; [ 15] (set! t1-0 1) [] -> [t1: ] + daddiu t2, s7, #t ;; [ 16] (set! t2-0 #t) [] -> [t2: symbol ] + or t9, s3, r0 ;; [ 17] (set! t9-1 s3-0) + ;; [s3: (function sound-name sound-id int int int sound-group symbol sound-id) ] -> [t9: (function sound-name sound-id int int int sound-group symbol sound-id) ] + por a0, s2, r0 ;; [ 18] (set! a0-1 s2-0) [s2: uint ] -> [a0: uint ] + jalr ra, t9 ;; [ 19] (call! a0-1 a1-1 a2-1 a3-0 t0-0 t1-0 t2-0) + ;; [a0: uint a1: sound-id a2: a3: t0: t1: t2: symbol t9: (function sound-name sound-id int int int sound-group symbol sound-id) ] -> [v0: sound-id ] + sll v0, ra, 0 + + lw t9, init-var-jump(s7) ;; [ 20] (set! t9-2 init-var-jump) + ;; [] -> [t9: (function float float vector vector vector vector :behavior target) ] + daddiu a2, s7, #t ;; [ 21] (set! a2-2 #t) [] -> [a2: symbol ] + or a3, s7, r0 ;; [ 22] (set! a3-1 #f) [] -> [a3: '#f ] + lwu v1, 108(s6) ;; [ 23] (set! v1-3 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu t0, v1, 60 ;; [ 24] (set! t0-1 (+ v1-3 60)) [v1: control-info ] -> [t0: vector ] + or a0, s5, r0 ;; [ 25] (set! a0-2 arg0) [s5: float ] -> [a0: float ] + or a1, s4, r0 ;; [ 26] (set! a1-2 arg1) [s4: float ] -> [a1: float ] + jalr ra, t9 ;; [ 27] (call! a0-2 a1-2 a2-2 a3-1 t0-1) + ;; [a0: float a1: float a2: symbol a3: '#f t0: vector t9: (function float float vector vector vector vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + addiu v1, r0, -8 ;; [ 28] (set! v1-4 -8) [] -> [v1: ] + lwu a0, 108(s6) ;; [ 29] (set! a0-3 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 268(a0) ;; [ 30] (set! a0-4 (l.d (+ a0-3 268))) [a0: control-info ] -> [a0: cshape-moving-flags ] + and v1, v1, a0 ;; [ 31] (set! v1-5 (logand v1-4 a0-4)) + ;; [v1: a0: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + lwu a0, 108(s6) ;; [ 32] (set! a0-5 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sd v1, 268(a0) ;; [ 33] (s.d! (+ a0-5 268) v1-5) [v1: cshape-moving-flags a0: control-info ] -> [] + daddiu v1, s7, launch ;; [ 34] (set! v1-6 'launch) [] -> [v1: symbol ] + bne gp, v1, L284 ;; [ 35] (b! (!= arg2 v1-6) L284 (nop!)) [v1: symbol gp: symbol ] -> [] + sll r0, r0, 0 + +B1: + mtc1 f0, r0 ;; [ 36] (set! f0-0 0) [] -> [] + lwu v1, 184(s6) ;; [ 37] (set! v1-7 (l.wu (+ self 184))) [s6: target ] -> [v1: joint-mod ] + swc1 f0, 116(v1) ;; [ 38] (s.f! (+ v1-7 116) f0-0) [v1: joint-mod ] -> [] + lw v0, *launch-jump-mods*(s7);; [ 39] (set! v0-3 *launch-jump-mods*) [] -> [v0: surface ] + lwu v1, 108(s6) ;; [ 40] (set! v1-8 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw v0, 656(v1) ;; [ 41] (s.w! (+ v1-8 656) v0-3) [v0: surface v1: control-info ] -> [] + beq r0, r0, L285 ;; [ 42] (b! #t L285 (nop!)) [] -> [] + sll r0, r0, 0 + +B2: +L284: + lw v0, *high-jump-mods*(s7);; [ 43] (set! v0-4 *high-jump-mods*) [] -> [v0: surface ] + lwu v1, 108(s6) ;; [ 44] (set! v1-9 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw v0, 656(v1) ;; [ 45] (s.w! (+ v1-9 656) v0-4) [v0: surface v1: control-info ] -> [] +B3: +L285: + ld ra, 0(sp) + lq gp, 80(sp) + lq s5, 64(sp) + lq s4, 48(sp) + lq s3, 32(sp) + lq s2, 16(sp) + jr ra + daddiu sp, sp, 96 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-duck-high-jump-jump) + ((arg0 float) (arg1 float) (arg2 symbol)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (sound-play "jump" :vol 80 :pitch -0.4) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (cond + ((= arg2 'launch) + (set! (-> self neck flex-blend) 0.0) + (set! (-> self control unknown-surface00) *launch-jump-mods*) + ) + (else + (set! (-> self control unknown-surface00) *high-jump-mods*) + ) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-duck-high-jump) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x50, fp? 1 ra? 1 ep? 1 + ;gprs: gp s5 s4 s3 +;; Warnings: +;; INFO: Return type mismatch object vs none. + +;; a0-0: float a1-0: float a2-0: symbol s6-0: target +L286: + daddiu sp, sp, -80 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s3, 16(sp) + sq s4, 32(sp) + sq s5, 48(sp) + sq gp, 64(sp) +B0: + or gp, a0, r0 ;; [ 0] (set! arg0 arg0) [a0: float ] -> [gp: float ] + or s5, a1, r0 ;; [ 1] (set! arg1 arg1) [a1: float ] -> [s5: float ] + or s4, a2, r0 ;; [ 2] (set! arg2 arg2) [a2: symbol ] -> [s4: symbol ] + lwu v1, 120(s6) ;; [ 3] (set! v1-0 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 4] (set! v1-1 (l.w (+ v1-0 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 5] (b! (<=0.si v1-1) L287 (set! v1-2 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L287 + or v1, s7, r0 + +B1: + lwu v1, 120(s6) ;; [ 6] (set! v1-3 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 7] (set! v1-4 (l.wu (+ v1-3 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 8] (set! v1-2 (l.wu (+ v1-4 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B2: +L287: + lwu a0, 116(s6) ;; [ 9] (set! a0-1 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 10] (set! a0-2 (l.wu (+ a0-1 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 152(a0) ;; [ 11] (set! a0-3 (l.wu (+ a0-2 152))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 12] (set! a0-4 (= v1-2 a0-3)) [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L288 ;; [ 13] (bl! (not a0-4) L288 (no-delay!)) [a0: symbol ] -> [] +B3: + or v1, a0, r0 ;; [ 14] (set! v1-5 a0-4) [a0: symbol ] -> [v1: symbol ] + +B4: + lwu v1, 120(s6) ;; [ 15] (set! v1-6 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 16] (set! v1-7 (l.wu (+ v1-6 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu v1, r0, v1 ;; [ 17] (set! v1-8 (+ v1-7 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + lwu a0, 120(s6) ;; [ 18] (set! a0-5 (l.wu (+ self 120))) [s6: target ] -> [a0: joint-control ] + daddiu a0, a0, 44 ;; [ 19] (set! a0-6 (+ a0-5 44)) + ;; [a0: joint-control ] -> [a0: (inline-array joint-control-channel) ] + dsubu a0, v1, a0 ;; [ 20] (set! v1-5 (= v1-8 a0-6)) + ;; [v1: joint-control-channel a0: (inline-array joint-control-channel) ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 +B5: +L288: + bne s7, v1, L289 ;; [ 21] (b! (truthy v1-5) L289 (set! v1-9 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B6: + lw t9, ja-channel-push!(s7);; [ 22] (set! t9-0 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [ 23] (set! a0-7 1) [] -> [a0: ] + addiu a1, r0, 12 ;; [ 24] (set! a1-1 12) [] -> [a1: ] + jalr ra, t9 ;; [ 25] (call! a0-7 a1-1) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 26] (set! v1-10 v0-0) [v0: int ] -> [v1: int ] +B7: +L289: + or v1, s4, r0 ;; [ 27] (set! v1-11 arg2) [s4: symbol ] -> [v1: symbol ] + daddiu a0, s7, launch ;; [ 28] (set! a0-8 'launch) [] -> [a0: symbol ] + bne v1, a0, L291 ;; [ 29] (b! (!= v1-11 a0-8) L291 (nop!)) [v1: symbol a0: symbol ] -> [] + sll r0, r0, 0 + +B8: + lwu v1, 120(s6) ;; [ 30] (set! v1-12 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 31] (set! v1-13 (l.wu (+ v1-12 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s3, r0, v1 ;; [ 32] (set! s3-0 (+ v1-13 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s3: joint-control-channel ] + lwu v1, 116(s6) ;; [ 33] (set! v1-14 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 34] (set! v1-15 (l.wu (+ v1-14 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 196(v1) ;; [ 35] (set! v1-16 (l.wu (+ v1-15 196))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(s3) ;; [ 36] (s.w! (+ s3-0 12) v1-16) [v1: art-element s3: joint-control-channel ] -> [] + lw t9, ja-aframe(s7) ;; [ 37] (set! t9-1 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L739 ;; [ 38] (set! v1-17 L739) [] -> [v1: ] + ori v1, v1, L739 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 39] (set! a0-9 (l.w v1-17)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [ 40] (set! a1-2 0) [] -> [a1: ] + jalr ra, t9 ;; [ 41] (call! a0-9 a1-2) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 42] (set! f0-0 (gpr->fpr v0-1)) [v0: float ] -> [] + swc1 f0, 24(s3) ;; [ 43] (s.f! (+ s3-0 24) f0-0) [s3: joint-control-channel ] -> [] + lui v1, L786 ;; [ 44] (set! v1-18 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 45] (set! f0-1 (l.f v1-18)) [v1: ] -> [] + swc1 f0, 28(s3) ;; [ 46] (s.f! (+ s3-0 28) f0-1) [s3: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [ 47] (set! f0-2 0) [] -> [] + swc1 f0, 16(s3) ;; [ 48] (s.f! (+ s3-0 16) f0-2) [s3: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [ 49] (set! t9-2 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [ 50] (set! v1-19 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 51] (set! v1-20 (l.wu (+ v1-19 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 196(v1) ;; [ 52] (set! a1-3 (l.wu (+ v1-20 196))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [ 53] (set! a2-1 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s3, r0 ;; [ 54] (set! a0-10 s3-0) [s3: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [ 55] (call! a0-10 a1-3 a2-1) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 56] (set! v1-21 v0-2) [v0: int ] -> [v1: int ] +B9: +L290: + lwu s6, 44(s6) ;; [ 57] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [ 58] (set! v1-22 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 59] (set! v1-23 (l.wu (+ v1-22 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s3, r0, v1 ;; [ 60] (set! s3-1 (+ v1-23 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s3: joint-control-channel ] + lw t9, ja-aframe(s7) ;; [ 61] (set! t9-3 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L739 ;; [ 62] (set! v1-24 L739) [] -> [v1: ] + ori v1, v1, L739 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 63] (set! a0-11 (l.w v1-24)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [ 64] (set! a1-4 0) [] -> [a1: ] + jalr ra, t9 ;; [ 65] (call! a0-11 a1-4) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 66] (set! f0-3 (gpr->fpr v0-3)) [v0: float ] -> [] + swc1 f0, 24(s3) ;; [ 67] (s.f! (+ s3-1 24) f0-3) [s3: joint-control-channel ] -> [] + lui v1, L786 ;; [ 68] (set! v1-25 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 69] (set! f0-4 (l.f v1-25)) [v1: ] -> [] + swc1 f0, 28(s3) ;; [ 70] (s.f! (+ s3-1 28) f0-4) [s3: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 71] (set! t9-4 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [ 72] (set! a1-5 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [ 73] (set! a2-2 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s3, r0 ;; [ 74] (set! a0-12 s3-1) [s3: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [ 75] (call! a0-12 a1-5 a2-2) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 76] (set! v1-26 v0-4) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [ 77] (set! t9-5 ja-done?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 78] (set! a0-13 0) [] -> [a0: ] + jalr ra, t9 ;; [ 79] (call! a0-13) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L290 ;; [ 80] (b! (not v0-5) L290 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B10: + or v1, s7, r0 ;; [ 81] (set! v1-27 #f) [] -> [v1: '#f ] + beq r0, r0, L293 ;; [ 82] (b! #t L293 (nop!)) [] -> [] + sll r0, r0, 0 + +B11: +L291: + lwu v1, 120(s6) ;; [ 83] (set! v1-28 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 84] (set! v1-29 (l.wu (+ v1-28 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s3, r0, v1 ;; [ 85] (set! s3-2 (+ v1-29 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s3: joint-control-channel ] + lwu v1, 116(s6) ;; [ 86] (set! v1-30 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 87] (set! v1-31 (l.wu (+ v1-30 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 192(v1) ;; [ 88] (set! v1-32 (l.wu (+ v1-31 192))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(s3) ;; [ 89] (s.w! (+ s3-2 12) v1-32) [v1: art-element s3: joint-control-channel ] -> [] + lw t9, ja-aframe(s7) ;; [ 90] (set! t9-6 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L739 ;; [ 91] (set! v1-33 L739) [] -> [v1: ] + ori v1, v1, L739 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 92] (set! a0-14 (l.w v1-33)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [ 93] (set! a1-6 0) [] -> [a1: ] + jalr ra, t9 ;; [ 94] (call! a0-14 a1-6) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 95] (set! f0-5 (gpr->fpr v0-6)) [v0: float ] -> [] + swc1 f0, 24(s3) ;; [ 96] (s.f! (+ s3-2 24) f0-5) [s3: joint-control-channel ] -> [] + lui v1, L786 ;; [ 97] (set! v1-34 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 98] (set! f0-6 (l.f v1-34)) [v1: ] -> [] + swc1 f0, 28(s3) ;; [ 99] (s.f! (+ s3-2 28) f0-6) [s3: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [100] (set! f0-7 0) [] -> [] + swc1 f0, 16(s3) ;; [101] (s.f! (+ s3-2 16) f0-7) [s3: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [102] (set! t9-7 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [103] (set! v1-35 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [104] (set! v1-36 (l.wu (+ v1-35 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 192(v1) ;; [105] (set! a1-7 (l.wu (+ v1-36 192))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [106] (set! a2-3 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s3, r0 ;; [107] (set! a0-15 s3-2) [s3: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [108] (call! a0-15 a1-7 a2-3) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [109] (set! v1-37 v0-7) [v0: int ] -> [v1: int ] +B12: +L292: + lwu s6, 44(s6) ;; [110] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [111] (set! v1-38 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [112] (set! v1-39 (l.wu (+ v1-38 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s3, r0, v1 ;; [113] (set! s3-3 (+ v1-39 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s3: joint-control-channel ] + lw t9, ja-aframe(s7) ;; [114] (set! t9-8 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L739 ;; [115] (set! v1-40 L739) [] -> [v1: ] + ori v1, v1, L739 + addu v1, fp, v1 + lw a0, 0(v1) ;; [116] (set! a0-16 (l.w v1-40)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [117] (set! a1-8 0) [] -> [a1: ] + jalr ra, t9 ;; [118] (call! a0-16 a1-8) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [119] (set! f0-8 (gpr->fpr v0-8)) [v0: float ] -> [] + swc1 f0, 24(s3) ;; [120] (s.f! (+ s3-3 24) f0-8) [s3: joint-control-channel ] -> [] + lui v1, L786 ;; [121] (set! v1-41 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [122] (set! f0-9 (l.f v1-41)) [v1: ] -> [] + swc1 f0, 28(s3) ;; [123] (s.f! (+ s3-3 28) f0-9) [s3: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [124] (set! t9-9 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [125] (set! a1-9 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [126] (set! a2-4 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s3, r0 ;; [127] (set! a0-17 s3-3) [s3: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [128] (call! a0-17 a1-9 a2-4) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [129] (set! v1-42 v0-9) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [130] (set! t9-10 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [131] (set! a0-18 0) [] -> [a0: ] + jalr ra, t9 ;; [132] (call! a0-18) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L292 ;; [133] (b! (not v0-10) L292 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B13: + or v1, s7, r0 ;; [134] (set! v1-43 #f) [] -> [v1: '#f ] +B14: +L293: + lw t9, enter-state(s7) ;; [135] (set! t9-11 enter-state) [] -> [t9: ] + or a0, gp, r0 ;; [136] (set! a0-19 arg0) [gp: float ] -> [a0: float ] + or a1, s5, r0 ;; [137] (set! a1-10 arg1) [s5: float ] -> [a1: float ] + or a2, s4, r0 ;; [138] (set! a2-5 arg2) [s4: symbol ] -> [a2: symbol ] + lw v1, target-duck-high-jump-jump(s7);; [139] (set! v1-44 target-duck-high-jump-jump) + ;; [] -> [v1: (state float float symbol target) ] + sw v1, 72(s6) ;; [140] (s.w! (+ self 72) v1-44) [v1: (state float float symbol target) s6: target ] -> [] + jalr ra, t9 ;; [141] (call! a0-19 a1-10 a2-5) + ;; [a0: float a1: float a2: symbol t9: ] -> [v0: object ] + sll v0, ra, 0 + + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 64(sp) + lq s5, 48(sp) + lq s4, 32(sp) + lq s3, 16(sp) + jr ra + daddiu sp, sp, 80 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-duck-high-jump) + ((arg0 float) (arg1 float) (arg2 symbol)) + (if (not (and (ja-group? (-> self draw art-group data 31)) (= (-> self skel root-channel 0) (-> self skel channel))) + ) + (ja-channel-push! 1 (seconds 0.04)) + ) + (case arg2 + (('launch) + (ja-no-eval :group! (-> self draw art-group data 42) + :num! (seek! (ja-aframe (the-as float 16.0) 0)) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 16.0) 0))) + ) + ) + (else + (ja-no-eval :group! (-> self draw art-group data 41) + :num! (seek! (ja-aframe (the-as float 16.0) 0)) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 16.0) 0))) + ) + ) + ) + (go target-duck-high-jump-jump arg0 arg1 arg2) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-duck-high-jump) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x00, fp? 0 ra? 0 ep? 1 +;; Warnings: +;; INFO: Return type mismatch surface vs none. + +;; s6-0: target +B0: +L294: + lw v1, *display*(s7) ;; [ 0] (set! v1-0 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 1] (set! v1-1 (l.d (+ v1-0 780))) [v1: display ] -> [v1: time-frame ] + sd v1, 164(s6) ;; [ 2] (s.d! (+ self 164) v1-1) [v1: time-frame s6: target ] -> [] + addiu v1, r0, -8 ;; [ 3] (set! v1-2 -8) [] -> [v1: ] + lwu a0, 108(s6) ;; [ 4] (set! a0-1 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 268(a0) ;; [ 5] (set! a0-2 (l.d (+ a0-1 268))) [a0: control-info ] -> [a0: cshape-moving-flags ] + and v1, v1, a0 ;; [ 6] (set! v1-3 (logand v1-2 a0-2)) + ;; [v1: a0: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + lwu a0, 108(s6) ;; [ 7] (set! a0-3 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sd v1, 268(a0) ;; [ 8] (s.d! (+ a0-3 268) v1-3) [v1: cshape-moving-flags a0: control-info ] -> [] + lw v0, *turn-around-mods*(s7);; [ 9] (set! v0-0 *turn-around-mods*) [] -> [v0: surface ] + lwu v1, 108(s6) ;; [ 10] (set! v1-4 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw v0, 656(v1) ;; [ 11] (s.w! (+ v1-4 656) v0-0) [v0: surface v1: control-info ] -> [] + jr ra + daddu sp, sp, r0 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-duck-high-jump) + ((arg0 float) (arg1 float) (arg2 symbol)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *turn-around-mods*) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (trans target-high-jump) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 1 ra? 1 ep? 1 +;; Warnings: +;; INFO: Return type mismatch float vs none. + +;; s6-0: target +L295: + daddiu sp, sp, -16 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 +B0: + lw t9, target-falling-trans(s7);; [ 0] (set! t9-0 target-falling-trans) + ;; [] -> [t9: (function basic time-frame none :behavior target) ] + or a0, s7, r0 ;; [ 1] (set! a0-0 #f) [] -> [a0: '#f ] + lwu v1, 120(s6) ;; [ 2] (set! v1-0 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 3] (set! v1-1 (l.w (+ v1-0 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 4] (b! (<=0.si v1-1) L296 (set! v1-2 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L296 + or v1, s7, r0 + +B1: + lwu v1, 120(s6) ;; [ 5] (set! v1-3 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 6] (set! v1-4 (l.wu (+ v1-3 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 7] (set! v1-2 (l.wu (+ v1-4 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B2: +L296: + lwu a1, 116(s6) ;; [ 8] (set! a1-0 (l.wu (+ self 116))) [s6: target ] -> [a1: draw-control ] + lwu a1, 4(a1) ;; [ 9] (set! a1-1 (l.wu (+ a1-0 4))) [a1: draw-control ] -> [a1: art-group ] + lwu a1, 180(a1) ;; [ 10] (set! a1-2 (l.wu (+ a1-1 180))) [a1: art-group ] -> [a1: art-element ] + dsubu v1, v1, a1 ;; [ 11] (set! a1-3 (= v1-2 a1-2)) [v1: art-joint-anim a1: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, v1 + beq s7, a1, L297 ;; [ 12] (b! (not a1-3) L297 (nop!)) [a1: symbol ] -> [] + sll r0, r0, 0 + +B3: + addiu a1, r0, 15 ;; [ 13] (set! a1-4 15) [] -> [a1: ] + beq r0, r0, L298 ;; [ 14] (b! #t L298 (nop!)) [] -> [] + sll r0, r0, 0 + +B4: +L297: + addiu a1, r0, -1 ;; [ 15] (set! a1-4 -1) [] -> [a1: ] +B5: +L298: + jalr ra, t9 ;; [ 16] (call! a0-0 a1-4) + ;; [a0: '#f a1: int t9: (function basic time-frame none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lwu v1, 108(s6) ;; [ 17] (set! v1-5 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 18] (set! v1-6 (l.wu (+ v1-5 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 19] (set! v1-7 (l.w (+ v1-6 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 20] (set! v1-8 (sll v1-7 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 21] (set! a0-1 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 22] (set! v1-9 (+ v1-8 a0-1)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 23] (set! v1-10 (l.wu (+ v1-9 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 24] (set! v1-11 (l.wu (+ v1-10 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 25] (set! a0-2 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 26] (set! a0-3 (l.wu (+ a0-2 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 27] (set! a0-4 (l.w (+ a0-3 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 28] (set! a0-5 (sll a0-4 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 29] (set! a1-5 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 30] (set! a0-6 (+ a0-5 a1-5)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 31] (set! a0-7 (l.wu (+ a0-6 4))) [a0: ] -> [a0: cpad-info ] + lwu a0, 60(a0) ;; [ 32] (set! a0-8 (l.wu (+ a0-7 60))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 33] (set! v1-12 (logior v1-11 a0-8)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 34] (set! a0-9 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 35] (set! a0-10 (l.wu (+ a0-9 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 36] (set! a0-11 (l.w (+ a0-10 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 37] (set! a0-12 (sll a0-11 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 38] (set! a1-6 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 39] (set! a0-13 (+ a0-12 a1-6)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 40] (set! a0-14 (l.wu (+ a0-13 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 64(a0) ;; [ 41] (set! a0-15 (l.wu (+ a0-14 64))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 42] (set! v1-13 (logior v1-12 a0-15)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + andi v1, v1, 32768 ;; [ 43] (set! v1-14 (logand v1-13 #x8000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L301 ;; [ 44] (bl! (zero? v1-14) L301 (no-delay!)) [v1: pad-buttons ] -> [] +B6: + or v1, s7, r0 ;; [ 45] (set! v1-15 #f) [] -> [v1: '#f ] + +B7: + lwu v1, 108(s6) ;; [ 46] (set! v1-16 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 47] (set! v1-17 (l.wu (+ v1-16 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 48] (set! a0-16 (+ v1-17 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 49] (set! v1-18 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 50] (set! v1-19 (+ v1-18 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [ 51] (set! f0-0 (vec3dot a0-16 v1-19)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [ 52] (set! v1-20 (fpr->gpr f0-0)) [] -> [v1: float ] + mtc1 f0, v1 ;; [ 53] (set! f0-1 (gpr->fpr v1-20)) [v1: float ] -> [] + lui v1, L796 ;; [ 54] (set! v1-21 L796) [] -> [v1: ] + ori v1, v1, L796 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 55] (set! f1-0 (l.f v1-21)) [v1: ] -> [] + c.lt.s f0, f1 ;; [ 56] (b! (<.s f0-1 f1-0) L299 (set! v1-22 #t)) [] -> [v1: symbol ] + bc1t L299 + daddiu v1, s7, 8 + +B8: + or v1, s7, r0 ;; [ 57] (set! v1-22 #f) [] -> [v1: '#f ] +B9: +L299: + beql s7, v1, L301 ;; [ 58] (bl! (not v1-22) L301 (no-delay!)) [v1: symbol ] -> [] +B10: + or v1, v1, r0 ;; [ 59] (set! v1-15 v1-22) [v1: symbol ] -> [v1: symbol ] + +B11: + lui v1, L805 ;; [ 60] (set! v1-23 L805) [] -> [v1: ] + ori v1, v1, L805 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 61] (set! f0-2 (l.f v1-23)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 62] (set! v1-24 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 63] (set! v1-25 (l.wu (+ v1-24 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 64] (set! a0-17 (+ v1-25 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 65] (set! v1-26 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 66] (set! v1-27 (+ v1-26 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f1, 0(a0) ;; [ 67] (set! f1-1 (vec3dot a0-17 v1-27)) [v1: vector a0: vector ] -> [] + lwc1 f2, 4(a0) + lwc1 f3, 8(a0) + lwc1 f4, 0(v1) + lwc1 f5, 4(v1) + lwc1 f6, 8(v1) + mula.s f1, f4 + madda.s f2, f5 + madd.s f1, f3, f6 + mfc1 v1, f1 ;; [ 68] (set! v1-28 (fpr->gpr f1-1)) [] -> [v1: float ] + mtc1 f1, v1 ;; [ 69] (set! f1-2 (gpr->fpr v1-28)) [v1: float ] -> [] + c.lt.s f0, f1 ;; [ 70] (b! (<.s f0-2 f1-2) L300 (set! v1-29 #t)) [] -> [v1: symbol ] + bc1t L300 + daddiu v1, s7, 8 + +B12: + or v1, s7, r0 ;; [ 71] (set! v1-29 #f) [] -> [v1: '#f ] +B13: +L300: + beql s7, v1, L301 ;; [ 72] (bl! (not v1-29) L301 (no-delay!)) [v1: symbol ] -> [] +B14: + or v1, v1, r0 ;; [ 73] (set! v1-15 v1-29) [v1: symbol ] -> [v1: symbol ] + +B15: + lw v1, *display*(s7) ;; [ 74] (set! v1-30 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 75] (set! v1-31 (l.d (+ v1-30 780))) [v1: display ] -> [v1: time-frame ] + lwu a0, 108(s6) ;; [ 76] (set! a0-18 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 1708(a0) ;; [ 77] (set! a0-19 (l.d (+ a0-18 1708))) [a0: control-info ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [ 78] (set! v1-32 (- v1-31 a0-19)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + lw a0, *TARGET-bank*(s7) ;; [ 79] (set! a0-20 *TARGET-bank*) [] -> [a0: target-bank ] + ld a0, 564(a0) ;; [ 80] (set! a0-21 (l.d (+ a0-20 564))) [a0: target-bank ] -> [a0: seconds ] + slt v1, v1, a0 ;; [ 81] (set! a0-22 (>=.si v1-32 a0-21)) [v1: time-frame a0: seconds ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L301 ;; [ 82] (bl! (not a0-22) L301 (no-delay!)) [a0: symbol ] -> [] +B16: + or v1, a0, r0 ;; [ 83] (set! v1-15 a0-22) [a0: symbol ] -> [v1: symbol ] + +B17: + lwu v1, 160(s6) ;; [ 84] (set! v1-33 (l.wu (+ self 160))) [s6: target ] -> [v1: state-flags ] + andi v1, v1, 4096 ;; [ 85] (set! v1-34 (logand v1-33 4096)) [v1: state-flags ] -> [v1: state-flags ] + bnel v1, r0, L301 ;; [ 86] (bl! (nonzero? v1-34) L301 (no-delay!)) [v1: state-flags ] -> [] +B18: + or v1, s7, r0 ;; [ 87] (set! v1-15 #f) [] -> [v1: '#f ] + +B19: + daddiu v1, s7, 8 ;; [ 88] (set! v1-35 #t) [] -> [v1: symbol ] + lwu a0, 108(s6) ;; [ 89] (set! a0-23 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 660(a0) ;; [ 90] (set! a0-24 (l.wu (+ a0-23 660))) [a0: control-info ] -> [a0: surface ] + lwu a0, 144(a0) ;; [ 91] (set! a0-25 (l.wu (+ a0-24 144))) [a0: surface ] -> [a0: surface-flags ] + andi a0, a0, 384 ;; [ 92] (set! a0-26 (logand a0-25 384)) [a0: surface-flags ] -> [a0: surface-flags ] + movn v1, s7, a0 ;; [ 93] (cmove-#f-nonzero v1-15 a0-26 v1-35) + ;; [v1: symbol a0: surface-flags ] -> [v1: symbol ] +B20: +L301: + beq s7, v1, L304 ;; [ 94] (b! (not v1-15) L304 (set! v1-36 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B21: + lw t9, enter-state(s7) ;; [ 95] (set! t9-1 enter-state) [] -> [t9: ] + lui v1, L773 ;; [ 96] (set! v1-37 L773) [] -> [v1: ] + ori v1, v1, L773 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 97] (set! a0-27 (l.w v1-37)) [v1: ] -> [a0: int ] + lui v1, L729 ;; [ 98] (set! v1-38 L729) [] -> [v1: ] + ori v1, v1, L729 + addu v1, fp, v1 + lw a1, 0(v1) ;; [ 99] (set! a1-7 (l.w v1-38)) [v1: ] -> [a1: int ] + lwu v1, 108(s6) ;; [100] (set! v1-39 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [101] (set! v1-40 (l.wu (+ v1-39 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [102] (set! v1-41 (l.w (+ v1-40 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [103] (set! v1-42 (sll v1-41 2)) [v1: int ] -> [v1: ] + lw a2, *cpad-list*(s7) ;; [104] (set! a2-0 *cpad-list*) [] -> [a2: cpad-list ] + daddu v1, v1, a2 ;; [105] (set! v1-43 (+ v1-42 a2-0)) + ;; [v1: a2: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [106] (set! v1-44 (l.wu (+ v1-43 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwc1 f0, 72(v1) ;; [107] (set! f0-3 (l.f (+ v1-44 72))) [v1: cpad-info ] -> [] + mtc1 f1, r0 ;; [108] (set! f1-3 0) [] -> [] + c.eq.s f0, f1 ;; [109] (b! (!=.s f0-3 f1-3) L302 (nop!)) [] -> [] + bc1f L302 + sll r0, r0, 0 + +B22: + lui v1, L814 ;; [110] (set! v1-45 L814) [] -> [v1: ] + ori v1, v1, L814 + addu v1, fp, v1 + lw a2, 0(v1) ;; [111] (set! a2-1 (l.w v1-45)) [v1: ] -> [a2: int ] + beq r0, r0, L303 ;; [112] (b! #t L303 (nop!)) [] -> [] + sll r0, r0, 0 + +B23: +L302: + lui v1, L758 ;; [113] (set! v1-46 L758) [] -> [v1: ] + ori v1, v1, L758 + addu v1, fp, v1 + lw a2, 0(v1) ;; [114] (set! a2-1 (l.w v1-46)) [v1: ] -> [a2: int ] +B24: +L303: + lw v1, target-flop(s7) ;; [115] (set! v1-47 target-flop) [] -> [v1: (state float float float target) ] + sw v1, 72(s6) ;; [116] (s.w! (+ self 72) v1-47) [v1: (state float float float target) s6: target ] -> [] + jalr ra, t9 ;; [117] (call! a0-27 a1-7 a2-1) + ;; [a0: int a1: int a2: int t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [118] (set! v1-48 v0-1) [v0: object ] -> [v1: object ] +B25: +L304: + lw t9, mod-var-jump(s7) ;; [119] (set! t9-2 mod-var-jump) + ;; [] -> [t9: (function symbol symbol symbol vector vector :behavior target) ] + daddiu a0, s7, #t ;; [120] (set! a0-28 #t) [] -> [a0: symbol ] + daddiu a1, s7, #t ;; [121] (set! a1-8 #t) [] -> [a1: symbol ] + daddiu a2, s7, 8 ;; [122] (set! a2-2 #t) [] -> [a2: symbol ] + lwu v1, 108(s6) ;; [123] (set! v1-49 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [124] (set! v1-50 (l.wu (+ v1-49 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [125] (set! v1-51 (l.w (+ v1-50 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [126] (set! v1-52 (sll v1-51 2)) [v1: int ] -> [v1: ] + lw a3, *cpad-list*(s7) ;; [127] (set! a3-0 *cpad-list*) [] -> [a3: cpad-list ] + daddu v1, v1, a3 ;; [128] (set! v1-53 (+ v1-52 a3-0)) + ;; [v1: a3: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [129] (set! v1-54 (l.wu (+ v1-53 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 40(v1) ;; [130] (set! v1-55 (l.wu (+ v1-54 40))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 16384 ;; [131] (set! v1-56 (logand v1-55 #x4000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + movz a2, s7, v1 ;; [132] (cmove-#f-zero a2-3 v1-56 a2-2) [v1: pad-buttons a2: symbol ] -> [a2: symbol ] + lwu v1, 108(s6) ;; [133] (set! v1-57 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a3, v1, 60 ;; [134] (set! a3-1 (+ v1-57 60)) [v1: control-info ] -> [a3: vector ] + jalr ra, t9 ;; [135] (call! a0-28 a1-8 a2-3 a3-1) + ;; [a0: symbol a1: symbol a2: symbol a3: vector t9: (function symbol symbol symbol vector vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + lw t9, seek(s7) ;; [136] (set! t9-3 seek) [] -> [t9: (function float float float float) ] + lwu v1, 108(s6) ;; [137] (set! v1-58 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 2192(v1) ;; [138] (set! f0-4 (l.f (+ v1-58 2192))) [v1: control-info ] -> [] + mfc1 a0, f0 ;; [139] (set! a0-29 (fpr->gpr f0-4)) [] -> [a0: float ] + mtc1 f0, r0 ;; [140] (set! f0-5 0) [] -> [] + lui v1, L786 ;; [141] (set! v1-59 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [142] (set! f1-4 (l.f v1-59)) [v1: ] -> [] + lui v1, L756 ;; [143] (set! v1-60 L756) [] -> [v1: ] + ori v1, v1, L756 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [144] (set! f2-0 (l.f v1-60)) [v1: ] -> [] + lui v1, L795 ;; [145] (set! v1-61 L795) [] -> [v1: ] + ori v1, v1, L795 + addu v1, fp, v1 + lwc1 f3, 0(v1) ;; [146] (set! f3-0 (l.f v1-61)) [v1: ] -> [] + lwu v1, 108(s6) ;; [147] (set! v1-62 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f4, 528(v1) ;; [148] (set! f4-0 (l.f (+ v1-62 528))) [v1: control-info ] -> [] + add.s f3, f3, f4 ;; [149] (set! f3-1 (+.s f3-0 f4-0)) [] -> [] + mul.s f2, f2, f3 ;; [150] (set! f2-1 (*.s f2-0 f3-1)) [] -> [] + min.s f1, f1, f2 ;; [151] (set! f1-5 (min.s f1-4 f2-1)) [] -> [] + max.s f0, f0, f1 ;; [152] (set! f0-6 (max.s f0-5 f1-5)) [] -> [] + mfc1 a1, f0 ;; [153] (set! a1-9 (fpr->gpr f0-6)) [] -> [a1: float ] + lw v1, *display*(s7) ;; [154] (set! v1-63 *display*) [] -> [v1: display ] + lwc1 f0, 904(v1) ;; [155] (set! f0-7 (l.f (+ v1-63 904))) [v1: display ] -> [] + mfc1 a2, f0 ;; [156] (set! a2-4 (fpr->gpr f0-7)) [] -> [a2: float ] + jalr ra, t9 ;; [157] (call! a0-29 a1-9 a2-4) + ;; [a0: float a1: float a2: float t9: (function float float float float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [158] (set! f0-8 (gpr->fpr v0-3)) [v0: float ] -> [] + lwu v1, 108(s6) ;; [159] (set! v1-64 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 2192(v1) ;; [160] (s.f! (+ v1-64 2192) f0-8) [v1: control-info ] -> [] + mfc1 v0, f0 ;; [161] (set! v0-4 (fpr->gpr f0-8)) [] -> [v0: float ] + ld ra, 0(sp) + ld fp, 8(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (trans target-high-jump) + () + (target-falling-trans #f (the-as time-frame (if (ja-group? (-> self draw art-group data 38)) + 15 + -1 + ) + ) + ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons square) + ) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 73728.0) + (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword36)) + (the-as time-frame (-> *TARGET-bank* stuck-timeout)) + ) + (zero? (logand (-> self state-flags) (state-flags prevent-attack))) + (zero? (logand (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08)) + ) + ) + ) + (go + target-flop + (the-as float 33775.48) + (the-as float -122880.0) + (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + 0.0 + 68812.8 + ) + ) + ) + ) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) + (seek! + (-> self control unknown-float122) + (fmax 0.0 (fmin 1.0 (* 0.00012207031 (+ -2048.0 (-> self control unknown-float01))))) + (-> *display* seconds-per-frame) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-high-jump) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x60, fp? 1 ra? 1 ep? 1 + ;gprs: gp s5 s4 s3 s2 +;; Warnings: +;; INFO: Return type mismatch float vs none. +;; Used lq/sq + +;; a0-0: float a0-3: int a1-0: float a1-1: int a2-0: basic a2-1: vector s6-0: target +L305: + daddiu sp, sp, -96 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s2, 16(sp) + sq s3, 32(sp) + sq s4, 48(sp) + sq s5, 64(sp) + sq gp, 80(sp) +B0: + or s5, a0, r0 ;; [ 0] (set! arg0 arg0) [a0: float ] -> [s5: float ] + or s4, a1, r0 ;; [ 1] (set! arg1 arg1) [a1: float ] -> [s4: float ] + or gp, a2, r0 ;; [ 2] (set! arg2 arg2) [a2: basic ] -> [gp: basic ] + lwu v1, 108(s6) ;; [ 3] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 2424(v1) ;; [ 4] (set! v1-1 (l.wu (+ v1-0 2424))) [v1: control-info ] -> [v1: symbol ] + daddiu a0, s7, launch ;; [ 5] (set! a0-1 'launch) [] -> [a0: symbol ] + dsubu v1, v1, a0 ;; [ 6] (set! a0-2 (= v1-1 a0-1)) [v1: symbol a0: symbol ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L306 ;; [ 7] (bl! (not a0-2) L306 (no-delay!)) [a0: symbol ] -> [] +B1: + or v1, a0, r0 ;; [ 8] (set! v1-2 a0-2) [a0: symbol ] -> [v1: symbol ] + +B2: + daddiu v1, s7, launch ;; [ 9] (set! v1-3 'launch) [] -> [v1: symbol ] + dsubu a0, gp, v1 ;; [ 10] (set! v1-2 (!= arg2 v1-3)) [v1: symbol gp: basic ] -> [v1: symbol ] + daddiu v1, s7, 8 + movz v1, s7, a0 +B3: +L306: + beq s7, v1, L307 ;; [ 11] (b! (not v1-2) L307 (set! v1-4 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B4: + lw t9, enter-state(s7) ;; [ 12] (set! t9-0 enter-state) [] -> [t9: ] + lwu v1, 108(s6) ;; [ 13] (set! v1-5 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld a0, 2428(v1) ;; [ 14] (set! a0-3 (l.d (+ v1-5 2428))) [v1: control-info ] -> [a0: int ] + lwu v1, 108(s6) ;; [ 15] (set! v1-6 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld a1, 2436(v1) ;; [ 16] (set! a1-1 (l.d (+ v1-6 2436))) [v1: control-info ] -> [a1: int ] + lwu v1, 108(s6) ;; [ 17] (set! v1-7 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a2, v1, 2220 ;; [ 18] (set! a2-1 (+ v1-7 2220)) [v1: control-info ] -> [a2: vector ] + lwu v1, 108(s6) ;; [ 19] (set! v1-8 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld v1, 2444(v1) ;; [ 20] (set! v1-9 (l.d (+ v1-8 2444))) [v1: control-info ] -> [v1: vector ] + lq v1, 0(v1) ;; [ 21] (set! (the-as vector v1-10) (l.q v1-9)) [v1: vector ] -> [v1: uint128 ] + sq v1, 0(a2) ;; [ 22] (s.q! a2-1 v1-10) [v1: uint128 a2: vector ] -> [] + lwu v1, 108(s6) ;; [ 23] (set! v1-11 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld a3, 2452(v1) ;; [ 24] (set! a3-0 (l.d (+ v1-11 2452))) [v1: control-info ] -> [a3: int ] + lw v1, target-launch(s7) ;; [ 25] (set! v1-12 target-launch) [] -> [v1: (state float symbol vector int target) ] + sw v1, 72(s6) ;; [ 26] (s.w! (+ self 72) v1-12) + ;; [v1: (state float symbol vector int target) s6: target ] -> [] + jalr ra, t9 ;; [ 27] (call! a0-3 a1-1 a2-1 a3-0) + ;; [a0: int a1: int a2: vector a3: int t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 28] (set! v1-13 v0-0) [v0: object ] -> [v1: object ] +B5: +L307: + lwu v1, 108(s6) ;; [ 29] (set! v1-14 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw gp, 2188(v1) ;; [ 30] (s.w! (+ v1-14 2188) arg2) [v1: control-info gp: basic ] -> [] + daddiu v1, s7, duck ;; [ 31] (set! v1-15 'duck) [] -> [v1: symbol ] + dsubu v1, gp, v1 ;; [ 32] (set! a0-4 (= arg2 v1-15)) [v1: symbol gp: basic ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + bnel s7, a0, L308 ;; [ 33] (bl! (truthy a0-4) L308 (no-delay!)) [a0: symbol ] -> [] +B6: + or v1, a0, r0 ;; [ 34] (set! v1-16 a0-4) [a0: symbol ] -> [v1: symbol ] + +B7: + daddiu v1, s7, launch ;; [ 35] (set! v1-17 'launch) [] -> [v1: symbol ] + dsubu a0, gp, v1 ;; [ 36] (set! v1-16 (= arg2 v1-17)) [v1: symbol gp: basic ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 +B8: +L308: + beq s7, v1, L309 ;; [ 37] (b! (not v1-16) L309 (set! v1-18 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B9: + lw t9, enter-state(s7) ;; [ 38] (set! t9-1 enter-state) [] -> [t9: ] + or a0, s5, r0 ;; [ 39] (set! a0-5 arg0) [s5: float ] -> [a0: float ] + or a1, s4, r0 ;; [ 40] (set! a1-2 arg1) [s4: float ] -> [a1: float ] + or a2, gp, r0 ;; [ 41] (set! a2-2 arg2) [gp: basic ] -> [a2: basic ] + lw v1, target-duck-high-jump(s7);; [ 42] (set! v1-19 target-duck-high-jump) + ;; [] -> [v1: (state float float symbol target) ] + sw v1, 72(s6) ;; [ 43] (s.w! (+ self 72) v1-19) [v1: (state float float symbol target) s6: target ] -> [] + jalr ra, t9 ;; [ 44] (call! a0-5 a1-2 a2-2) + ;; [a0: float a1: float a2: basic t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 45] (set! v1-20 v0-1) [v0: object ] -> [v1: object ] +B10: +L309: + lw v1, *display*(s7) ;; [ 46] (set! v1-21 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 47] (set! v1-22 (l.d (+ v1-21 780))) [v1: display ] -> [v1: time-frame ] + sd v1, 164(s6) ;; [ 48] (s.d! (+ self 164) v1-22) [v1: time-frame s6: target ] -> [] + addiu v1, r0, -8 ;; [ 49] (set! v1-23 -8) [] -> [v1: ] + lwu a0, 108(s6) ;; [ 50] (set! a0-6 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 268(a0) ;; [ 51] (set! a0-7 (l.d (+ a0-6 268))) [a0: control-info ] -> [a0: cshape-moving-flags ] + and v1, v1, a0 ;; [ 52] (set! v1-24 (logand v1-23 a0-7)) + ;; [v1: a0: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + lwu a0, 108(s6) ;; [ 53] (set! a0-8 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sd v1, 268(a0) ;; [ 54] (s.d! (+ a0-8 268) v1-24) [v1: cshape-moving-flags a0: control-info ] -> [] + lw s3, sound-play-by-name(s7);; [ 55] (set! s3-0 sound-play-by-name) + ;; [] -> [s3: (function sound-name sound-id int int int sound-group symbol sound-id) ] + lui v1, 28781 ;; [ 56] (set! v1-25 #x706d756a) [] -> [v1: ] + ori v1, v1, 30058 + pcpyld s2, r0, v1 ;; [ 57] (set! s2-0 (pcypld 0 v1-25)) [v1: ] -> [s2: uint ] + lw t9, new-sound-id(s7) ;; [ 58] (set! t9-2 new-sound-id) [] -> [t9: (function sound-id) ] + jalr ra, t9 ;; [ 59] (call!) [t9: (function sound-id) ] -> [v0: sound-id ] + sll v0, ra, 0 + + or a1, v0, r0 ;; [ 60] (set! a1-3 v0-2) [v0: sound-id ] -> [a1: sound-id ] + addiu a2, r0, 1024 ;; [ 61] (set! a2-3 1024) [] -> [a2: ] + addiu a3, r0, 457 ;; [ 62] (set! a3-1 457) [] -> [a3: ] + addiu t0, r0, 0 ;; [ 63] (set! t0-0 0) [] -> [t0: ] + addiu t1, r0, 1 ;; [ 64] (set! t1-0 1) [] -> [t1: ] + daddiu t2, s7, #t ;; [ 65] (set! t2-0 #t) [] -> [t2: symbol ] + or t9, s3, r0 ;; [ 66] (set! t9-3 s3-0) + ;; [s3: (function sound-name sound-id int int int sound-group symbol sound-id) ] -> [t9: (function sound-name sound-id int int int sound-group symbol sound-id) ] + por a0, s2, r0 ;; [ 67] (set! a0-9 s2-0) [s2: uint ] -> [a0: uint ] + jalr ra, t9 ;; [ 68] (call! a0-9 a1-3 a2-3 a3-1 t0-0 t1-0 t2-0) + ;; [a0: uint a1: sound-id a2: a3: t0: t1: t2: symbol t9: (function sound-name sound-id int int int sound-group symbol sound-id) ] -> [v0: sound-id ] + sll v0, ra, 0 + + lw t9, init-var-jump(s7) ;; [ 69] (set! t9-4 init-var-jump) + ;; [] -> [t9: (function float float vector vector vector vector :behavior target) ] + daddiu a2, s7, #t ;; [ 70] (set! a2-4 #t) [] -> [a2: symbol ] + daddiu a3, s7, #t ;; [ 71] (set! a3-2 #t) [] -> [a3: symbol ] + lwu v1, 108(s6) ;; [ 72] (set! v1-26 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu t0, v1, 60 ;; [ 73] (set! t0-1 (+ v1-26 60)) [v1: control-info ] -> [t0: vector ] + or a0, s5, r0 ;; [ 74] (set! a0-10 arg0) [s5: float ] -> [a0: float ] + or a1, s4, r0 ;; [ 75] (set! a1-4 arg1) [s4: float ] -> [a1: float ] + jalr ra, t9 ;; [ 76] (call! a0-10 a1-4 a2-4 a3-2 t0-1) + ;; [a0: float a1: float a2: symbol a3: symbol t0: vector t9: (function float float vector vector vector vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + daddiu v1, s7, flip ;; [ 77] (set! v1-27 'flip) [] -> [v1: symbol ] + bne gp, v1, L310 ;; [ 78] (b! (!= arg2 v1-27) L310 (nop!)) [v1: symbol gp: basic ] -> [] + sll r0, r0, 0 + +B11: + lw v1, *flip-jump-mods*(s7);; [ 79] (set! v1-28 *flip-jump-mods*) [] -> [v1: surface ] + beq r0, r0, L312 ;; [ 80] (b! #t L312 (nop!)) [] -> [] + sll r0, r0, 0 + +B12: +L310: + daddiu v1, s7, flop-forward;; [ 81] (set! v1-29 'flop-forward) [] -> [v1: symbol ] + bne gp, v1, L311 ;; [ 82] (b! (!= arg2 v1-29) L311 (nop!)) [v1: symbol gp: basic ] -> [] + sll r0, r0, 0 + +B13: + lw v1, *forward-high-jump-mods*(s7);; [ 83] (set! v1-28 *forward-high-jump-mods*) [] -> [v1: surface ] + beq r0, r0, L312 ;; [ 84] (b! #t L312 (nop!)) [] -> [] + sll r0, r0, 0 + +B14: +L311: + lw v1, *high-jump-mods*(s7);; [ 85] (set! v1-28 *high-jump-mods*) [] -> [v1: surface ] +B15: +L312: + lwu a0, 108(s6) ;; [ 86] (set! a0-11 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sw v1, 656(a0) ;; [ 87] (s.w! (+ a0-11 656) v1-28) [v1: surface a0: control-info ] -> [] + mtc1 f0, r0 ;; [ 88] (set! f0-0 0) [] -> [] + lui v1, L752 ;; [ 89] (set! v1-30 L752) [] -> [v1: ] + ori v1, v1, L752 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 90] (set! f1-0 (l.f v1-30)) [v1: ] -> [] + lui v1, L793 ;; [ 91] (set! v1-31 L793) [] -> [v1: ] + ori v1, v1, L793 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [ 92] (set! f2-0 (l.f v1-31)) [v1: ] -> [] + lui v1, L794 ;; [ 93] (set! v1-32 L794) [] -> [v1: ] + ori v1, v1, L794 + addu v1, fp, v1 + lwc1 f3, 0(v1) ;; [ 94] (set! f3-0 (l.f v1-32)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 95] (set! v1-33 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f4, 528(v1) ;; [ 96] (set! f4-0 (l.f (+ v1-33 528))) [v1: control-info ] -> [] + add.s f3, f3, f4 ;; [ 97] (set! f3-1 (+.s f3-0 f4-0)) [] -> [] + mul.s f2, f2, f3 ;; [ 98] (set! f2-1 (*.s f2-0 f3-1)) [] -> [] + min.s f1, f1, f2 ;; [ 99] (set! f1-1 (min.s f1-0 f2-1)) [] -> [] + max.s f0, f0, f1 ;; [100] (set! f0-1 (max.s f0-0 f1-1)) [] -> [] + lwu v1, 108(s6) ;; [101] (set! v1-34 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 2192(v1) ;; [102] (s.f! (+ v1-34 2192) f0-1) [v1: control-info ] -> [] + mfc1 v0, f0 ;; [103] (set! v0-5 (fpr->gpr f0-1)) [] -> [v0: float ] + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 80(sp) + lq s5, 64(sp) + lq s4, 48(sp) + lq s3, 32(sp) + lq s2, 16(sp) + jr ra + daddiu sp, sp, 96 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-high-jump) + ((arg0 float) (arg1 float) (arg2 basic)) + (when (and (= (-> self control unknown-symbol40) 'launch) (!= arg2 'launch)) + enter-state + (let ((a0-3 (-> self control unknown-dword60)) + (a1-1 (-> self control unknown-dword61)) + (a2-1 (-> self control unknown-vector102)) + ) + (set! (-> a2-1 quad) (-> (the-as vector (-> self control unknown-dword62)) quad)) + (go target-launch (the-as float a0-3) (the-as symbol a1-1) a2-1 (-> self control unknown-dword63)) + ) + ) + (set! (-> self control unknown-uint31) (the-as uint arg2)) + (if (or (= arg2 'duck) (= arg2 'launch)) + (go target-duck-high-jump arg0 arg1 (the-as symbol arg2)) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (sound-play "jump" :pitch 0.3) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #t) (-> self control transv)) + (set! (-> self control unknown-surface00) (cond + ((= arg2 'flip) + *flip-jump-mods* + ) + ((= arg2 'flop-forward) + *forward-high-jump-mods* + ) + (else + *high-jump-mods* + ) + ) + ) + (set! (-> self control unknown-float122) + (fmax 0.0 (fmin 0.5 (* 0.00008138021 (+ -409.6 (-> self control unknown-float01))))) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-double-jump) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x20, fp? 1 ra? 1 ep? 1 + ;gprs: gp +;; Warnings: +;; INFO: Return type mismatch symbol vs none. + +;; s6-0: target +L313: + daddiu sp, sp, -32 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq gp, 16(sp) +B0: + lw t9, ja-channel-push!(s7);; [ 0] (set! t9-0 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 2 ;; [ 1] (set! a0-1 2) [] -> [a0: ] + addiu a1, r0, 15 ;; [ 2] (set! a1-1 15) [] -> [a1: ] + jalr ra, t9 ;; [ 3] (call! a0-1 a1-1) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [ 4] (set! v1-0 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu a0, 36(v1) ;; [ 5] (set! a0-2 (l.wu (+ v1-0 36))) [v1: joint-control ] -> [a0: effect-control ] + lwu v1, -4(a0) ;; [ 6] (set! v1-1 (l.wu (+ a0-2 -4))) + ;; [a0: effect-control ] -> [v1: ] + lwu t9, 56(v1) ;; [ 7] (set! t9-1 (l.wu (+ v1-1 56))) + ;; [v1: ] -> [t9: ] + daddiu a1, s7, jump-double;; [ 8] (set! a1-2 'jump-double) [] -> [a1: symbol ] + lui v1, L787 ;; [ 9] (set! v1-2 L787) [] -> [v1: ] + ori v1, v1, L787 + addu v1, fp, v1 + lw a2, 0(v1) ;; [ 10] (set! a2-0 (l.w v1-2)) [v1: ] -> [a2: int ] + addiu a3, r0, -1 ;; [ 11] (set! a3-0 -1) [] -> [a3: ] + jalr ra, t9 ;; [ 12] (call! a0-2 a1-2 a2-0 a3-0) + ;; [a0: effect-control a1: symbol a2: int a3: t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 13] (set! v1-3 v0-1) [v0: object ] -> [v1: object ] + lwu v1, 120(s6) ;; [ 14] (set! v1-4 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 15] (set! v1-5 (l.wu (+ v1-4 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu gp, r0, v1 ;; [ 16] (set! gp-0 (+ v1-5 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lwu v1, 116(s6) ;; [ 17] (set! v1-6 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 18] (set! v1-7 (l.wu (+ v1-6 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 164(v1) ;; [ 19] (set! v1-8 (l.wu (+ v1-7 164))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(gp) ;; [ 20] (s.w! (+ gp-0 12) v1-8) [v1: art-element gp: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [ 21] (set! v1-9 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 22] (set! v1-10 (l.wu (+ v1-9 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 164(v1) ;; [ 23] (set! v1-11 (l.wu (+ v1-10 164))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 24] (set! (the-as art-joint-anim v1-12) (l.wu (+ v1-11 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 25] (set! v1-13 (l.h (+ v1-12 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 26] (set! v1-14 (+ v1-13 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 27] (set! f0-0 (gpr->fpr v1-14)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 28] (set! f0-1 (i2f f0-0)) [] -> [] + swc1 f0, 24(gp) ;; [ 29] (s.f! (+ gp-0 24) f0-1) [gp: joint-control-channel ] -> [] + lui v1, L786 ;; [ 30] (set! v1-15 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 31] (set! f0-2 (l.f v1-15)) [v1: ] -> [] + swc1 f0, 28(gp) ;; [ 32] (s.f! (+ gp-0 28) f0-2) [gp: joint-control-channel ] -> [] + lw t9, ja-aframe(s7) ;; [ 33] (set! t9-2 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L740 ;; [ 34] (set! v1-16 L740) [] -> [v1: ] + ori v1, v1, L740 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 35] (set! a0-3 (l.w v1-16)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [ 36] (set! a1-3 0) [] -> [a1: ] + jalr ra, t9 ;; [ 37] (call! a0-3 a1-3) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 38] (set! f0-3 (gpr->fpr v0-2)) [v0: float ] -> [] + swc1 f0, 16(gp) ;; [ 39] (s.f! (+ gp-0 16) f0-3) [gp: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [ 40] (set! t9-3 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [ 41] (set! v1-17 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 42] (set! v1-18 (l.wu (+ v1-17 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 164(v1) ;; [ 43] (set! a1-4 (l.wu (+ v1-18 164))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [ 44] (set! a2-1 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, gp, r0 ;; [ 45] (set! a0-4 gp-0) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [ 46] (call! a0-4 a1-4 a2-1) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 47] (set! v1-19 v0-3) [v0: int ] -> [v1: int ] + lwu v1, 120(s6) ;; [ 48] (set! v1-20 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 49] (set! v1-21 (l.wu (+ v1-20 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu a0, v1, 48 ;; [ 50] (set! a0-5 (+ v1-21 48)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 51] (set! v1-22 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 52] (set! v1-23 (l.wu (+ v1-22 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 188(v1) ;; [ 53] (set! v1-24 (l.wu (+ v1-23 188))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [ 54] (s.w! (+ a0-5 12) v1-24) [v1: art-element a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [ 55] (set! f0-4 0) [] -> [] + swc1 f0, 24(a0) ;; [ 56] (s.f! (+ a0-5 24) f0-4) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 57] (set! t9-4 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [ 58] (set! v1-25 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 59] (set! v1-26 (l.wu (+ v1-25 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 188(v1) ;; [ 60] (set! a1-5 (l.wu (+ v1-26 188))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-chan(s7) ;; [ 61] (set! a2-2 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 62] (call! a0-5 a1-5 a2-2) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 63] (set! v1-27 v0-4) [v0: int ] -> [v1: int ] +B1: +L314: + lwu s6, 44(s6) ;; [ 64] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [ 65] (set! v1-28 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 66] (set! v1-29 (l.wu (+ v1-28 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 67] (set! a0-6 (+ v1-29 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [ 68] (set! v1-30 (l.wu (+ a0-6 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 69] (set! v1-31 (l.wu (+ v1-30 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 70] (set! v1-32 (l.h (+ v1-31 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 71] (set! v1-33 (+ v1-32 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 72] (set! f0-5 (gpr->fpr v1-33)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 73] (set! f0-6 (i2f f0-5)) [] -> [] + swc1 f0, 24(a0) ;; [ 74] (s.f! (+ a0-6 24) f0-6) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [ 75] (set! v1-34 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 76] (set! f0-7 (l.f v1-34)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [ 77] (s.f! (+ a0-6 28) f0-7) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 78] (set! t9-5 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [ 79] (set! a1-6 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [ 80] (set! a2-3 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 81] (call! a0-6 a1-6 a2-3) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 82] (set! v1-35 v0-5) [v0: int ] -> [v1: int ] + lwu v1, 120(s6) ;; [ 83] (set! v1-36 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 84] (set! v1-37 (l.wu (+ v1-36 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu a0, v1, 48 ;; [ 85] (set! a0-7 (+ v1-37 48)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 108(s6) ;; [ 86] (set! v1-38 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 2192(v1) ;; [ 87] (set! f0-8 (l.f (+ v1-38 2192))) [v1: control-info ] -> [] + swc1 f0, 8(a0) ;; [ 88] (s.f! (+ a0-7 8) f0-8) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [ 89] (set! f0-9 0) [] -> [] + swc1 f0, 24(a0) ;; [ 90] (s.f! (+ a0-7 24) f0-9) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 91] (set! t9-6 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [ 92] (set! a1-7 #f) [] -> [a1: '#f ] + lw a2, num-func-chan(s7) ;; [ 93] (set! a2-4 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 94] (call! a0-7 a1-7 a2-4) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 95] (set! v1-39 v0-6) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [ 96] (set! t9-7 ja-done?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 97] (set! a0-8 0) [] -> [a0: ] + jalr ra, t9 ;; [ 98] (call! a0-8) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L314 ;; [ 99] (b! (not v0-7) L314 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B2: + or v1, s7, r0 ;; [100] (set! v1-40 #f) [] -> [v1: '#f ] + lw t9, target-falling-anim(s7);; [101] (set! t9-8 target-falling-anim) + ;; [] -> [t9: (function time-frame time-frame symbol :behavior target) ] + addiu a0, r0, -1 ;; [102] (set! a0-9 -1) [] -> [a0: ] + addiu a1, r0, 60 ;; [103] (set! a1-8 60) [] -> [a1: ] + jalr ra, t9 ;; [104] (call! a0-9 a1-8) + ;; [a0: a1: t9: (function time-frame time-frame symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 16(sp) + jr ra + daddiu sp, sp, 32 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-double-jump) + ((arg0 float) (arg1 float)) + (ja-channel-push! 2 (seconds 0.05)) + (dummy-10 (-> self skel effect) 'jump-double (the-as float -1.0) -1) + (ja-no-eval :group! (-> self draw art-group data 34) + :num! (seek!) + :frame-num (ja-aframe (the-as float 5.0) 0) + ) + (ja :chan 1 :group! (-> self draw art-group data 40) :num! (chan 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + (ja :chan 1 :num! (chan 0) :frame-interp (-> self control unknown-float122)) + ) + (target-falling-anim -1 (seconds 0.2)) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (trans target-double-jump) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 1 ra? 1 ep? 1 +;; Warnings: +;; INFO: Return type mismatch float vs none. + +;; s6-0: target +L315: + daddiu sp, sp, -16 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 +B0: + lw t9, target-falling-trans(s7);; [ 0] (set! t9-0 target-falling-trans) + ;; [] -> [t9: (function basic time-frame none :behavior target) ] + or a0, s7, r0 ;; [ 1] (set! a0-0 #f) [] -> [a0: '#f ] + lwu v1, 120(s6) ;; [ 2] (set! v1-0 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 3] (set! v1-1 (l.w (+ v1-0 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 4] (b! (<=0.si v1-1) L316 (set! v1-2 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L316 + or v1, s7, r0 + +B1: + lwu v1, 120(s6) ;; [ 5] (set! v1-3 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 6] (set! v1-4 (l.wu (+ v1-3 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 7] (set! v1-2 (l.wu (+ v1-4 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B2: +L316: + lwu a1, 116(s6) ;; [ 8] (set! a1-0 (l.wu (+ self 116))) [s6: target ] -> [a1: draw-control ] + lwu a1, 4(a1) ;; [ 9] (set! a1-1 (l.wu (+ a1-0 4))) [a1: draw-control ] -> [a1: art-group ] + lwu a1, 180(a1) ;; [ 10] (set! a1-2 (l.wu (+ a1-1 180))) [a1: art-group ] -> [a1: art-element ] + dsubu v1, v1, a1 ;; [ 11] (set! a1-3 (= v1-2 a1-2)) [v1: art-joint-anim a1: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, v1 + beq s7, a1, L317 ;; [ 12] (b! (not a1-3) L317 (nop!)) [a1: symbol ] -> [] + sll r0, r0, 0 + +B3: + addiu a1, r0, 15 ;; [ 13] (set! a1-4 15) [] -> [a1: ] + beq r0, r0, L318 ;; [ 14] (b! #t L318 (nop!)) [] -> [] + sll r0, r0, 0 + +B4: +L317: + addiu a1, r0, -1 ;; [ 15] (set! a1-4 -1) [] -> [a1: ] +B5: +L318: + jalr ra, t9 ;; [ 16] (call! a0-0 a1-4) + ;; [a0: '#f a1: int t9: (function basic time-frame none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lwu v1, 108(s6) ;; [ 17] (set! v1-5 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 18] (set! v1-6 (l.wu (+ v1-5 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 19] (set! v1-7 (l.w (+ v1-6 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 20] (set! v1-8 (sll v1-7 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 21] (set! a0-1 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 22] (set! v1-9 (+ v1-8 a0-1)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 23] (set! v1-10 (l.wu (+ v1-9 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 24] (set! v1-11 (l.wu (+ v1-10 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 32768 ;; [ 25] (set! v1-12 (logand v1-11 #x8000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L321 ;; [ 26] (bl! (zero? v1-12) L321 (no-delay!)) [v1: pad-buttons ] -> [] +B6: + or v1, s7, r0 ;; [ 27] (set! v1-13 #f) [] -> [v1: '#f ] + +B7: + lwu v1, 108(s6) ;; [ 28] (set! v1-14 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 29] (set! v1-15 (l.wu (+ v1-14 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 30] (set! a0-2 (+ v1-15 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 31] (set! v1-16 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 32] (set! v1-17 (+ v1-16 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [ 33] (set! f0-0 (vec3dot a0-2 v1-17)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [ 34] (set! v1-18 (fpr->gpr f0-0)) [] -> [v1: float ] + mtc1 f0, v1 ;; [ 35] (set! f0-1 (gpr->fpr v1-18)) [v1: float ] -> [] + lui v1, L804 ;; [ 36] (set! v1-19 L804) [] -> [v1: ] + ori v1, v1, L804 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 37] (set! f1-0 (l.f v1-19)) [v1: ] -> [] + c.lt.s f0, f1 ;; [ 38] (b! (<.s f0-1 f1-0) L319 (set! v1-20 #t)) [] -> [v1: symbol ] + bc1t L319 + daddiu v1, s7, 8 + +B8: + or v1, s7, r0 ;; [ 39] (set! v1-20 #f) [] -> [v1: '#f ] +B9: +L319: + beql s7, v1, L321 ;; [ 40] (bl! (not v1-20) L321 (no-delay!)) [v1: symbol ] -> [] +B10: + or v1, v1, r0 ;; [ 41] (set! v1-13 v1-20) [v1: symbol ] -> [v1: symbol ] + +B11: + lui v1, L805 ;; [ 42] (set! v1-21 L805) [] -> [v1: ] + ori v1, v1, L805 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 43] (set! f0-2 (l.f v1-21)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 44] (set! v1-22 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 45] (set! v1-23 (l.wu (+ v1-22 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 46] (set! a0-3 (+ v1-23 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 47] (set! v1-24 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 48] (set! v1-25 (+ v1-24 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f1, 0(a0) ;; [ 49] (set! f1-1 (vec3dot a0-3 v1-25)) [v1: vector a0: vector ] -> [] + lwc1 f2, 4(a0) + lwc1 f3, 8(a0) + lwc1 f4, 0(v1) + lwc1 f5, 4(v1) + lwc1 f6, 8(v1) + mula.s f1, f4 + madda.s f2, f5 + madd.s f1, f3, f6 + mfc1 v1, f1 ;; [ 50] (set! v1-26 (fpr->gpr f1-1)) [] -> [v1: float ] + mtc1 f1, v1 ;; [ 51] (set! f1-2 (gpr->fpr v1-26)) [v1: float ] -> [] + c.lt.s f0, f1 ;; [ 52] (b! (<.s f0-2 f1-2) L320 (set! v1-27 #t)) [] -> [v1: symbol ] + bc1t L320 + daddiu v1, s7, 8 + +B12: + or v1, s7, r0 ;; [ 53] (set! v1-27 #f) [] -> [v1: '#f ] +B13: +L320: + beql s7, v1, L321 ;; [ 54] (bl! (not v1-27) L321 (no-delay!)) [v1: symbol ] -> [] +B14: + or v1, v1, r0 ;; [ 55] (set! v1-13 v1-27) [v1: symbol ] -> [v1: symbol ] + +B15: + lw v1, *display*(s7) ;; [ 56] (set! v1-28 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 57] (set! v1-29 (l.d (+ v1-28 780))) [v1: display ] -> [v1: time-frame ] + lwu a0, 108(s6) ;; [ 58] (set! a0-4 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 1708(a0) ;; [ 59] (set! a0-5 (l.d (+ a0-4 1708))) [a0: control-info ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [ 60] (set! v1-30 (- v1-29 a0-5)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + lw a0, *TARGET-bank*(s7) ;; [ 61] (set! a0-6 *TARGET-bank*) [] -> [a0: target-bank ] + ld a0, 564(a0) ;; [ 62] (set! a0-7 (l.d (+ a0-6 564))) [a0: target-bank ] -> [a0: seconds ] + slt v1, v1, a0 ;; [ 63] (set! a0-8 (>=.si v1-30 a0-7)) [v1: time-frame a0: seconds ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L321 ;; [ 64] (bl! (not a0-8) L321 (no-delay!)) [a0: symbol ] -> [] +B16: + or v1, a0, r0 ;; [ 65] (set! v1-13 a0-8) [a0: symbol ] -> [v1: symbol ] + +B17: + lwu v1, 160(s6) ;; [ 66] (set! v1-31 (l.wu (+ self 160))) [s6: target ] -> [v1: state-flags ] + andi v1, v1, 4096 ;; [ 67] (set! v1-32 (logand v1-31 4096)) [v1: state-flags ] -> [v1: state-flags ] + bnel v1, r0, L321 ;; [ 68] (bl! (nonzero? v1-32) L321 (no-delay!)) [v1: state-flags ] -> [] +B18: + or v1, s7, r0 ;; [ 69] (set! v1-13 #f) [] -> [v1: '#f ] + +B19: + daddiu v1, s7, 8 ;; [ 70] (set! v1-33 #t) [] -> [v1: symbol ] + lwu a0, 108(s6) ;; [ 71] (set! a0-9 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 660(a0) ;; [ 72] (set! a0-10 (l.wu (+ a0-9 660))) [a0: control-info ] -> [a0: surface ] + lwu a0, 144(a0) ;; [ 73] (set! a0-11 (l.wu (+ a0-10 144))) [a0: surface ] -> [a0: surface-flags ] + andi a0, a0, 384 ;; [ 74] (set! a0-12 (logand a0-11 384)) [a0: surface-flags ] -> [a0: surface-flags ] + movn v1, s7, a0 ;; [ 75] (cmove-#f-nonzero v1-13 a0-12 v1-33) + ;; [v1: symbol a0: surface-flags ] -> [v1: symbol ] +B20: +L321: + beq s7, v1, L324 ;; [ 76] (b! (not v1-13) L324 (set! v1-34 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B21: + lw t9, enter-state(s7) ;; [ 77] (set! t9-1 enter-state) [] -> [t9: ] + lui v1, L773 ;; [ 78] (set! v1-35 L773) [] -> [v1: ] + ori v1, v1, L773 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 79] (set! a0-13 (l.w v1-35)) [v1: ] -> [a0: int ] + lui v1, L729 ;; [ 80] (set! v1-36 L729) [] -> [v1: ] + ori v1, v1, L729 + addu v1, fp, v1 + lw a1, 0(v1) ;; [ 81] (set! a1-5 (l.w v1-36)) [v1: ] -> [a1: int ] + lwu v1, 108(s6) ;; [ 82] (set! v1-37 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 83] (set! v1-38 (l.wu (+ v1-37 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 84] (set! v1-39 (l.w (+ v1-38 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 85] (set! v1-40 (sll v1-39 2)) [v1: int ] -> [v1: ] + lw a2, *cpad-list*(s7) ;; [ 86] (set! a2-0 *cpad-list*) [] -> [a2: cpad-list ] + daddu v1, v1, a2 ;; [ 87] (set! v1-41 (+ v1-40 a2-0)) + ;; [v1: a2: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 88] (set! v1-42 (l.wu (+ v1-41 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwc1 f0, 72(v1) ;; [ 89] (set! f0-3 (l.f (+ v1-42 72))) [v1: cpad-info ] -> [] + mtc1 f1, r0 ;; [ 90] (set! f1-3 0) [] -> [] + c.eq.s f0, f1 ;; [ 91] (b! (!=.s f0-3 f1-3) L322 (nop!)) [] -> [] + bc1f L322 + sll r0, r0, 0 + +B22: + lui v1, L814 ;; [ 92] (set! v1-43 L814) [] -> [v1: ] + ori v1, v1, L814 + addu v1, fp, v1 + lw a2, 0(v1) ;; [ 93] (set! a2-1 (l.w v1-43)) [v1: ] -> [a2: int ] + beq r0, r0, L323 ;; [ 94] (b! #t L323 (nop!)) [] -> [] + sll r0, r0, 0 + +B23: +L322: + lui v1, L758 ;; [ 95] (set! v1-44 L758) [] -> [v1: ] + ori v1, v1, L758 + addu v1, fp, v1 + lw a2, 0(v1) ;; [ 96] (set! a2-1 (l.w v1-44)) [v1: ] -> [a2: int ] +B24: +L323: + lw v1, target-flop(s7) ;; [ 97] (set! v1-45 target-flop) [] -> [v1: (state float float float target) ] + sw v1, 72(s6) ;; [ 98] (s.w! (+ self 72) v1-45) [v1: (state float float float target) s6: target ] -> [] + jalr ra, t9 ;; [ 99] (call! a0-13 a1-5 a2-1) + ;; [a0: int a1: int a2: int t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [100] (set! v1-46 v0-1) [v0: object ] -> [v1: object ] +B25: +L324: + lw v1, *display*(s7) ;; [101] (set! v1-47 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [102] (set! v1-48 (l.d (+ v1-47 780))) [v1: display ] -> [v1: time-frame ] + ld a0, 164(s6) ;; [103] (set! a0-14 (l.d (+ self 164))) [s6: target ] -> [a0: time-frame ] + beq a0, v1, L325 ;; [104] (b! (= a0-14 v1-48) L325 (set! v1-49 #f)) + ;; [v1: time-frame a0: time-frame ] -> [v1: '#f ] + or v1, s7, r0 + +B26: + lw t9, mod-var-jump(s7) ;; [105] (set! t9-2 mod-var-jump) + ;; [] -> [t9: (function symbol symbol symbol vector vector :behavior target) ] + daddiu a0, s7, #t ;; [106] (set! a0-15 #t) [] -> [a0: symbol ] + daddiu a1, s7, #t ;; [107] (set! a1-6 #t) [] -> [a1: symbol ] + daddiu a2, s7, 8 ;; [108] (set! a2-2 #t) [] -> [a2: symbol ] + lwu v1, 108(s6) ;; [109] (set! v1-50 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [110] (set! v1-51 (l.wu (+ v1-50 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [111] (set! v1-52 (l.w (+ v1-51 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [112] (set! v1-53 (sll v1-52 2)) [v1: int ] -> [v1: ] + lw a3, *cpad-list*(s7) ;; [113] (set! a3-0 *cpad-list*) [] -> [a3: cpad-list ] + daddu v1, v1, a3 ;; [114] (set! v1-54 (+ v1-53 a3-0)) + ;; [v1: a3: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [115] (set! v1-55 (l.wu (+ v1-54 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 40(v1) ;; [116] (set! v1-56 (l.wu (+ v1-55 40))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 16384 ;; [117] (set! v1-57 (logand v1-56 #x4000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + movz a2, s7, v1 ;; [118] (cmove-#f-zero a2-3 v1-57 a2-2) [v1: pad-buttons a2: symbol ] -> [a2: symbol ] + lwu v1, 108(s6) ;; [119] (set! v1-58 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a3, v1, 60 ;; [120] (set! a3-1 (+ v1-58 60)) [v1: control-info ] -> [a3: vector ] + jalr ra, t9 ;; [121] (call! a0-15 a1-6 a2-3 a3-1) + ;; [a0: symbol a1: symbol a2: symbol a3: vector t9: (function symbol symbol symbol vector vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [122] (set! v1-59 v0-2) [v0: vector ] -> [v1: vector ] +B27: +L325: + lw t9, seek(s7) ;; [123] (set! t9-3 seek) [] -> [t9: (function float float float float) ] + lwu v1, 108(s6) ;; [124] (set! v1-60 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 2192(v1) ;; [125] (set! f0-4 (l.f (+ v1-60 2192))) [v1: control-info ] -> [] + mfc1 a0, f0 ;; [126] (set! a0-16 (fpr->gpr f0-4)) [] -> [a0: float ] + mtc1 f0, r0 ;; [127] (set! f0-5 0) [] -> [] + lui v1, L786 ;; [128] (set! v1-61 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [129] (set! f1-4 (l.f v1-61)) [v1: ] -> [] + lui v1, L759 ;; [130] (set! v1-62 L759) [] -> [v1: ] + ori v1, v1, L759 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [131] (set! f2-0 (l.f v1-62)) [v1: ] -> [] + lui v1, L792 ;; [132] (set! v1-63 L792) [] -> [v1: ] + ori v1, v1, L792 + addu v1, fp, v1 + lwc1 f3, 0(v1) ;; [133] (set! f3-0 (l.f v1-63)) [v1: ] -> [] + lwu v1, 108(s6) ;; [134] (set! v1-64 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f4, 528(v1) ;; [135] (set! f4-0 (l.f (+ v1-64 528))) [v1: control-info ] -> [] + add.s f3, f3, f4 ;; [136] (set! f3-1 (+.s f3-0 f4-0)) [] -> [] + mul.s f2, f2, f3 ;; [137] (set! f2-1 (*.s f2-0 f3-1)) [] -> [] + min.s f1, f1, f2 ;; [138] (set! f1-5 (min.s f1-4 f2-1)) [] -> [] + max.s f0, f0, f1 ;; [139] (set! f0-6 (max.s f0-5 f1-5)) [] -> [] + mfc1 a1, f0 ;; [140] (set! a1-7 (fpr->gpr f0-6)) [] -> [a1: float ] + lw v1, *display*(s7) ;; [141] (set! v1-65 *display*) [] -> [v1: display ] + lwc1 f0, 904(v1) ;; [142] (set! f0-7 (l.f (+ v1-65 904))) [v1: display ] -> [] + mfc1 a2, f0 ;; [143] (set! a2-4 (fpr->gpr f0-7)) [] -> [a2: float ] + jalr ra, t9 ;; [144] (call! a0-16 a1-7 a2-4) + ;; [a0: float a1: float a2: float t9: (function float float float float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [145] (set! f0-8 (gpr->fpr v0-3)) [v0: float ] -> [] + lwu v1, 108(s6) ;; [146] (set! v1-66 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 2192(v1) ;; [147] (s.f! (+ v1-66 2192) f0-8) [v1: control-info ] -> [] + mfc1 v0, f0 ;; [148] (set! v0-4 (fpr->gpr f0-8)) [] -> [v0: float ] + ld ra, 0(sp) + ld fp, 8(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (trans target-double-jump) + () + (target-falling-trans #f (the-as time-frame (if (ja-group? (-> self draw art-group data 38)) + 15 + -1 + ) + ) + ) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) square) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 22118.4) + (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword36)) + (the-as time-frame (-> *TARGET-bank* stuck-timeout)) + ) + (zero? (logand (-> self state-flags) (state-flags prevent-attack))) + (zero? (logand (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08)) + ) + ) + ) + (go + target-flop + (the-as float 33775.48) + (the-as float -122880.0) + (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + 0.0 + 68812.8 + ) + ) + ) + ) + (if (!= (-> self state-time) (-> *display* base-frame-counter)) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) + ) + (seek! + (-> self control unknown-float122) + (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))) + (-> *display* seconds-per-frame) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-double-jump) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x30, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 + ;gprs: gp s5 +;; Warnings: +;; INFO: Return type mismatch surface vs none. +;; Used lq/sq + +;; a0-0: float a0-3: int a1-0: float a1-1: int a2-0: vector s6-0: target +L326: + daddiu sp, sp, -48 + sd ra, 0(sp) + sq s5, 16(sp) + sq gp, 32(sp) +B0: + or gp, a0, r0 ;; [ 0] (set! arg0 arg0) [a0: float ] -> [gp: float ] + or s5, a1, r0 ;; [ 1] (set! arg1 arg1) [a1: float ] -> [s5: float ] + daddiu v1, s7, launch ;; [ 2] (set! v1-0 'launch) [] -> [v1: symbol ] + lwu a0, 108(s6) ;; [ 3] (set! a0-1 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 2424(a0) ;; [ 4] (set! a0-2 (l.wu (+ a0-1 2424))) [a0: control-info ] -> [a0: symbol ] + bne a0, v1, L327 ;; [ 5] (b! (!= a0-2 v1-0) L327 (set! v1-1 #f)) [v1: symbol a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B1: + lw t9, enter-state(s7) ;; [ 6] (set! t9-0 enter-state) [] -> [t9: ] + lwu v1, 108(s6) ;; [ 7] (set! v1-2 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld a0, 2428(v1) ;; [ 8] (set! a0-3 (l.d (+ v1-2 2428))) [v1: control-info ] -> [a0: int ] + lwu v1, 108(s6) ;; [ 9] (set! v1-3 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld a1, 2436(v1) ;; [ 10] (set! a1-1 (l.d (+ v1-3 2436))) [v1: control-info ] -> [a1: int ] + lwu v1, 108(s6) ;; [ 11] (set! v1-4 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a2, v1, 2220 ;; [ 12] (set! a2-0 (+ v1-4 2220)) [v1: control-info ] -> [a2: vector ] + lwu v1, 108(s6) ;; [ 13] (set! v1-5 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld v1, 2444(v1) ;; [ 14] (set! v1-6 (l.d (+ v1-5 2444))) [v1: control-info ] -> [v1: vector ] + lq v1, 0(v1) ;; [ 15] (set! (the-as vector v1-7) (l.q v1-6)) [v1: vector ] -> [v1: uint128 ] + sq v1, 0(a2) ;; [ 16] (s.q! a2-0 v1-7) [v1: uint128 a2: vector ] -> [] + lwu v1, 108(s6) ;; [ 17] (set! v1-8 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld a3, 2452(v1) ;; [ 18] (set! a3-0 (l.d (+ v1-8 2452))) [v1: control-info ] -> [a3: int ] + lw v1, target-launch(s7) ;; [ 19] (set! v1-9 target-launch) [] -> [v1: (state float symbol vector int target) ] + sw v1, 72(s6) ;; [ 20] (s.w! (+ self 72) v1-9) + ;; [v1: (state float symbol vector int target) s6: target ] -> [] + jalr ra, t9 ;; [ 21] (call! a0-3 a1-1 a2-0 a3-0) + ;; [a0: int a1: int a2: vector a3: int t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 22] (set! v1-10 v0-0) [v0: object ] -> [v1: object ] +B2: +L327: + lw v1, *display*(s7) ;; [ 23] (set! v1-11 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 24] (set! v1-12 (l.d (+ v1-11 780))) [v1: display ] -> [v1: time-frame ] + sd v1, 164(s6) ;; [ 25] (s.d! (+ self 164) v1-12) [v1: time-frame s6: target ] -> [] + lw t9, init-var-jump(s7) ;; [ 26] (set! t9-1 init-var-jump) + ;; [] -> [t9: (function float float vector vector vector vector :behavior target) ] + daddiu a2, s7, #t ;; [ 27] (set! a2-1 #t) [] -> [a2: symbol ] + daddiu a3, s7, #t ;; [ 28] (set! a3-1 #t) [] -> [a3: symbol ] + lwu v1, 108(s6) ;; [ 29] (set! v1-13 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu t0, v1, 60 ;; [ 30] (set! t0-0 (+ v1-13 60)) [v1: control-info ] -> [t0: vector ] + or a0, gp, r0 ;; [ 31] (set! a0-4 arg0) [gp: float ] -> [a0: float ] + or a1, s5, r0 ;; [ 32] (set! a1-2 arg1) [s5: float ] -> [a1: float ] + jalr ra, t9 ;; [ 33] (call! a0-4 a1-2 a2-1 a3-1 t0-0) + ;; [a0: float a1: float a2: symbol a3: symbol t0: vector t9: (function float float vector vector vector vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + addiu v1, r0, -8 ;; [ 34] (set! v1-14 -8) [] -> [v1: ] + lwu a0, 108(s6) ;; [ 35] (set! a0-5 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 268(a0) ;; [ 36] (set! a0-6 (l.d (+ a0-5 268))) [a0: control-info ] -> [a0: cshape-moving-flags ] + and v1, v1, a0 ;; [ 37] (set! v1-15 (logand v1-14 a0-6)) + ;; [v1: a0: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + lwu a0, 108(s6) ;; [ 38] (set! a0-7 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sd v1, 268(a0) ;; [ 39] (s.d! (+ a0-7 268) v1-15) [v1: cshape-moving-flags a0: control-info ] -> [] + lw v0, *double-jump-mods*(s7);; [ 40] (set! v0-2 *double-jump-mods*) [] -> [v0: surface ] + lwu v1, 108(s6) ;; [ 41] (set! v1-16 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw v0, 656(v1) ;; [ 42] (s.w! (+ v1-16 656) v0-2) [v0: surface v1: control-info ] -> [] + ld ra, 0(sp) + lq gp, 32(sp) + lq s5, 16(sp) + jr ra + daddiu sp, sp, 48 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-double-jump) + ((arg0 float) (arg1 float)) + (when (= (-> self control unknown-symbol40) 'launch) + enter-state + (let ((a0-3 (-> self control unknown-dword60)) + (a1-1 (-> self control unknown-dword61)) + (a2-0 (-> self control unknown-vector102)) + ) + (set! (-> a2-0 quad) (-> (the-as vector (-> self control unknown-dword62)) quad)) + (go target-launch (the-as float a0-3) (the-as symbol a1-1) a2-0 (-> self control unknown-dword63)) + ) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #t) (-> self control transv)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *double-jump-mods*) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-jump-forward) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x20, fp? 1 ra? 1 ep? 1 + ;gprs: gp +;; s6-0: target +L328: + daddiu sp, sp, -32 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq gp, 16(sp) +B0: + lw t9, ja-channel-set!(s7);; [ 0] (set! t9-0 ja-channel-set!) + ;; [] -> [t9: (function int int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [ 1] (set! a0-1 1) [] -> [a0: ] + jalr ra, t9 ;; [ 2] (call! a0-1) + ;; [a0: t9: (function int int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [ 3] (set! v1-0 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 4] (set! v1-1 (l.wu (+ v1-0 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu gp, r0, v1 ;; [ 5] (set! gp-0 (+ v1-1 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lwu v1, 116(s6) ;; [ 6] (set! v1-2 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 7] (set! v1-3 (l.wu (+ v1-2 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 164(v1) ;; [ 8] (set! v1-4 (l.wu (+ v1-3 164))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(gp) ;; [ 9] (s.w! (+ gp-0 12) v1-4) [v1: art-element gp: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [ 10] (set! v1-5 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 11] (set! v1-6 (l.wu (+ v1-5 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 164(v1) ;; [ 12] (set! v1-7 (l.wu (+ v1-6 164))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 13] (set! (the-as art-joint-anim v1-8) (l.wu (+ v1-7 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 14] (set! v1-9 (l.h (+ v1-8 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 15] (set! v1-10 (+ v1-9 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 16] (set! f0-0 (gpr->fpr v1-10)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 17] (set! f0-1 (i2f f0-0)) [] -> [] + swc1 f0, 24(gp) ;; [ 18] (s.f! (+ gp-0 24) f0-1) [gp: joint-control-channel ] -> [] + lui v1, L786 ;; [ 19] (set! v1-11 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 20] (set! f0-2 (l.f v1-11)) [v1: ] -> [] + swc1 f0, 28(gp) ;; [ 21] (s.f! (+ gp-0 28) f0-2) [gp: joint-control-channel ] -> [] + lw t9, ja-aframe(s7) ;; [ 22] (set! t9-1 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L750 ;; [ 23] (set! v1-12 L750) [] -> [v1: ] + ori v1, v1, L750 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 24] (set! a0-2 (l.w v1-12)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [ 25] (set! a1-1 0) [] -> [a1: ] + jalr ra, t9 ;; [ 26] (call! a0-2 a1-1) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 27] (set! f0-3 (gpr->fpr v0-1)) [v0: float ] -> [] + swc1 f0, 16(gp) ;; [ 28] (s.f! (+ gp-0 16) f0-3) [gp: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [ 29] (set! t9-2 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [ 30] (set! v1-13 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 31] (set! v1-14 (l.wu (+ v1-13 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 164(v1) ;; [ 32] (set! a1-2 (l.wu (+ v1-14 164))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [ 33] (set! a2-0 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, gp, r0 ;; [ 34] (set! a0-3 gp-0) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [ 35] (call! a0-3 a1-2 a2-0) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 36] (set! v1-15 v0-2) [v0: int ] -> [v1: int ] +B1: +L329: + lwu v1, 108(s6) ;; [ 37] (set! v1-16 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sd r0, 18948(v1) ;; [ 38] (s.d! (+ v1-16 #x4a04) 0) [v1: control-info ] -> [] + lwu s6, 44(s6) ;; [ 39] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [ 40] (set! v1-17 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 41] (set! v1-18 (l.wu (+ v1-17 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 42] (set! a0-4 (+ v1-18 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [ 43] (set! v1-19 (l.wu (+ a0-4 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 44] (set! v1-20 (l.wu (+ v1-19 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 45] (set! v1-21 (l.h (+ v1-20 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 46] (set! v1-22 (+ v1-21 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 47] (set! f0-4 (gpr->fpr v1-22)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 48] (set! f0-5 (i2f f0-4)) [] -> [] + swc1 f0, 24(a0) ;; [ 49] (s.f! (+ a0-4 24) f0-5) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [ 50] (set! v1-23 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 51] (set! f0-6 (l.f v1-23)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [ 52] (s.f! (+ a0-4 28) f0-6) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 53] (set! t9-3 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [ 54] (set! a1-3 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [ 55] (set! a2-1 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 56] (call! a0-4 a1-3 a2-1) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 57] (set! v1-24 v0-3) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [ 58] (set! t9-4 ja-done?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 59] (set! a0-5 0) [] -> [a0: ] + jalr ra, t9 ;; [ 60] (call! a0-5) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L329 ;; [ 61] (b! (not v0-4) L329 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B2: + or v1, s7, r0 ;; [ 62] (set! v1-25 #f) [] -> [v1: '#f ] + lwu v1, 120(s6) ;; [ 63] (set! v1-26 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 64] (set! v1-27 (l.wu (+ v1-26 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 65] (set! a0-6 (+ v1-27 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 66] (set! v1-28 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 67] (set! v1-29 (l.wu (+ v1-28 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 180(v1) ;; [ 68] (set! v1-30 (l.wu (+ v1-29 180))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [ 69] (s.w! (+ a0-6 12) v1-30) [v1: art-element a0: joint-control-channel ] -> [] + lui v1, L786 ;; [ 70] (set! v1-31 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 71] (set! f0-7 (l.f v1-31)) [v1: ] -> [] + swc1 f0, 24(a0) ;; [ 72] (s.f! (+ a0-6 24) f0-7) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [ 73] (set! f0-8 0) [] -> [] + swc1 f0, 16(a0) ;; [ 74] (s.f! (+ a0-6 16) f0-8) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [ 75] (set! t9-5 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [ 76] (set! v1-32 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 77] (set! v1-33 (l.wu (+ v1-32 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 180(v1) ;; [ 78] (set! a1-4 (l.wu (+ v1-33 180))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-loop!(s7) ;; [ 79] (set! a2-2 num-func-loop!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 80] (call! a0-6 a1-4 a2-2) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 81] (set! v1-34 v0-5) [v0: int ] -> [v1: int ] +B3: +L330: + lwu s6, 44(s6) ;; [ 82] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [ 83] (set! v1-35 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 84] (set! v1-36 (l.wu (+ v1-35 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 85] (set! a0-7 (+ v1-36 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 86] (set! v1-37 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 87] (set! v1-38 (l.wu (+ v1-37 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 180(v1) ;; [ 88] (set! v1-39 (l.wu (+ v1-38 180))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [ 89] (s.w! (+ a0-7 12) v1-39) [v1: art-element a0: joint-control-channel ] -> [] + lui v1, L786 ;; [ 90] (set! v1-40 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 91] (set! f0-9 (l.f v1-40)) [v1: ] -> [] + swc1 f0, 24(a0) ;; [ 92] (s.f! (+ a0-7 24) f0-9) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 93] (set! t9-6 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [ 94] (set! v1-41 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 95] (set! v1-42 (l.wu (+ v1-41 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 180(v1) ;; [ 96] (set! a1-5 (l.wu (+ v1-42 180))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-loop!(s7) ;; [ 97] (set! a2-3 num-func-loop!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 98] (call! a0-7 a1-5 a2-3) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 99] (set! v1-43 v0-6) [v0: int ] -> [v1: int ] + beq r0, r0, L330 ;; [100] (b! #t L330 (nop!)) [] -> [] + sll r0, r0, 0 + +B4: + or v0, s7, r0 ;; [101] (set! v0-7 #f) [] -> [v0: ] + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 16(sp) + jr ra + daddiu sp, sp, 32 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-jump-forward) + ((arg0 float) (arg1 float)) + (ja-channel-set! 1) + (ja-no-eval :group! (-> self draw art-group data 34) + :num! (seek!) + :frame-num (ja-aframe (the-as float 3.0) 0) + ) + (until (ja-done? 0) + (set! (-> self control unknown-dword70) 0) + (suspend) + (ja :num! (seek!)) + ) + (ja-no-eval :group! (-> self draw art-group data 38) :num! (loop!) :frame-num 0.0) + (loop + (suspend) + (ja :group! (-> self draw art-group data 38) :num! (loop!)) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-jump-forward) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; Warnings: +;; INFO: Return type mismatch surface vs none. + +;; a0-0: float a1-0: float s6-0: target +L331: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lw v1, target-jump(s7) ;; [ 0] (set! v1-0 target-jump) [] -> [v1: (state float float surface target) ] + lwu t9, 24(v1) ;; [ 1] (set! t9-0 (l.wu (+ v1-0 24))) + ;; [v1: (state float float surface target) ] -> [t9: (function float float surface none :behavior target) ] + or a2, s7, r0 ;; [ 2] (set! a2-0 #f) [] -> [a2: '#f ] + jalr ra, t9 ;; [ 3] (call! arg0 arg1 a2-0) + ;; [a0: float a1: float a2: '#f t9: (function float float surface none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw v0, *forward-jump-mods*(s7);; [ 4] (set! v0-1 *forward-jump-mods*) [] -> [v0: surface ] + lwu v1, 108(s6) ;; [ 5] (set! v1-1 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw v0, 656(v1) ;; [ 6] (s.w! (+ v1-1 656) v0-1) [v0: surface v1: control-info ] -> [] + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-jump-forward) + ((arg0 float) (arg1 float)) + ((-> target-jump enter) arg0 arg1 (the-as surface #f)) + (set! (-> self control unknown-surface00) *forward-jump-mods*) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-jump) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x30, fp? 1 ra? 1 ep? 1 + ;gprs: gp + ;fprs: f30 f28 f26 +;; Warnings: +;; INFO: Return type mismatch symbol vs none. + +;; v1-45: symbol s6-0: target gp-1: joint-control-channel +;; f0-8: float f30-0: float +L332: + daddiu sp, sp, -48 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq gp, 16(sp) + swc1 f26, 32(sp) + swc1 f28, 36(sp) + swc1 f30, 40(sp) +B0: + lw t9, ja-channel-push!(s7);; [ 0] (set! t9-0 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 2 ;; [ 1] (set! a0-1 2) [] -> [a0: ] + addiu a1, r0, 15 ;; [ 2] (set! a1-1 15) [] -> [a1: ] + jalr ra, t9 ;; [ 3] (call! a0-1 a1-1) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [ 4] (set! v1-0 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 5] (set! v1-1 (l.wu (+ v1-0 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu gp, r0, v1 ;; [ 6] (set! gp-0 (+ v1-1 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lw t9, joint-control-channel-group-eval!(s7);; [ 7] (set! t9-1 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a0, gp, r0 ;; [ 8] (set! a0-2 gp-0) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 9] (set! v1-2 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 10] (set! v1-3 (l.wu (+ v1-2 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 164(v1) ;; [ 11] (set! a1-2 (l.wu (+ v1-3 164))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-identity(s7);; [ 12] (set! a2-1 num-func-identity) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 13] (call! a0-2 a1-2 a2-1) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + mtc1 f0, r0 ;; [ 14] (set! f0-0 0) [] -> [] + swc1 f0, 16(gp) ;; [ 15] (s.f! (+ gp-0 16) f0-0) [gp: joint-control-channel ] -> [] + mfc1 v1, f0 ;; [ 16] (set! v1-4 (fpr->gpr f0-0)) [] -> [v1: float ] + lwu v1, 120(s6) ;; [ 17] (set! v1-5 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 18] (set! v1-6 (l.wu (+ v1-5 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu a0, v1, 48 ;; [ 19] (set! a0-3 (+ v1-6 48)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 108(s6) ;; [ 20] (set! v1-7 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 2192(v1) ;; [ 21] (set! f0-1 (l.f (+ v1-7 2192))) [v1: control-info ] -> [] + swc1 f0, 8(a0) ;; [ 22] (s.f! (+ a0-3 8) f0-1) [a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [ 23] (set! v1-8 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 24] (set! v1-9 (l.wu (+ v1-8 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 188(v1) ;; [ 25] (set! v1-10 (l.wu (+ v1-9 188))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [ 26] (s.w! (+ a0-3 12) v1-10) [v1: art-element a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [ 27] (set! f0-2 0) [] -> [] + swc1 f0, 24(a0) ;; [ 28] (s.f! (+ a0-3 24) f0-2) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 29] (set! t9-2 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [ 30] (set! v1-11 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 31] (set! v1-12 (l.wu (+ v1-11 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 188(v1) ;; [ 32] (set! a1-3 (l.wu (+ v1-12 188))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-chan(s7) ;; [ 33] (set! a2-2 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 34] (call! a0-3 a1-3 a2-2) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 35] (set! v1-13 v0-2) [v0: int ] -> [v1: int ] + lwu s6, 44(s6) ;; [ 36] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [ 37] (set! v1-14 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 38] (set! v1-15 (l.wu (+ v1-14 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 39] (set! a0-4 (+ v1-15 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 40] (set! v1-16 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 41] (set! v1-17 (l.wu (+ v1-16 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 164(v1) ;; [ 42] (set! v1-18 (l.wu (+ v1-17 164))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [ 43] (s.w! (+ a0-4 12) v1-18) [v1: art-element a0: joint-control-channel ] -> [] + lui v1, L786 ;; [ 44] (set! v1-19 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 45] (set! f0-3 (l.f v1-19)) [v1: ] -> [] + swc1 f0, 24(a0) ;; [ 46] (s.f! (+ a0-4 24) f0-3) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 47] (set! t9-3 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [ 48] (set! v1-20 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 49] (set! v1-21 (l.wu (+ v1-20 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 164(v1) ;; [ 50] (set! a1-4 (l.wu (+ v1-21 164))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-+!(s7) ;; [ 51] (set! a2-3 num-func-+!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 52] (call! a0-4 a1-4 a2-3) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 53] (set! v1-22 v0-3) [v0: int ] -> [v1: int ] + lwu v1, 120(s6) ;; [ 54] (set! v1-23 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 55] (set! v1-24 (l.wu (+ v1-23 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu a0, v1, 48 ;; [ 56] (set! a0-5 (+ v1-24 48)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 108(s6) ;; [ 57] (set! v1-25 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 2192(v1) ;; [ 58] (set! f0-4 (l.f (+ v1-25 2192))) [v1: control-info ] -> [] + swc1 f0, 8(a0) ;; [ 59] (s.f! (+ a0-5 8) f0-4) [a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [ 60] (set! v1-26 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 61] (set! v1-27 (l.wu (+ v1-26 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 188(v1) ;; [ 62] (set! v1-28 (l.wu (+ v1-27 188))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [ 63] (s.w! (+ a0-5 12) v1-28) [v1: art-element a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [ 64] (set! f0-5 0) [] -> [] + swc1 f0, 24(a0) ;; [ 65] (s.f! (+ a0-5 24) f0-5) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 66] (set! t9-4 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [ 67] (set! v1-29 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 68] (set! v1-30 (l.wu (+ v1-29 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 188(v1) ;; [ 69] (set! a1-5 (l.wu (+ v1-30 188))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-chan(s7) ;; [ 70] (set! a2-4 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 71] (call! a0-5 a1-5 a2-4) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 72] (set! v1-31 v0-4) [v0: int ] -> [v1: int ] + lwu s6, 44(s6) ;; [ 73] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + +B1: +L333: + lwu v1, 108(s6) ;; [ 74] (set! v1-32 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 75] (set! v1-33 (l.wu (+ v1-32 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 76] (set! a0-6 (+ v1-33 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 77] (set! v1-34 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 78] (set! v1-35 (+ v1-34 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [ 79] (set! f0-6 (vec3dot a0-6 v1-35)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [ 80] (set! v1-36 (fpr->gpr f0-6)) [] -> [v1: float ] + mtc1 f30, v1 ;; [ 81] (set! f30-0 (gpr->fpr v1-36)) [v1: float ] -> [] + lui v1, L747 ;; [ 82] (set! v1-37 L747) [] -> [v1: ] + ori v1, v1, L747 + addu v1, fp, v1 + lwc1 f28, 0(v1) ;; [ 83] (set! f28-0 (l.f v1-37)) [v1: ] -> [] + lw t9, ja-aframe-num(s7) ;; [ 84] (set! t9-5 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 85] (set! a0-7 0) [] -> [a0: ] + jalr ra, t9 ;; [ 86] (call! a0-7) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 87] (set! f0-7 (gpr->fpr v0-5)) [v0: float ] -> [] + sub.s f0, f28, f0 ;; [ 88] (set! f0-8 (-.s f28-0 f0-7)) [] -> [] + lwu v1, 120(s6) ;; [ 89] (set! v1-38 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 90] (set! v1-39 (l.wu (+ v1-38 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu gp, r0, v1 ;; [ 91] (set! gp-1 (+ v1-39 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lwu v1, 12(gp) ;; [ 92] (set! v1-40 (l.wu (+ gp-1 12))) + ;; [gp: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 93] (set! v1-41 (l.wu (+ v1-40 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 94] (set! v1-42 (l.h (+ v1-41 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 95] (set! v1-43 (+ v1-42 -1)) [v1: int ] -> [v1: ] + mtc1 f1, v1 ;; [ 96] (set! f1-0 (gpr->fpr v1-43)) [v1: ] -> [] + cvt.s.w f1, f1 ;; [ 97] (set! f1-1 (i2f f1-0)) [] -> [] + swc1 f1, 24(gp) ;; [ 98] (s.f! (+ gp-1 24) f1-1) [gp: joint-control-channel ] -> [] + mtc1 f1, r0 ;; [ 99] (set! f1-2 0) [] -> [] + c.lt.s f1, f30 ;; [100] (b! (<.s f1-2 f30-0) L334 (set! v1-44 #t)) [] -> [v1: symbol ] + bc1t L334 + daddiu v1, s7, 8 + +B2: + or v1, s7, r0 ;; [101] (set! v1-44 #f) [] -> [v1: '#f ] +B3: +L334: + beql s7, v1, L335 ;; [102] (bl! (not v1-44) L335 (no-delay!)) [v1: symbol ] -> [] +B4: + or v1, v1, r0 ;; [103] (set! v1-45 v1-44) [v1: symbol ] -> [v1: symbol ] + +B5: + mtc1 f1, r0 ;; [104] (set! f1-3 0) [] -> [] + c.lt.s f1, f0 ;; [105] (b! (<.s f1-3 f0-8) L335 (set! v1-45 #t)) [] -> [v1: symbol ] + bc1t L335 + daddiu v1, s7, 8 + +B6: + or v1, s7, r0 ;; [106] (set! v1-45 #f) [] -> [v1: '#f ] +B7: +L335: + beq s7, v1, L336 ;; [107] (b! (not v1-45) L336 (nop!)) [v1: symbol ] -> [] + sll r0, r0, 0 + +B8: + lui v1, L750 ;; [108] (set! v1-46 L750) [] -> [v1: ] + ori v1, v1, L750 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [109] (set! f1-4 (l.f v1-46)) [v1: ] -> [] + min.s f28, f1, f0 ;; [110] (set! f28-1 (min.s f1-4 f0-8)) [] -> [] + lui v1, L740 ;; [111] (set! v1-47 L740) [] -> [v1: ] + ori v1, v1, L740 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [112] (set! f1-5 (l.f v1-47)) [v1: ] -> [] + mul.s f26, f1, f0 ;; [113] (set! f26-0 (*.s f1-5 f0-8)) [] -> [] + lw t9, time-to-apex(s7) ;; [114] (set! t9-6 time-to-apex) [] -> [t9: (function float float int) ] + mfc1 a0, f30 ;; [115] (set! a0-8 (fpr->gpr f30-0)) [] -> [a0: float ] + lui v1, L730 ;; [116] (set! v1-48 L730) [] -> [v1: ] + ori v1, v1, L730 + addu v1, fp, v1 + lw a1, 0(v1) ;; [117] (set! a1-6 (l.w v1-48)) [v1: ] -> [a1: int ] + jalr ra, t9 ;; [118] (call! a0-8 a1-6) + ;; [a0: float a1: int t9: (function float float int) ] -> [v0: int ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [119] (set! f0-9 (gpr->fpr v0-6)) [v0: int ] -> [] + cvt.s.w f0, f0 ;; [120] (set! f0-10 (i2f f0-9)) [] -> [] + div.s f0, f26, f0 ;; [121] (set! f0-11 (/.s f26-0 f0-10)) [] -> [] + min.s f0, f28, f0 ;; [122] (set! f0-12 (min.s f28-1 f0-11)) [] -> [] + mfc1 v1, f0 ;; [123] (set! v1-49 (fpr->gpr f0-12)) [] -> [v1: float ] + beq r0, r0, L337 ;; [124] (b! #t L337 (nop!)) [] -> [] + sll r0, r0, 0 + +B9: +L336: + lui v1, L786 ;; [125] (set! v1-50 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw v1, 0(v1) ;; [126] (set! v1-49 (l.w v1-50)) [v1: ] -> [v1: int ] +B10: +L337: + mtc1 f0, v1 ;; [127] (set! f0-13 (gpr->fpr (the-as float v1-49))) [v1: float ] -> [] + swc1 f0, 28(gp) ;; [128] (s.f! (+ gp-1 28) f0-13) [gp: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [129] (set! t9-7 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [130] (set! a1-7 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [131] (set! a2-5 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, gp, r0 ;; [132] (set! a0-9 gp-1) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [133] (call! a0-9 a1-7 a2-5) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [134] (set! v1-51 v0-7) [v0: int ] -> [v1: int ] + lwu v1, 120(s6) ;; [135] (set! v1-52 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [136] (set! v1-53 (l.wu (+ v1-52 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu a0, v1, 48 ;; [137] (set! a0-10 (+ v1-53 48)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 108(s6) ;; [138] (set! v1-54 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 2192(v1) ;; [139] (set! f0-14 (l.f (+ v1-54 2192))) [v1: control-info ] -> [] + swc1 f0, 8(a0) ;; [140] (s.f! (+ a0-10 8) f0-14) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [141] (set! f0-15 0) [] -> [] + swc1 f0, 24(a0) ;; [142] (s.f! (+ a0-10 24) f0-15) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [143] (set! t9-8 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [144] (set! a1-8 #f) [] -> [a1: '#f ] + lw a2, num-func-chan(s7) ;; [145] (set! a2-6 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [146] (call! a0-10 a1-8 a2-6) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [147] (set! v1-55 v0-8) [v0: int ] -> [v1: int ] + lwu s6, 44(s6) ;; [148] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lw t9, ja-done?(s7) ;; [149] (set! t9-9 ja-done?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [150] (set! a0-11 0) [] -> [a0: ] + jalr ra, t9 ;; [151] (call! a0-11) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L333 ;; [152] (b! (not v0-9) L333 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B11: + or v1, s7, r0 ;; [153] (set! v1-56 #f) [] -> [v1: '#f ] + lw t9, target-falling-anim(s7);; [154] (set! t9-10 target-falling-anim) + ;; [] -> [t9: (function time-frame time-frame symbol :behavior target) ] + addiu a0, r0, -1 ;; [155] (set! a0-12 -1) [] -> [a0: ] + addiu a1, r0, 60 ;; [156] (set! a1-9 60) [] -> [a1: ] + jalr ra, t9 ;; [157] (call! a0-12 a1-9) + ;; [a0: a1: t9: (function time-frame time-frame symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + ld ra, 0(sp) + ld fp, 8(sp) + lwc1 f30, 40(sp) + lwc1 f28, 36(sp) + lwc1 f26, 32(sp) + lq gp, 16(sp) + jr ra + daddiu sp, sp, 48 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-jump) + ((arg0 float) (arg1 float) (arg2 surface)) + (ja-channel-push! 2 (seconds 0.05)) + (ja :group! (-> self draw art-group data 34) :num! min) + (ja :chan 1 + :group! (-> self draw art-group data 40) + :num! (chan 0) + :frame-interp (-> self control unknown-float122) + ) + (suspend) + (ja :group! (-> self draw art-group data 34) :num! (+!)) + (ja :chan 1 + :group! (-> self draw art-group data 40) + :num! (chan 0) + :frame-interp (-> self control unknown-float122) + ) + (suspend) + (until (ja-done? 0) + (let ((f30-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (f0-8 (- 20.0 (ja-aframe-num 0))) + (gp-1 (-> self skel root-channel 0)) + ) + (set! (-> gp-1 param 0) (the float (+ (-> gp-1 frame-group data 0 length) -1))) + (let ((v1-45 (and (< 0.0 f30-0) (< 0.0 f0-8)))) + (set! (-> gp-1 param 1) + (the-as + float + (if v1-45 + (fmin (fmin 3.0 f0-8) (/ (* 5.0 f0-8) (the float (time-to-apex f30-0 (the-as float -245760.0))))) + 1.0 + ) + ) + ) + ) + (joint-control-channel-group-eval! gp-1 (the-as art-joint-anim #f) num-func-seek!) + ) + (ja :chan 1 :num! (chan 0) :frame-interp (-> self control unknown-float122)) + (suspend) + ) + (target-falling-anim -1 (seconds 0.2)) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (trans target-jump) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 1 ra? 1 ep? 1 +;; Warnings: +;; INFO: Return type mismatch float vs none. + +;; s6-0: target +L338: + daddiu sp, sp, -16 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 +B0: + lwu v1, 108(s6) ;; [ 0] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 2196(v1) ;; [ 1] (set! f0-0 (l.f (+ v1-0 2196))) [v1: control-info ] -> [] + lui v1, L760 ;; [ 2] (set! v1-1 L760) [] -> [v1: ] + ori v1, v1, L760 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 3] (set! f1-0 (l.f v1-1)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 4] (set! v1-2 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 5] (set! v1-3 (l.wu (+ v1-2 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 6] (set! v1-4 (l.w (+ v1-3 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 7] (set! v1-5 (sll v1-4 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 8] (set! a0-0 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 9] (set! v1-6 (+ v1-5 a0-0)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 10] (set! v1-7 (l.wu (+ v1-6 4))) [v1: ] -> [v1: cpad-info ] + lbu v1, 14(v1) ;; [ 11] (set! v1-8 (l.bu (+ v1-7 14))) [v1: cpad-info ] -> [v1: uint ] + mtc1 f2, v1 ;; [ 12] (set! f2-0 (gpr->fpr v1-8)) [v1: uint ] -> [] + cvt.s.w f2, f2 ;; [ 13] (set! f2-1 (i2f f2-0)) [] -> [] + mul.s f1, f1, f2 ;; [ 14] (set! f1-1 (*.s f1-0 f2-1)) [] -> [] + max.s f0, f0, f1 ;; [ 15] (set! f0-1 (max.s f0-0 f1-1)) [] -> [] + lwu v1, 108(s6) ;; [ 16] (set! v1-9 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 2196(v1) ;; [ 17] (s.f! (+ v1-9 2196) f0-1) [v1: control-info ] -> [] + lw t9, target-falling-trans(s7);; [ 18] (set! t9-0 target-falling-trans) + ;; [] -> [t9: (function basic time-frame none :behavior target) ] + or a0, s7, r0 ;; [ 19] (set! a0-1 #f) [] -> [a0: '#f ] + lwu v1, 120(s6) ;; [ 20] (set! v1-10 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 21] (set! v1-11 (l.w (+ v1-10 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 22] (b! (<=0.si v1-11) L339 (set! v1-12 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L339 + or v1, s7, r0 + +B1: + lwu v1, 120(s6) ;; [ 23] (set! v1-13 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 24] (set! v1-14 (l.wu (+ v1-13 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 25] (set! v1-12 (l.wu (+ v1-14 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B2: +L339: + lwu a1, 116(s6) ;; [ 26] (set! a1-0 (l.wu (+ self 116))) [s6: target ] -> [a1: draw-control ] + lwu a1, 4(a1) ;; [ 27] (set! a1-1 (l.wu (+ a1-0 4))) [a1: draw-control ] -> [a1: art-group ] + lwu a1, 180(a1) ;; [ 28] (set! a1-2 (l.wu (+ a1-1 180))) [a1: art-group ] -> [a1: art-element ] + dsubu v1, v1, a1 ;; [ 29] (set! a1-3 (= v1-12 a1-2)) [v1: art-joint-anim a1: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, v1 + beq s7, a1, L340 ;; [ 30] (b! (not a1-3) L340 (nop!)) [a1: symbol ] -> [] + sll r0, r0, 0 + +B3: + addiu a1, r0, 15 ;; [ 31] (set! a1-4 15) [] -> [a1: ] + beq r0, r0, L341 ;; [ 32] (b! #t L341 (nop!)) [] -> [] + sll r0, r0, 0 + +B4: +L340: + addiu a1, r0, -1 ;; [ 33] (set! a1-4 -1) [] -> [a1: ] +B5: +L341: + jalr ra, t9 ;; [ 34] (call! a0-1 a1-4) + ;; [a0: '#f a1: int t9: (function basic time-frame none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lwu v1, 108(s6) ;; [ 35] (set! v1-15 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 36] (set! v1-16 (l.wu (+ v1-15 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 37] (set! v1-17 (l.w (+ v1-16 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 38] (set! v1-18 (sll v1-17 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 39] (set! a0-2 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 40] (set! v1-19 (+ v1-18 a0-2)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 41] (set! v1-20 (l.wu (+ v1-19 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 42] (set! v1-21 (l.wu (+ v1-20 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 16384 ;; [ 43] (set! v1-22 (logand v1-21 #x4000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L344 ;; [ 44] (bl! (zero? v1-22) L344 (no-delay!)) [v1: pad-buttons ] -> [] +B6: + or v1, s7, r0 ;; [ 45] (set! v1-23 #f) [] -> [v1: '#f ] + +B7: + lwu v1, 108(s6) ;; [ 46] (set! v1-24 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 47] (set! v1-25 (l.wu (+ v1-24 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 48] (set! a0-3 (+ v1-25 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 49] (set! v1-26 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 50] (set! v1-27 (+ v1-26 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [ 51] (set! f0-2 (vec3dot a0-3 v1-27)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [ 52] (set! v1-28 (fpr->gpr f0-2)) [] -> [v1: float ] + mtc1 f0, v1 ;; [ 53] (set! f0-3 (gpr->fpr v1-28)) [v1: float ] -> [] + lui v1, L791 ;; [ 54] (set! v1-29 L791) [] -> [v1: ] + ori v1, v1, L791 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 55] (set! f1-2 (l.f v1-29)) [v1: ] -> [] + c.lt.s f0, f1 ;; [ 56] (b! (<.s f0-3 f1-2) L342 (set! v1-30 #t)) [] -> [v1: symbol ] + bc1t L342 + daddiu v1, s7, 8 + +B8: + or v1, s7, r0 ;; [ 57] (set! v1-30 #f) [] -> [v1: '#f ] +B9: +L342: + beql s7, v1, L344 ;; [ 58] (bl! (not v1-30) L344 (no-delay!)) [v1: symbol ] -> [] +B10: + or v1, v1, r0 ;; [ 59] (set! v1-23 v1-30) [v1: symbol ] -> [v1: symbol ] + +B11: + lui v1, L805 ;; [ 60] (set! v1-31 L805) [] -> [v1: ] + ori v1, v1, L805 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 61] (set! f0-4 (l.f v1-31)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 62] (set! v1-32 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 63] (set! v1-33 (l.wu (+ v1-32 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 64] (set! a0-4 (+ v1-33 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 65] (set! v1-34 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [ 66] (set! v1-35 (+ v1-34 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f1, 0(a0) ;; [ 67] (set! f1-3 (vec3dot a0-4 v1-35)) [v1: vector a0: vector ] -> [] + lwc1 f2, 4(a0) + lwc1 f3, 8(a0) + lwc1 f4, 0(v1) + lwc1 f5, 4(v1) + lwc1 f6, 8(v1) + mula.s f1, f4 + madda.s f2, f5 + madd.s f1, f3, f6 + mfc1 v1, f1 ;; [ 68] (set! v1-36 (fpr->gpr f1-3)) [] -> [v1: float ] + mtc1 f1, v1 ;; [ 69] (set! f1-4 (gpr->fpr v1-36)) [v1: float ] -> [] + c.lt.s f0, f1 ;; [ 70] (b! (<.s f0-4 f1-4) L343 (set! v1-37 #t)) [] -> [v1: symbol ] + bc1t L343 + daddiu v1, s7, 8 + +B12: + or v1, s7, r0 ;; [ 71] (set! v1-37 #f) [] -> [v1: '#f ] +B13: +L343: + beql s7, v1, L344 ;; [ 72] (bl! (not v1-37) L344 (no-delay!)) [v1: symbol ] -> [] +B14: + or v1, v1, r0 ;; [ 73] (set! v1-23 v1-37) [v1: symbol ] -> [v1: symbol ] + +B15: + lwu v1, 152(s6) ;; [ 74] (set! v1-38 (l.wu (+ self 152))) [s6: target ] -> [v1: water-control ] + lwu v1, 0(v1) ;; [ 75] (set! v1-39 (l.wu v1-38)) [v1: water-control ] -> [v1: water-flags ] + andi v1, v1, 512 ;; [ 76] (set! v1-40 (logand v1-39 512)) [v1: water-flags ] -> [v1: water-flags ] + bnel v1, r0, L344 ;; [ 77] (bl! (nonzero? v1-40) L344 (no-delay!)) [v1: water-flags ] -> [] +B16: + or v1, s7, r0 ;; [ 78] (set! v1-23 #f) [] -> [v1: '#f ] + +B17: + daddiu v1, s7, 8 ;; [ 79] (set! v1-41 #t) [] -> [v1: symbol ] + lwu a0, 160(s6) ;; [ 80] (set! a0-5 (l.wu (+ self 160))) [s6: target ] -> [a0: state-flags ] + andi a0, a0, 2048 ;; [ 81] (set! a0-6 (logand a0-5 2048)) [a0: state-flags ] -> [a0: state-flags ] + movn v1, s7, a0 ;; [ 82] (cmove-#f-nonzero v1-23 a0-6 v1-41) [v1: symbol a0: state-flags ] -> [v1: symbol ] +B18: +L344: + beq s7, v1, L345 ;; [ 83] (b! (not v1-23) L345 (set! v1-42 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B19: + lw t9, enter-state(s7) ;; [ 84] (set! t9-1 enter-state) [] -> [t9: ] + lw v1, *TARGET-bank*(s7) ;; [ 85] (set! v1-43 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 12(v1) ;; [ 86] (set! f0-5 (l.f (+ v1-43 12))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [ 87] (set! a0-7 (fpr->gpr f0-5)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [ 88] (set! v1-44 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 16(v1) ;; [ 89] (set! f0-6 (l.f (+ v1-44 16))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [ 90] (set! a1-5 (fpr->gpr f0-6)) [] -> [a1: meters ] + lw v1, target-double-jump(s7);; [ 91] (set! v1-45 target-double-jump) [] -> [v1: (state float float target) ] + sw v1, 72(s6) ;; [ 92] (s.w! (+ self 72) v1-45) [v1: (state float float target) s6: target ] -> [] + jalr ra, t9 ;; [ 93] (call! a0-7 a1-5) [a0: meters a1: meters t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 94] (set! v1-46 v0-1) [v0: object ] -> [v1: object ] +B20: +L345: + lwu v1, 108(s6) ;; [ 95] (set! v1-47 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 96] (set! v1-48 (l.wu (+ v1-47 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 97] (set! v1-49 (l.w (+ v1-48 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 98] (set! v1-50 (sll v1-49 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 99] (set! a0-8 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [100] (set! v1-51 (+ v1-50 a0-8)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [101] (set! v1-52 (l.wu (+ v1-51 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [102] (set! v1-53 (l.wu (+ v1-52 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 32768 ;; [103] (set! v1-54 (logand v1-53 #x8000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L348 ;; [104] (bl! (zero? v1-54) L348 (no-delay!)) [v1: pad-buttons ] -> [] +B21: + or v1, s7, r0 ;; [105] (set! v1-55 #f) [] -> [v1: '#f ] + +B22: + lwu v1, 108(s6) ;; [106] (set! v1-56 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [107] (set! v1-57 (l.wu (+ v1-56 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [108] (set! a0-9 (+ v1-57 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [109] (set! v1-58 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [110] (set! v1-59 (+ v1-58 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [111] (set! f0-7 (vec3dot a0-9 v1-59)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [112] (set! v1-60 (fpr->gpr f0-7)) [] -> [v1: float ] + mtc1 f0, v1 ;; [113] (set! f0-8 (gpr->fpr v1-60)) [v1: float ] -> [] + lui v1, L790 ;; [114] (set! v1-61 L790) [] -> [v1: ] + ori v1, v1, L790 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [115] (set! f1-5 (l.f v1-61)) [v1: ] -> [] + c.lt.s f0, f1 ;; [116] (b! (<.s f0-8 f1-5) L346 (set! v1-62 #t)) [] -> [v1: symbol ] + bc1t L346 + daddiu v1, s7, 8 + +B23: + or v1, s7, r0 ;; [117] (set! v1-62 #f) [] -> [v1: '#f ] +B24: +L346: + beql s7, v1, L348 ;; [118] (bl! (not v1-62) L348 (no-delay!)) [v1: symbol ] -> [] +B25: + or v1, v1, r0 ;; [119] (set! v1-55 v1-62) [v1: symbol ] -> [v1: symbol ] + +B26: + lui v1, L805 ;; [120] (set! v1-63 L805) [] -> [v1: ] + ori v1, v1, L805 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [121] (set! f0-9 (l.f v1-63)) [v1: ] -> [] + lwu v1, 108(s6) ;; [122] (set! v1-64 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [123] (set! v1-65 (l.wu (+ v1-64 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [124] (set! a0-10 (+ v1-65 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [125] (set! v1-66 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [126] (set! v1-67 (+ v1-66 60)) [v1: control-info ] -> [v1: vector ] + lwc1 f1, 0(a0) ;; [127] (set! f1-6 (vec3dot a0-10 v1-67)) [v1: vector a0: vector ] -> [] + lwc1 f2, 4(a0) + lwc1 f3, 8(a0) + lwc1 f4, 0(v1) + lwc1 f5, 4(v1) + lwc1 f6, 8(v1) + mula.s f1, f4 + madda.s f2, f5 + madd.s f1, f3, f6 + mfc1 v1, f1 ;; [128] (set! v1-68 (fpr->gpr f1-6)) [] -> [v1: float ] + mtc1 f1, v1 ;; [129] (set! f1-7 (gpr->fpr v1-68)) [v1: float ] -> [] + c.lt.s f0, f1 ;; [130] (b! (<.s f0-9 f1-7) L347 (set! v1-69 #t)) [] -> [v1: symbol ] + bc1t L347 + daddiu v1, s7, 8 + +B27: + or v1, s7, r0 ;; [131] (set! v1-69 #f) [] -> [v1: '#f ] +B28: +L347: + beql s7, v1, L348 ;; [132] (bl! (not v1-69) L348 (no-delay!)) [v1: symbol ] -> [] +B29: + or v1, v1, r0 ;; [133] (set! v1-55 v1-69) [v1: symbol ] -> [v1: symbol ] + +B30: + lw v1, *display*(s7) ;; [134] (set! v1-70 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [135] (set! v1-71 (l.d (+ v1-70 780))) [v1: display ] -> [v1: time-frame ] + lwu a0, 108(s6) ;; [136] (set! a0-11 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 1708(a0) ;; [137] (set! a0-12 (l.d (+ a0-11 1708))) [a0: control-info ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [138] (set! v1-72 (- v1-71 a0-12)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + lw a0, *TARGET-bank*(s7) ;; [139] (set! a0-13 *TARGET-bank*) [] -> [a0: target-bank ] + ld a0, 564(a0) ;; [140] (set! a0-14 (l.d (+ a0-13 564))) [a0: target-bank ] -> [a0: seconds ] + slt v1, v1, a0 ;; [141] (set! a0-15 (>=.si v1-72 a0-14)) [v1: time-frame a0: seconds ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L348 ;; [142] (bl! (not a0-15) L348 (no-delay!)) [a0: symbol ] -> [] +B31: + or v1, a0, r0 ;; [143] (set! v1-55 a0-15) [a0: symbol ] -> [v1: symbol ] + +B32: + lwu v1, 160(s6) ;; [144] (set! v1-73 (l.wu (+ self 160))) [s6: target ] -> [v1: state-flags ] + andi v1, v1, 4096 ;; [145] (set! v1-74 (logand v1-73 4096)) [v1: state-flags ] -> [v1: state-flags ] + bnel v1, r0, L348 ;; [146] (bl! (nonzero? v1-74) L348 (no-delay!)) [v1: state-flags ] -> [] +B33: + or v1, s7, r0 ;; [147] (set! v1-55 #f) [] -> [v1: '#f ] + +B34: + daddiu v1, s7, 8 ;; [148] (set! v1-75 #t) [] -> [v1: symbol ] + lwu a0, 108(s6) ;; [149] (set! a0-16 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 660(a0) ;; [150] (set! a0-17 (l.wu (+ a0-16 660))) [a0: control-info ] -> [a0: surface ] + lwu a0, 144(a0) ;; [151] (set! a0-18 (l.wu (+ a0-17 144))) [a0: surface ] -> [a0: surface-flags ] + andi a0, a0, 384 ;; [152] (set! a0-19 (logand a0-18 384)) [a0: surface-flags ] -> [a0: surface-flags ] + movn v1, s7, a0 ;; [153] (cmove-#f-nonzero v1-55 a0-19 v1-75) + ;; [v1: symbol a0: surface-flags ] -> [v1: symbol ] +B35: +L348: + beq s7, v1, L351 ;; [154] (b! (not v1-55) L351 (set! v1-76 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B36: + lw t9, enter-state(s7) ;; [155] (set! t9-2 enter-state) [] -> [t9: ] + lui v1, L784 ;; [156] (set! v1-77 L784) [] -> [v1: ] + ori v1, v1, L784 + addu v1, fp, v1 + lw a0, 0(v1) ;; [157] (set! a0-20 (l.w v1-77)) [v1: ] -> [a0: int ] + lui v1, L731 ;; [158] (set! v1-78 L731) [] -> [v1: ] + ori v1, v1, L731 + addu v1, fp, v1 + lw a1, 0(v1) ;; [159] (set! a1-6 (l.w v1-78)) [v1: ] -> [a1: int ] + lwu v1, 108(s6) ;; [160] (set! v1-79 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [161] (set! v1-80 (l.wu (+ v1-79 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [162] (set! v1-81 (l.w (+ v1-80 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [163] (set! v1-82 (sll v1-81 2)) [v1: int ] -> [v1: ] + lw a2, *cpad-list*(s7) ;; [164] (set! a2-0 *cpad-list*) [] -> [a2: cpad-list ] + daddu v1, v1, a2 ;; [165] (set! v1-83 (+ v1-82 a2-0)) + ;; [v1: a2: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [166] (set! v1-84 (l.wu (+ v1-83 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwc1 f0, 72(v1) ;; [167] (set! f0-10 (l.f (+ v1-84 72))) [v1: cpad-info ] -> [] + mtc1 f1, r0 ;; [168] (set! f1-8 0) [] -> [] + c.eq.s f0, f1 ;; [169] (b! (!=.s f0-10 f1-8) L349 (nop!)) [] -> [] + bc1f L349 + sll r0, r0, 0 + +B37: + lui v1, L814 ;; [170] (set! v1-85 L814) [] -> [v1: ] + ori v1, v1, L814 + addu v1, fp, v1 + lw a2, 0(v1) ;; [171] (set! a2-1 (l.w v1-85)) [v1: ] -> [a2: int ] + beq r0, r0, L350 ;; [172] (b! #t L350 (nop!)) [] -> [] + sll r0, r0, 0 + +B38: +L349: + lui v1, L758 ;; [173] (set! v1-86 L758) [] -> [v1: ] + ori v1, v1, L758 + addu v1, fp, v1 + lw a2, 0(v1) ;; [174] (set! a2-1 (l.w v1-86)) [v1: ] -> [a2: int ] +B39: +L350: + lw v1, target-flop(s7) ;; [175] (set! v1-87 target-flop) [] -> [v1: (state float float float target) ] + sw v1, 72(s6) ;; [176] (s.w! (+ self 72) v1-87) [v1: (state float float float target) s6: target ] -> [] + jalr ra, t9 ;; [177] (call! a0-20 a1-6 a2-1) + ;; [a0: int a1: int a2: int t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [178] (set! v1-88 v0-2) [v0: object ] -> [v1: object ] +B40: +L351: + lw t9, mod-var-jump(s7) ;; [179] (set! t9-3 mod-var-jump) + ;; [] -> [t9: (function symbol symbol symbol vector vector :behavior target) ] + daddiu a0, s7, #t ;; [180] (set! a0-21 #t) [] -> [a0: symbol ] + daddiu a1, s7, #t ;; [181] (set! a1-7 #t) [] -> [a1: symbol ] + daddiu a2, s7, 8 ;; [182] (set! a2-2 #t) [] -> [a2: symbol ] + lwu v1, 108(s6) ;; [183] (set! v1-89 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [184] (set! v1-90 (l.wu (+ v1-89 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [185] (set! v1-91 (l.w (+ v1-90 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [186] (set! v1-92 (sll v1-91 2)) [v1: int ] -> [v1: ] + lw a3, *cpad-list*(s7) ;; [187] (set! a3-0 *cpad-list*) [] -> [a3: cpad-list ] + daddu v1, v1, a3 ;; [188] (set! v1-93 (+ v1-92 a3-0)) + ;; [v1: a3: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [189] (set! v1-94 (l.wu (+ v1-93 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 40(v1) ;; [190] (set! v1-95 (l.wu (+ v1-94 40))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 16384 ;; [191] (set! v1-96 (logand v1-95 #x4000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + movz a2, s7, v1 ;; [192] (cmove-#f-zero a2-3 v1-96 a2-2) [v1: pad-buttons a2: symbol ] -> [a2: symbol ] + lwu v1, 108(s6) ;; [193] (set! v1-97 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a3, v1, 60 ;; [194] (set! a3-1 (+ v1-97 60)) [v1: control-info ] -> [a3: vector ] + jalr ra, t9 ;; [195] (call! a0-21 a1-7 a2-3 a3-1) + ;; [a0: symbol a1: symbol a2: symbol a3: vector t9: (function symbol symbol symbol vector vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + lw t9, slide-down-test(s7);; [196] (set! t9-4 slide-down-test) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [197] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, seek(s7) ;; [198] (set! t9-5 seek) [] -> [t9: (function float float float float) ] + lwu v1, 108(s6) ;; [199] (set! v1-98 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 2192(v1) ;; [200] (set! f0-11 (l.f (+ v1-98 2192))) [v1: control-info ] -> [] + mfc1 a0, f0 ;; [201] (set! a0-22 (fpr->gpr f0-11)) [] -> [a0: float ] + mtc1 f0, r0 ;; [202] (set! f0-12 0) [] -> [] + lui v1, L786 ;; [203] (set! v1-99 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [204] (set! f1-9 (l.f v1-99)) [v1: ] -> [] + lui v1, L759 ;; [205] (set! v1-100 L759) [] -> [v1: ] + ori v1, v1, L759 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [206] (set! f2-2 (l.f v1-100)) [v1: ] -> [] + lui v1, L792 ;; [207] (set! v1-101 L792) [] -> [v1: ] + ori v1, v1, L792 + addu v1, fp, v1 + lwc1 f3, 0(v1) ;; [208] (set! f3-0 (l.f v1-101)) [v1: ] -> [] + lwu v1, 108(s6) ;; [209] (set! v1-102 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f4, 528(v1) ;; [210] (set! f4-0 (l.f (+ v1-102 528))) [v1: control-info ] -> [] + add.s f3, f3, f4 ;; [211] (set! f3-1 (+.s f3-0 f4-0)) [] -> [] + mul.s f2, f2, f3 ;; [212] (set! f2-3 (*.s f2-2 f3-1)) [] -> [] + min.s f1, f1, f2 ;; [213] (set! f1-10 (min.s f1-9 f2-3)) [] -> [] + max.s f0, f0, f1 ;; [214] (set! f0-13 (max.s f0-12 f1-10)) [] -> [] + mfc1 a1, f0 ;; [215] (set! a1-8 (fpr->gpr f0-13)) [] -> [a1: float ] + lw v1, *display*(s7) ;; [216] (set! v1-103 *display*) [] -> [v1: display ] + lwc1 f0, 904(v1) ;; [217] (set! f0-14 (l.f (+ v1-103 904))) [v1: display ] -> [] + mfc1 a2, f0 ;; [218] (set! a2-4 (fpr->gpr f0-14)) [] -> [a2: float ] + jalr ra, t9 ;; [219] (call! a0-22 a1-8 a2-4) + ;; [a0: float a1: float a2: float t9: (function float float float float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [220] (set! f0-15 (gpr->fpr v0-5)) [v0: float ] -> [] + lwu v1, 108(s6) ;; [221] (set! v1-104 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 2192(v1) ;; [222] (s.f! (+ v1-104 2192) f0-15) [v1: control-info ] -> [] + mfc1 v0, f0 ;; [223] (set! v0-6 (fpr->gpr f0-15)) [] -> [v0: float ] + ld ra, 0(sp) + ld fp, 8(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (trans target-jump) + () + (set! (-> self control unknown-float123) + (fmax + (-> self control unknown-float123) + (* 0.003921569 (the float (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 6))) + ) + ) + (target-falling-trans #f (the-as time-frame (if (ja-group? (-> self draw art-group data 38)) + 15 + -1 + ) + ) + ) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) x) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 12288.0) + (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (zero? (logand (-> self water flags) (water-flags wt09))) + (zero? (logand (-> self state-flags) (state-flags prevent-jump))) + ) + ) + (go target-double-jump (-> *TARGET-bank* double-jump-height-min) (-> *TARGET-bank* double-jump-height-max)) + ) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) square) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 26624.0) + (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword36)) + (the-as time-frame (-> *TARGET-bank* stuck-timeout)) + ) + (zero? (logand (-> self state-flags) (state-flags prevent-attack))) + (zero? (logand (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08)) + ) + ) + ) + (go + target-flop + (the-as float 65502.96) + (the-as float -163840.0) + (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + 0.0 + 68812.8 + ) + ) + ) + ) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) + (slide-down-test) + (seek! + (-> self control unknown-float122) + (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))) + (-> *display* seconds-per-frame) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-jump) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x60, fp? 1 ra? 1 ep? 1 + ;gprs: gp s5 s4 s3 s2 +;; Warnings: +;; INFO: Return type mismatch float vs none. +;; Used lq/sq + +;; a0-0: float a0-9: int a1-0: float a1-5: int a2-0: surface a2-5: vector s6-0: target +L352: + daddiu sp, sp, -96 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s2, 16(sp) + sq s3, 32(sp) + sq s4, 48(sp) + sq s5, 64(sp) + sq gp, 80(sp) +B0: + or s5, a0, r0 ;; [ 0] (set! arg0 arg0) [a0: float ] -> [s5: float ] + or s4, a1, r0 ;; [ 1] (set! arg1 arg1) [a1: float ] -> [s4: float ] + or gp, a2, r0 ;; [ 2] (set! arg2 arg2) [a2: surface ] -> [gp: surface ] + daddiu v1, s7, launch ;; [ 3] (set! v1-0 'launch) [] -> [v1: symbol ] + lwu a0, 108(s6) ;; [ 4] (set! a0-1 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 2424(a0) ;; [ 5] (set! a0-2 (l.wu (+ a0-1 2424))) [a0: control-info ] -> [a0: symbol ] + bne a0, v1, L354 ;; [ 6] (b! (!= a0-2 v1-0) L354 (set! v1-1 #f)) [v1: symbol a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B1: + lw t9, level-hint-spawn(s7);; [ 7] (set! t9-0 level-hint-spawn) + ;; [] -> [t9: (function game-text-id string entity process-tree game-task none) ] + addiu a0, r0, 656 ;; [ 8] (set! a0-3 656) [] -> [a0: ] + lui v1, L712 ;; [ 9] (set! a1-1 L712) [] -> [a1: ] "sksp009d" + ori v1, v1, L712 ;; "sksp009d" + daddu a1, v1, fp + or a2, s7, r0 ;; [ 10] (set! a2-1 #f) [] -> [a2: '#f ] + lw a3, *entity-pool*(s7) ;; [ 11] (set! a3-0 *entity-pool*) [] -> [a3: process-tree ] + addiu t0, r0, 0 ;; [ 12] (set! t0-0 0) [] -> [t0: ] + jalr ra, t9 ;; [ 13] (call! a0-3 a1-1 a2-1 a3-0 t0-0) + ;; [a0: a1: a2: '#f a3: process-tree t0: t9: (function game-text-id string entity process-tree game-task none) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, level-hint-spawn(s7);; [ 14] (set! t9-1 level-hint-spawn) + ;; [] -> [t9: (function game-text-id string entity process-tree game-task none) ] + addiu a0, r0, 657 ;; [ 15] (set! a0-4 657) [] -> [a0: ] + lui v1, L711 ;; [ 16] (set! a1-2 L711) [] -> [a1: ] "sksp009e" + ori v1, v1, L711 ;; "sksp009e" + daddu a1, v1, fp + or a2, s7, r0 ;; [ 17] (set! a2-2 #f) [] -> [a2: '#f ] + lw a3, *entity-pool*(s7) ;; [ 18] (set! a3-1 *entity-pool*) [] -> [a3: process-tree ] + addiu t0, r0, 0 ;; [ 19] (set! t0-1 0) [] -> [t0: ] + jalr ra, t9 ;; [ 20] (call! a0-4 a1-2 a2-2 a3-1 t0-1) + ;; [a0: a1: a2: '#f a3: process-tree t0: t9: (function game-text-id string entity process-tree game-task none) ] -> [v0: none ] + sll v0, ra, 0 + + lw a0, *level*(s7) ;; [ 21] (set! a0-5 *level*) [] -> [a0: level-group ] + lwu v1, -4(a0) ;; [ 22] (set! v1-2 (l.wu (+ a0-5 -4))) [a0: level-group ] -> [v1: ] + lwu t9, 84(v1) ;; [ 23] (set! t9-2 (l.wu (+ v1-2 84))) + ;; [v1: ] -> [t9: ] + jalr ra, t9 ;; [ 24] (call! a0-5) + ;; [a0: level-group t9: ] -> [v0: level ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 25] (set! v1-3 v0-2) [v0: level ] -> [v1: level ] + lwu v1, 0(v1) ;; [ 26] (set! v1-4 (l.wu v1-3)) [v1: level ] -> [v1: symbol ] + daddiu a0, s7, citadel ;; [ 27] (set! a0-6 'citadel) [] -> [a0: symbol ] + bne v1, a0, L353 ;; [ 28] (b! (!= v1-4 a0-6) L353 (set! v1-5 #f)) [v1: symbol a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B2: + lw t9, level-hint-spawn(s7);; [ 29] (set! t9-3 level-hint-spawn) + ;; [] -> [t9: (function game-text-id string entity process-tree game-task none) ] + addiu a0, r0, 2066 ;; [ 30] (set! a0-7 2066) [] -> [a0: ] + lui v1, L710 ;; [ 31] (set! a1-3 L710) [] -> [a1: ] "sksp0393" + ori v1, v1, L710 ;; "sksp0393" + daddu a1, v1, fp + or a2, s7, r0 ;; [ 32] (set! a2-3 #f) [] -> [a2: '#f ] + lw a3, *entity-pool*(s7) ;; [ 33] (set! a3-2 *entity-pool*) [] -> [a3: process-tree ] + addiu t0, r0, 0 ;; [ 34] (set! t0-2 0) [] -> [t0: ] + jalr ra, t9 ;; [ 35] (call! a0-7 a1-3 a2-3 a3-2 t0-2) + ;; [a0: a1: a2: '#f a3: process-tree t0: t9: (function game-text-id string entity process-tree game-task none) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, level-hint-spawn(s7);; [ 36] (set! t9-4 level-hint-spawn) + ;; [] -> [t9: (function game-text-id string entity process-tree game-task none) ] + addiu a0, r0, 2061 ;; [ 37] (set! a0-8 2061) [] -> [a0: ] + lui v1, L709 ;; [ 38] (set! a1-4 L709) [] -> [a1: ] "sksp0388" + ori v1, v1, L709 ;; "sksp0388" + daddu a1, v1, fp + or a2, s7, r0 ;; [ 39] (set! a2-4 #f) [] -> [a2: '#f ] + lw a3, *entity-pool*(s7) ;; [ 40] (set! a3-3 *entity-pool*) [] -> [a3: process-tree ] + addiu t0, r0, 0 ;; [ 41] (set! t0-3 0) [] -> [t0: ] + jalr ra, t9 ;; [ 42] (call! a0-8 a1-4 a2-4 a3-3 t0-3) + ;; [a0: a1: a2: '#f a3: process-tree t0: t9: (function game-text-id string entity process-tree game-task none) ] -> [v0: none ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 43] (set! v1-6 v0-4) [v0: none ] -> [v1: none ] +B3: +L353: + lw t9, enter-state(s7) ;; [ 44] (set! t9-5 enter-state) [] -> [t9: ] + lwu v1, 108(s6) ;; [ 45] (set! v1-7 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld a0, 2428(v1) ;; [ 46] (set! a0-9 (l.d (+ v1-7 2428))) [v1: control-info ] -> [a0: int ] + lwu v1, 108(s6) ;; [ 47] (set! v1-8 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld a1, 2436(v1) ;; [ 48] (set! a1-5 (l.d (+ v1-8 2436))) [v1: control-info ] -> [a1: int ] + lwu v1, 108(s6) ;; [ 49] (set! v1-9 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a2, v1, 2220 ;; [ 50] (set! a2-5 (+ v1-9 2220)) [v1: control-info ] -> [a2: vector ] + lwu v1, 108(s6) ;; [ 51] (set! v1-10 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld v1, 2444(v1) ;; [ 52] (set! v1-11 (l.d (+ v1-10 2444))) [v1: control-info ] -> [v1: vector ] + lq v1, 0(v1) ;; [ 53] (set! (the-as vector v1-12) (l.q v1-11)) [v1: vector ] -> [v1: uint128 ] + sq v1, 0(a2) ;; [ 54] (s.q! a2-5 v1-12) [v1: uint128 a2: vector ] -> [] + lwu v1, 108(s6) ;; [ 55] (set! v1-13 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld a3, 2452(v1) ;; [ 56] (set! a3-4 (l.d (+ v1-13 2452))) [v1: control-info ] -> [a3: int ] + lw v1, target-launch(s7) ;; [ 57] (set! v1-14 target-launch) [] -> [v1: (state float symbol vector int target) ] + sw v1, 72(s6) ;; [ 58] (s.w! (+ self 72) v1-14) + ;; [v1: (state float symbol vector int target) s6: target ] -> [] + jalr ra, t9 ;; [ 59] (call! a0-9 a1-5 a2-5 a3-4) + ;; [a0: int a1: int a2: vector a3: int t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 60] (set! v1-15 v0-5) [v0: object ] -> [v1: object ] +B4: +L354: + lw v1, *display*(s7) ;; [ 61] (set! v1-16 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 62] (set! v1-17 (l.d (+ v1-16 780))) [v1: display ] -> [v1: time-frame ] + sd v1, 164(s6) ;; [ 63] (s.d! (+ self 164) v1-17) [v1: time-frame s6: target ] -> [] + lw s3, sound-play-by-name(s7);; [ 64] (set! s3-0 sound-play-by-name) + ;; [] -> [s3: (function sound-name sound-id int int int sound-group symbol sound-id) ] + lui v1, 28781 ;; [ 65] (set! v1-18 #x706d756a) [] -> [v1: ] + ori v1, v1, 30058 + pcpyld s2, r0, v1 ;; [ 66] (set! s2-0 (pcypld 0 v1-18)) [v1: ] -> [s2: uint ] + lw t9, new-sound-id(s7) ;; [ 67] (set! t9-6 new-sound-id) [] -> [t9: (function sound-id) ] + jalr ra, t9 ;; [ 68] (call!) [t9: (function sound-id) ] -> [v0: sound-id ] + sll v0, ra, 0 + + or a1, v0, r0 ;; [ 69] (set! a1-6 v0-6) [v0: sound-id ] -> [a1: sound-id ] + addiu a2, r0, 716 ;; [ 70] (set! a2-6 716) [] -> [a2: ] + addiu a3, r0, 0 ;; [ 71] (set! a3-5 0) [] -> [a3: ] + addiu t0, r0, 0 ;; [ 72] (set! t0-4 0) [] -> [t0: ] + addiu t1, r0, 1 ;; [ 73] (set! t1-0 1) [] -> [t1: ] + daddiu t2, s7, #t ;; [ 74] (set! t2-0 #t) [] -> [t2: symbol ] + or t9, s3, r0 ;; [ 75] (set! t9-7 s3-0) + ;; [s3: (function sound-name sound-id int int int sound-group symbol sound-id) ] -> [t9: (function sound-name sound-id int int int sound-group symbol sound-id) ] + por a0, s2, r0 ;; [ 76] (set! a0-10 s2-0) [s2: uint ] -> [a0: uint ] + jalr ra, t9 ;; [ 77] (call! a0-10 a1-6 a2-6 a3-5 t0-4 t1-0 t2-0) + ;; [a0: uint a1: sound-id a2: a3: t0: t1: t2: symbol t9: (function sound-name sound-id int int int sound-group symbol sound-id) ] -> [v0: sound-id ] + sll v0, ra, 0 + + lw t9, init-var-jump(s7) ;; [ 78] (set! t9-8 init-var-jump) + ;; [] -> [t9: (function float float vector vector vector vector :behavior target) ] + daddiu a2, s7, #t ;; [ 79] (set! a2-7 #t) [] -> [a2: symbol ] + daddiu a3, s7, #t ;; [ 80] (set! a3-6 #t) [] -> [a3: symbol ] + lwu v1, 108(s6) ;; [ 81] (set! v1-19 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu t0, v1, 60 ;; [ 82] (set! t0-5 (+ v1-19 60)) [v1: control-info ] -> [t0: vector ] + or a0, s5, r0 ;; [ 83] (set! a0-11 arg0) [s5: float ] -> [a0: float ] + or a1, s4, r0 ;; [ 84] (set! a1-7 arg1) [s4: float ] -> [a1: float ] + jalr ra, t9 ;; [ 85] (call! a0-11 a1-7 a2-7 a3-6 t0-5) + ;; [a0: float a1: float a2: symbol a3: symbol t0: vector t9: (function float float vector vector vector vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + addiu v1, r0, -8 ;; [ 86] (set! v1-20 -8) [] -> [v1: ] + lwu a0, 108(s6) ;; [ 87] (set! a0-12 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 268(a0) ;; [ 88] (set! a0-13 (l.d (+ a0-12 268))) [a0: control-info ] -> [a0: cshape-moving-flags ] + and v1, v1, a0 ;; [ 89] (set! v1-21 (logand v1-20 a0-13)) + ;; [v1: a0: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + lwu a0, 108(s6) ;; [ 90] (set! a0-14 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sd v1, 268(a0) ;; [ 91] (s.d! (+ a0-14 268) v1-21) [v1: cshape-moving-flags a0: control-info ] -> [] + beq s7, gp, L355 ;; [ 92] (b! (not arg2) L355 (nop!)) [gp: surface ] -> [] + sll r0, r0, 0 + +B5: + beq r0, r0, L356 ;; [ 93] (b! #t L356 (nop!)) [] -> [] + sll r0, r0, 0 + +B6: +L355: + lw gp, *jump-mods*(s7) ;; [ 94] (set! arg2 *jump-mods*) [] -> [gp: surface ] +B7: +L356: + lwu v1, 108(s6) ;; [ 95] (set! v1-22 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw gp, 656(v1) ;; [ 96] (s.w! (+ v1-22 656) arg2) [v1: control-info gp: surface ] -> [] + mtc1 f0, r0 ;; [ 97] (set! f0-0 0) [] -> [] + lui v1, L786 ;; [ 98] (set! v1-23 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 99] (set! f1-0 (l.f v1-23)) [v1: ] -> [] + lui v1, L788 ;; [100] (set! v1-24 L788) [] -> [v1: ] + ori v1, v1, L788 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [101] (set! f2-0 (l.f v1-24)) [v1: ] -> [] + lui v1, L774 ;; [102] (set! v1-25 L774) [] -> [v1: ] + ori v1, v1, L774 + addu v1, fp, v1 + lwc1 f3, 0(v1) ;; [103] (set! f3-0 (l.f v1-25)) [v1: ] -> [] + lwu v1, 108(s6) ;; [104] (set! v1-26 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f4, 528(v1) ;; [105] (set! f4-0 (l.f (+ v1-26 528))) [v1: control-info ] -> [] + add.s f3, f3, f4 ;; [106] (set! f3-1 (+.s f3-0 f4-0)) [] -> [] + mul.s f2, f2, f3 ;; [107] (set! f2-1 (*.s f2-0 f3-1)) [] -> [] + min.s f1, f1, f2 ;; [108] (set! f1-1 (min.s f1-0 f2-1)) [] -> [] + max.s f0, f0, f1 ;; [109] (set! f0-1 (max.s f0-0 f1-1)) [] -> [] + lwu v1, 108(s6) ;; [110] (set! v1-27 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 2196(v1) ;; [111] (s.f! (+ v1-27 2196) f0-1) [v1: control-info ] -> [] + mtc1 f0, r0 ;; [112] (set! f0-2 0) [] -> [] + lui v1, L786 ;; [113] (set! v1-28 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [114] (set! f1-2 (l.f v1-28)) [v1: ] -> [] + lui v1, L759 ;; [115] (set! v1-29 L759) [] -> [v1: ] + ori v1, v1, L759 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [116] (set! f2-2 (l.f v1-29)) [v1: ] -> [] + lui v1, L792 ;; [117] (set! v1-30 L792) [] -> [v1: ] + ori v1, v1, L792 + addu v1, fp, v1 + lwc1 f3, 0(v1) ;; [118] (set! f3-2 (l.f v1-30)) [v1: ] -> [] + lwu v1, 108(s6) ;; [119] (set! v1-31 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f4, 528(v1) ;; [120] (set! f4-1 (l.f (+ v1-31 528))) [v1: control-info ] -> [] + add.s f3, f3, f4 ;; [121] (set! f3-3 (+.s f3-2 f4-1)) [] -> [] + mul.s f2, f2, f3 ;; [122] (set! f2-3 (*.s f2-2 f3-3)) [] -> [] + min.s f1, f1, f2 ;; [123] (set! f1-3 (min.s f1-2 f2-3)) [] -> [] + max.s f0, f0, f1 ;; [124] (set! f0-3 (max.s f0-2 f1-3)) [] -> [] + lwu v1, 108(s6) ;; [125] (set! v1-32 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 2192(v1) ;; [126] (s.f! (+ v1-32 2192) f0-3) [v1: control-info ] -> [] + mfc1 v0, f0 ;; [127] (set! v0-9 (fpr->gpr f0-3)) [] -> [v0: float ] + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 80(sp) + lq s5, 64(sp) + lq s4, 48(sp) + lq s3, 32(sp) + lq s2, 16(sp) + jr ra + daddiu sp, sp, 96 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-jump) + ((arg0 float) (arg1 float) (arg2 surface)) + (when (= (-> self control unknown-symbol40) 'launch) + (level-hint-spawn + (game-text-id sidekick-launcher1) + "sksp009d" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + (level-hint-spawn + (game-text-id sidekick-launcher2) + "sksp009e" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + (case (-> (level-get-target-inside *level*) name) + (('citadel) + (level-hint-spawn + (game-text-id citadel-launcher2) + "sksp0393" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + (level-hint-spawn + (game-text-id citadel-launcher) + "sksp0388" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + ) + enter-state + (let ((a0-9 (-> self control unknown-dword60)) + (a1-5 (-> self control unknown-dword61)) + (a2-5 (-> self control unknown-vector102)) + ) + (set! (-> a2-5 quad) (-> (the-as vector (-> self control unknown-dword62)) quad)) + (go target-launch (the-as float a0-9) (the-as symbol a1-5) a2-5 (-> self control unknown-dword63)) + ) + ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (sound-play "jump" :vol 70) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #t) (-> self control transv)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! arg2 (cond + (arg2 + (empty) + arg2 + ) + (else + *jump-mods* + ) + ) + ) + (set! (-> self control unknown-surface00) arg2) + (set! (-> self control unknown-float123) + (fmax 0.0 (fmin 1.0 (* 0.00004359654 (+ -11468.8 (-> self control unknown-float01))))) + ) + (set! (-> self control unknown-float122) + (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-duck-walk) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x20, fp? 1 ra? 1 ep? 1 + ;gprs: gp +;; s6-0: target +L357: + daddiu sp, sp, -32 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq gp, 16(sp) +B0: + lwu v1, 120(s6) ;; [ 0] (set! v1-0 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 1] (set! v1-1 (l.w (+ v1-0 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 2] (b! (<=0.si v1-1) L358 (set! v1-2 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L358 + or v1, s7, r0 + +B1: + lwu v1, 120(s6) ;; [ 3] (set! v1-3 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 4] (set! v1-4 (l.wu (+ v1-3 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 5] (set! v1-2 (l.wu (+ v1-4 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B2: +L358: + lwu a0, 116(s6) ;; [ 6] (set! a0-0 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 7] (set! a0-1 (l.wu (+ a0-0 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 156(a0) ;; [ 8] (set! a0-2 (l.wu (+ a0-1 156))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 9] (set! a0-3 (= v1-2 a0-2)) [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L359 ;; [ 10] (bl! (not a0-3) L359 (no-delay!)) [a0: symbol ] -> [] +B3: + or v1, a0, r0 ;; [ 11] (set! v1-5 a0-3) [a0: symbol ] -> [v1: symbol ] + +B4: + lwu v1, 120(s6) ;; [ 12] (set! v1-6 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 13] (set! v1-7 (l.wu (+ v1-6 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu v1, r0, v1 ;; [ 14] (set! v1-8 (+ v1-7 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + lwu a0, 120(s6) ;; [ 15] (set! a0-4 (l.wu (+ self 120))) [s6: target ] -> [a0: joint-control ] + daddiu a0, a0, 44 ;; [ 16] (set! a0-5 (+ a0-4 44)) + ;; [a0: joint-control ] -> [a0: (inline-array joint-control-channel) ] + dsubu a0, v1, a0 ;; [ 17] (set! v1-5 (= v1-8 a0-5)) + ;; [v1: joint-control-channel a0: (inline-array joint-control-channel) ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 +B5: +L359: + beq s7, v1, L360 ;; [ 18] (b! (not v1-5) L360 (nop!)) [v1: symbol ] -> [] + sll r0, r0, 0 + +B6: + or v1, s7, r0 ;; [ 19] (set! v1-9 #f) [] -> [v1: '#f ] + beq r0, r0, L363 ;; [ 20] (b! #t L363 (nop!)) [] -> [] + sll r0, r0, 0 + +B7: +L360: + lwu v1, 120(s6) ;; [ 21] (set! v1-10 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 22] (set! v1-11 (l.w (+ v1-10 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 23] (b! (<=0.si v1-11) L361 (set! v1-12 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L361 + or v1, s7, r0 + +B8: + lwu v1, 120(s6) ;; [ 24] (set! v1-13 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 25] (set! v1-14 (l.wu (+ v1-13 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 26] (set! v1-12 (l.wu (+ v1-14 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B9: +L361: + lwu a0, 116(s6) ;; [ 27] (set! a0-6 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 28] (set! a0-7 (l.wu (+ a0-6 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 152(a0) ;; [ 29] (set! a0-8 (l.wu (+ a0-7 152))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 30] (set! a0-9 (= v1-12 a0-8)) [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L362 ;; [ 31] (b! (not a0-9) L362 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B10: + lw t9, ja-channel-push!(s7);; [ 32] (set! t9-0 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [ 33] (set! a0-10 1) [] -> [a0: ] + addiu a1, r0, 135 ;; [ 34] (set! a1-0 135) [] -> [a1: ] + jalr ra, t9 ;; [ 35] (call! a0-10 a1-0) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [ 36] (set! v1-15 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 37] (set! v1-16 (l.wu (+ v1-15 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu gp, r0, v1 ;; [ 38] (set! gp-0 (+ v1-16 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lw t9, joint-control-channel-group-eval!(s7);; [ 39] (set! t9-1 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a0, gp, r0 ;; [ 40] (set! a0-11 gp-0) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 41] (set! v1-17 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 42] (set! v1-18 (l.wu (+ v1-17 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 156(v1) ;; [ 43] (set! a1-1 (l.wu (+ v1-18 156))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-identity(s7);; [ 44] (set! a2-0 num-func-identity) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 45] (call! a0-11 a1-1 a2-0) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + mtc1 f0, r0 ;; [ 46] (set! f0-0 0) [] -> [] + swc1 f0, 16(gp) ;; [ 47] (s.f! (+ gp-0 16) f0-0) [gp: joint-control-channel ] -> [] + mfc1 v1, f0 ;; [ 48] (set! v1-19 (fpr->gpr f0-0)) [] -> [v1: float ] + beq r0, r0, L363 ;; [ 49] (b! #t L363 (nop!)) [] -> [] + sll r0, r0, 0 + +B11: +L362: + lw t9, ja-channel-push!(s7);; [ 50] (set! t9-2 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [ 51] (set! a0-12 1) [] -> [a0: ] + addiu a1, r0, 30 ;; [ 52] (set! a1-2 30) [] -> [a1: ] + jalr ra, t9 ;; [ 53] (call! a0-12 a1-2) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [ 54] (set! v1-20 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 55] (set! v1-21 (l.wu (+ v1-20 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu gp, r0, v1 ;; [ 56] (set! gp-1 (+ v1-21 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lw t9, joint-control-channel-group-eval!(s7);; [ 57] (set! t9-3 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a0, gp, r0 ;; [ 58] (set! a0-13 gp-1) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 59] (set! v1-22 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 60] (set! v1-23 (l.wu (+ v1-22 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 156(v1) ;; [ 61] (set! a1-3 (l.wu (+ v1-23 156))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-identity(s7);; [ 62] (set! a2-1 num-func-identity) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 63] (call! a0-13 a1-3 a2-1) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + mtc1 f0, r0 ;; [ 64] (set! f0-1 0) [] -> [] + swc1 f0, 16(gp) ;; [ 65] (s.f! (+ gp-1 16) f0-1) [gp: joint-control-channel ] -> [] + mfc1 v1, f0 ;; [ 66] (set! v1-24 (fpr->gpr f0-1)) [] -> [v1: float ] +B12: +L363: + lwu v1, 120(s6) ;; [ 67] (set! v1-25 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + daddiu v1, v1, 44 ;; [ 68] (set! v1-26 (+ v1-25 44)) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu a0, 120(s6) ;; [ 69] (set! a0-14 (l.wu (+ self 120))) [s6: target ] -> [a0: joint-control ] + lwu a0, 12(a0) ;; [ 70] (set! a0-15 (l.wu (+ a0-14 12))) + ;; [a0: joint-control ] -> [a0: (inline-array joint-control-channel) ] + daddu a0, r0, a0 ;; [ 71] (set! a0-16 (+ a0-15 0)) + ;; [a0: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + bne a0, v1, L364 ;; [ 72] (b! (!= a0-16 v1-26) L364 (set! v1-27 #f)) + ;; [v1: (inline-array joint-control-channel) a0: joint-control-channel ] -> [v1: '#f ] + or v1, s7, r0 + +B13: + lw a0, *duck-mods*(s7) ;; [ 73] (set! a0-17 *duck-mods*) [] -> [a0: surface ] + lwu v1, 108(s6) ;; [ 74] (set! v1-28 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw a0, 656(v1) ;; [ 75] (s.w! (+ v1-28 656) a0-17) [v1: control-info a0: surface ] -> [] +B14: +L364: + lwu v1, 120(s6) ;; [ 76] (set! v1-29 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 77] (set! v1-30 (l.wu (+ v1-29 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 78] (set! a0-18 (+ v1-30 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lui v1, L786 ;; [ 79] (set! v1-31 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 80] (set! f0-2 (l.f v1-31)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 81] (set! v1-32 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f1, 528(v1) ;; [ 82] (set! f1-0 (l.f (+ v1-32 528))) [v1: control-info ] -> [] + lui v1, L789 ;; [ 83] (set! v1-33 L789) [] -> [v1: ] + ori v1, v1, L789 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [ 84] (set! f2-0 (l.f v1-33)) [v1: ] -> [] + lw v1, *TARGET-bank*(s7) ;; [ 85] (set! v1-34 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f3, 244(v1) ;; [ 86] (set! f3-0 (l.f (+ v1-34 244))) [v1: target-bank ] -> [] + lw v1, *TARGET-bank*(s7) ;; [ 87] (set! v1-35 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f4, 204(v1) ;; [ 88] (set! f4-0 (l.f (+ v1-35 204))) [v1: target-bank ] -> [] + div.s f3, f3, f4 ;; [ 89] (set! f3-1 (/.s f3-0 f4-0)) [] -> [] + mul.s f2, f2, f3 ;; [ 90] (set! f2-1 (*.s f2-0 f3-1)) [] -> [] + div.s f1, f1, f2 ;; [ 91] (set! f1-1 (/.s f1-0 f2-1)) [] -> [] + min.s f0, f0, f1 ;; [ 92] (set! f0-3 (min.s f0-2 f1-1)) [] -> [] + swc1 f0, 24(a0) ;; [ 93] (s.f! (+ a0-18 24) f0-3) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 94] (set! t9-4 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [ 95] (set! a1-4 #f) [] -> [a1: '#f ] + lw a2, num-func-loop!(s7) ;; [ 96] (set! a2-2 num-func-loop!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 97] (call! a0-18 a1-4 a2-2) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 98] (set! v1-36 v0-4) [v0: int ] -> [v1: int ] + lwu s6, 44(s6) ;; [ 99] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + beq r0, r0, L363 ;; [100] (b! #t L363 (nop!)) [] -> [] + sll r0, r0, 0 + +B15: + or v0, s7, r0 ;; [101] (set! v0-5 #f) [] -> [v0: ] + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 16(sp) + jr ra + daddiu sp, sp, 32 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-duck-walk) + () + (cond + ((and (ja-group? (-> self draw art-group data 32)) (= (-> self skel root-channel 0) (-> self skel channel))) + ) + ((ja-group? (-> self draw art-group data 31)) + (ja-channel-push! 1 (seconds 0.45)) + (ja :group! (-> self draw art-group data 32) :num! min) + ) + (else + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! (-> self draw art-group data 32) :num! min) + ) + ) + (loop + (if (= (-> self skel root-channel 0) (-> self skel channel)) + (set! (-> self control unknown-surface00) *duck-mods*) + ) + (ja :num! (loop! (fmin 1.0 (/ (-> self control unknown-float01) + (* 60.0 (/ (-> *TARGET-bank* duck-walk-cycle-dist) (-> *TARGET-bank* run-cycle-length))) + ) + ) + ) + ) + (suspend) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (trans target-duck-walk) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 1 ra? 1 ep? 1 +;; s6-0: target +L365: + daddiu sp, sp, -16 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 +B0: + lwu t9, 196(s6) ;; [ 0] (set! t9-0 (l.wu (+ self 196))) + ;; [s6: target ] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 1] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lwu v1, 108(s6) ;; [ 2] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 3] (set! v1-1 (l.wu (+ v1-0 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 4] (set! v1-2 (l.w (+ v1-1 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 5] (set! v1-3 (sll v1-2 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 6] (set! a0-0 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 7] (set! v1-4 (+ v1-3 a0-0)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 8] (set! v1-5 (l.wu (+ v1-4 4))) [v1: ] -> [v1: cpad-info ] + lwu v1, 40(v1) ;; [ 9] (set! v1-6 (l.wu (+ v1-5 40))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 3072 ;; [ 10] (set! v1-7 (logand v1-6 3072)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L366 ;; [ 11] (bl! (zero? v1-7) L366 (no-delay!)) [v1: pad-buttons ] -> [] +B1: + daddiu v1, s7, 8 ;; [ 12] (set! v1-8 #t) [] -> [v1: symbol ] + +B2: + lwu v1, 160(s6) ;; [ 13] (set! v1-9 (l.wu (+ self 160))) [s6: target ] -> [v1: state-flags ] + andi v1, v1, 8192 ;; [ 14] (set! v1-10 (logand v1-9 8192)) [v1: state-flags ] -> [v1: state-flags ] + bnel v1, r0, L366 ;; [ 15] (bl! (nonzero? v1-10) L366 (no-delay!)) [v1: state-flags ] -> [] +B3: + daddiu v1, s7, 8 ;; [ 16] (set! v1-8 #t) [] -> [v1: symbol ] + +B4: + lwu v1, 152(s6) ;; [ 17] (set! v1-11 (l.wu (+ self 152))) [s6: target ] -> [v1: water-control ] + lwu v1, 0(v1) ;; [ 18] (set! v1-12 (l.wu v1-11)) [v1: water-control ] -> [v1: water-flags ] + andi v1, v1, 1024 ;; [ 19] (set! v1-13 (logand v1-12 1024)) [v1: water-flags ] -> [v1: water-flags ] + beql v1, r0, L366 ;; [ 20] (bl! (zero? v1-13) L366 (no-delay!)) [v1: water-flags ] -> [] +B5: + or v1, s7, r0 ;; [ 21] (set! v1-8 #f) [] -> [v1: '#f ] + +B6: + lwu v1, 108(s6) ;; [ 22] (set! v1-14 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 16(v1) ;; [ 23] (set! f0-0 (l.f (+ v1-14 16))) [v1: control-info ] -> [] + lwu v1, 152(s6) ;; [ 24] (set! v1-15 (l.wu (+ self 152))) [s6: target ] -> [v1: water-control ] + lwc1 f1, 60(v1) ;; [ 25] (set! f1-0 (l.f (+ v1-15 60))) [v1: water-control ] -> [] + lwu v1, 152(s6) ;; [ 26] (set! v1-16 (l.wu (+ self 152))) [s6: target ] -> [v1: water-control ] + lwc1 f2, 64(v1) ;; [ 27] (set! f2-0 (l.f (+ v1-16 64))) [v1: water-control ] -> [] + sub.s f1, f1, f2 ;; [ 28] (set! f1-1 (-.s f1-0 f2-0)) [] -> [] + sub.s f0, f0, f1 ;; [ 29] (set! f0-1 (-.s f0-0 f1-1)) [] -> [] + neg.s f0, f0 ;; [ 30] (set! f0-2 (neg.s f0-1)) [] -> [] + lui v1, L771 ;; [ 31] (set! v1-17 L771) [] -> [v1: ] + ori v1, v1, L771 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 32] (set! f1-2 (l.f v1-17)) [v1: ] -> [] + c.lt.s f0, f1 ;; [ 33] (b! (>=.s f0-2 f1-2) L366 (set! v1-8 #t)) [] -> [v1: symbol ] + bc1f L366 + daddiu v1, s7, 8 + +B7: + or v1, s7, r0 ;; [ 34] (set! v1-8 #f) [] -> [v1: '#f ] +B8: +L366: + beql s7, v1, L367 ;; [ 35] (bl! (not v1-8) L367 (no-delay!)) [v1: symbol ] -> [] +B9: + or v1, v1, r0 ;; [ 36] (set! v1-18 v1-8) [v1: symbol ] -> [v1: symbol ] + +B10: + lw t9, can-exit-duck?(s7) ;; [ 37] (set! t9-1 can-exit-duck?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [ 38] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 39] (set! v1-18 v0-1) [v0: symbol ] -> [v1: symbol ] +B11: +L367: + beq s7, v1, L368 ;; [ 40] (b! (not v1-18) L368 (set! v1-19 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B12: + lw t9, enter-state(s7) ;; [ 41] (set! t9-2 enter-state) [] -> [t9: ] + lw v1, target-walk(s7) ;; [ 42] (set! v1-20 target-walk) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 43] (s.w! (+ self 72) v1-20) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 44] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 45] (set! v1-21 v0-2) [v0: object ] -> [v1: object ] +B13: +L368: + lw t9, move-legs?(s7) ;; [ 46] (set! t9-3 move-legs?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [ 47] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + bne s7, v0, L369 ;; [ 48] (b! (truthy v0-3) L369 (set! v1-22 #f)) [v0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B14: + lw t9, enter-state(s7) ;; [ 49] (set! t9-4 enter-state) [] -> [t9: ] + lw v1, target-duck-stance(s7);; [ 50] (set! v1-23 target-duck-stance) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 51] (s.w! (+ self 72) v1-23) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 52] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 53] (set! v1-24 v0-4) [v0: object ] -> [v1: object ] +B15: +L369: + lwu v1, 108(s6) ;; [ 54] (set! v1-25 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 55] (set! v1-26 (l.wu (+ v1-25 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 56] (set! v1-27 (l.w (+ v1-26 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 57] (set! v1-28 (sll v1-27 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 58] (set! a0-1 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 59] (set! v1-29 (+ v1-28 a0-1)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 60] (set! v1-30 (l.wu (+ v1-29 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 61] (set! v1-31 (l.wu (+ v1-30 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 62] (set! a0-2 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 63] (set! a0-3 (l.wu (+ a0-2 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 64] (set! a0-4 (l.w (+ a0-3 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 65] (set! a0-5 (sll a0-4 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 66] (set! a1-0 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 67] (set! a0-6 (+ a0-5 a1-0)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 68] (set! a0-7 (l.wu (+ a0-6 4))) [a0: ] -> [a0: cpad-info ] + lwu a0, 60(a0) ;; [ 69] (set! a0-8 (l.wu (+ a0-7 60))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 70] (set! v1-32 (logior v1-31 a0-8)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 71] (set! a0-9 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 72] (set! a0-10 (l.wu (+ a0-9 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 73] (set! a0-11 (l.w (+ a0-10 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 74] (set! a0-12 (sll a0-11 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 75] (set! a1-1 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 76] (set! a0-13 (+ a0-12 a1-1)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 77] (set! a0-14 (l.wu (+ a0-13 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 64(a0) ;; [ 78] (set! a0-15 (l.wu (+ a0-14 64))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 79] (set! v1-33 (logior v1-32 a0-15)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + andi v1, v1, 16384 ;; [ 80] (set! v1-34 (logand v1-33 #x4000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L370 ;; [ 81] (bl! (zero? v1-34) L370 (no-delay!)) [v1: pad-buttons ] -> [] +B16: + or v1, s7, r0 ;; [ 82] (set! v1-35 #f) [] -> [v1: '#f ] + +B17: + lw t9, can-jump?(s7) ;; [ 83] (set! t9-5 can-jump?) [] -> [t9: (function symbol symbol :behavior target) ] + or a0, s7, r0 ;; [ 84] (set! a0-16 #f) [] -> [a0: '#f ] + jalr ra, t9 ;; [ 85] (call! a0-16) + ;; [a0: '#f t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 86] (set! v1-35 v0-5) [v0: symbol ] -> [v1: symbol ] +B18: +L370: + beq s7, v1, L372 ;; [ 87] (b! (not v1-35) L372 (set! v1-36 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B19: + lwu v1, 108(s6) ;; [ 88] (set! v1-37 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 89] (set! v1-38 (l.wu (+ v1-37 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 90] (set! v1-39 (l.w (+ v1-38 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 91] (set! v1-40 (sll v1-39 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 92] (set! a0-17 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 93] (set! v1-41 (+ v1-40 a0-17)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 94] (set! v1-42 (l.wu (+ v1-41 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwc1 f0, 72(v1) ;; [ 95] (set! f0-3 (l.f (+ v1-42 72))) [v1: cpad-info ] -> [] + mtc1 f1, r0 ;; [ 96] (set! f1-3 0) [] -> [] + c.eq.s f0, f1 ;; [ 97] (b! (!=.s f0-3 f1-3) L371 (nop!)) [] -> [] + bc1f L371 + sll r0, r0, 0 + +B20: + lw t9, enter-state(s7) ;; [ 98] (set! t9-6 enter-state) [] -> [t9: ] + lw v1, *TARGET-bank*(s7) ;; [ 99] (set! v1-43 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 28(v1) ;; [100] (set! f0-4 (l.f (+ v1-43 28))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [101] (set! a0-18 (fpr->gpr f0-4)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [102] (set! v1-44 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 32(v1) ;; [103] (set! f0-5 (l.f (+ v1-44 32))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [104] (set! a1-2 (fpr->gpr f0-5)) [] -> [a1: meters ] + daddiu a2, s7, duck ;; [105] (set! a2-0 'duck) [] -> [a2: symbol ] + lw v1, target-high-jump(s7);; [106] (set! v1-45 target-high-jump) [] -> [v1: (state float float basic target) ] + sw v1, 72(s6) ;; [107] (s.w! (+ self 72) v1-45) [v1: (state float float basic target) s6: target ] -> [] + jalr ra, t9 ;; [108] (call! a0-18 a1-2 a2-0) + ;; [a0: meters a1: meters a2: symbol t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [109] (set! v1-46 v0-6) [v0: object ] -> [v1: object ] + beq r0, r0, L372 ;; [110] (b! #t L372 (nop!)) [] -> [] + sll r0, r0, 0 + +B21: +L371: + lw t9, enter-state(s7) ;; [111] (set! t9-7 enter-state) [] -> [t9: ] + lw v1, *TARGET-bank*(s7) ;; [112] (set! v1-47 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 4(v1) ;; [113] (set! f0-6 (l.f (+ v1-47 4))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [114] (set! a0-19 (fpr->gpr f0-6)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [115] (set! v1-48 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 8(v1) ;; [116] (set! f0-7 (l.f (+ v1-48 8))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [117] (set! a1-3 (fpr->gpr f0-7)) [] -> [a1: meters ] + or a2, s7, r0 ;; [118] (set! a2-1 #f) [] -> [a2: '#f ] + lw v1, target-jump(s7) ;; [119] (set! v1-49 target-jump) [] -> [v1: (state float float surface target) ] + sw v1, 72(s6) ;; [120] (s.w! (+ self 72) v1-49) + ;; [v1: (state float float surface target) s6: target ] -> [] + jalr ra, t9 ;; [121] (call! a0-19 a1-3 a2-1) + ;; [a0: meters a1: meters a2: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [122] (set! v1-50 v0-7) [v0: object ] -> [v1: object ] +B22: +L372: + lw t9, can-hands?(s7) ;; [123] (set! t9-8 can-hands?) [] -> [t9: (function symbol symbol :behavior target) ] + daddiu a0, s7, #t ;; [124] (set! a0-20 #t) [] -> [a0: symbol ] + jalr ra, t9 ;; [125] (call! a0-20) + ;; [a0: symbol t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + beql s7, v0, L373 ;; [126] (bl! (not v0-8) L373 (no-delay!)) [v0: symbol ] -> [] +B23: + or v1, v0, r0 ;; [127] (set! v1-51 v0-8) [v0: symbol ] -> [v1: symbol ] + +B24: + lw t9, can-exit-duck?(s7) ;; [128] (set! t9-9 can-exit-duck?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [129] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [130] (set! v1-51 v0-9) [v0: symbol ] -> [v1: symbol ] +B25: +L373: + beq s7, v1, L374 ;; [131] (b! (not v1-51) L374 (set! v1-52 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B26: + lw t9, enter-state(s7) ;; [132] (set! t9-10 enter-state) [] -> [t9: ] + lw v1, *TARGET-bank*(s7) ;; [133] (set! v1-53 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 44(v1) ;; [134] (set! f0-8 (l.f (+ v1-53 44))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [135] (set! a0-21 (fpr->gpr f0-8)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [136] (set! v1-54 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 48(v1) ;; [137] (set! f0-9 (l.f (+ v1-54 48))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [138] (set! a1-4 (fpr->gpr f0-9)) [] -> [a1: meters ] + lw v1, target-attack-uppercut(s7);; [139] (set! v1-55 target-attack-uppercut) [] -> [v1: (state float float target) ] + sw v1, 72(s6) ;; [140] (s.w! (+ self 72) v1-55) [v1: (state float float target) s6: target ] -> [] + jalr ra, t9 ;; [141] (call! a0-21 a1-4) + ;; [a0: meters a1: meters t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [142] (set! v1-56 v0-10) [v0: object ] -> [v1: object ] +B27: +L374: + lw t9, fall-test(s7) ;; [143] (set! t9-11 fall-test) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [144] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, slide-down-test(s7);; [145] (set! t9-12 slide-down-test) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [146] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + ld ra, 0(sp) + ld fp, 8(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (trans target-duck-walk) + () + ((-> self state-hook)) + (if (and (or (zero? (logand (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons l1 r1)) + ) + (logtest? (-> self state-flags) (state-flags prevent-duck)) + (and (logtest? (-> self water flags) (water-flags wt10)) + (>= (- (- (-> self control trans y) (- (-> self water base-height) (-> self water wade-height)))) 2457.6) + ) + ) + (can-exit-duck?) + ) + (go target-walk) + ) + (if (not (move-legs?)) + (go target-duck-stance) + ) + (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) + (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (go target-high-jump (-> *TARGET-bank* duck-jump-height-min) (-> *TARGET-bank* duck-jump-height-max) 'duck) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) + ) + ) + (if (and (can-hands? #t) (can-exit-duck?)) + (go + target-attack-uppercut + (-> *TARGET-bank* attack-jump-height-min) + (-> *TARGET-bank* attack-jump-height-max) + ) + ) + (fall-test) + (slide-down-test) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-duck-walk) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 1 ra? 1 ep? 1 +;; Warnings: +;; INFO: Return type mismatch surface vs none. + +;; s6-0: target +L375: + daddiu sp, sp, -16 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 +B0: + lui v1, L786 ;; [ 0] (set! v1-0 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 1] (set! f0-0 (l.f v1-0)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 2] (set! v1-1 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 1724(v1) ;; [ 3] (s.f! (+ v1-1 1724) f0-0) [v1: control-info ] -> [] + lw t9, target-collide-set!(s7);; [ 4] (set! t9-0 target-collide-set!) + ;; [] -> [t9: (function symbol float int :behavior target) ] + daddiu a0, s7, duck ;; [ 5] (set! a0-0 'duck) [] -> [a0: symbol ] + lui v1, L786 ;; [ 6] (set! v1-2 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw a1, 0(v1) ;; [ 7] (set! a1-0 (l.w v1-2)) [v1: ] -> [a1: int ] + jalr ra, t9 ;; [ 8] (call! a0-0 a1-0) + ;; [a0: symbol a1: int t9: (function symbol float int :behavior target) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [ 9] (set! v1-3 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 10] (set! v1-4 (l.w (+ v1-3 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 11] (b! (<=0.si v1-4) L376 (set! v1-5 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L376 + or v1, s7, r0 + +B1: + lwu v1, 120(s6) ;; [ 12] (set! v1-6 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 13] (set! v1-7 (l.wu (+ v1-6 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 14] (set! v1-5 (l.wu (+ v1-7 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B2: +L376: + lwu a0, 116(s6) ;; [ 15] (set! a0-1 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 16] (set! a0-2 (l.wu (+ a0-1 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 304(a0) ;; [ 17] (set! a0-3 (l.wu (+ a0-2 304))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 18] (set! a0-4 (= v1-5 a0-3)) [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + bne s7, a0, L377 ;; [ 19] (b! (truthy a0-4) L377 (set! v0-1 #f)) [a0: symbol ] -> [v0: '#f ] + or v0, s7, r0 + +B3: + lw v0, *duck-mods*(s7) ;; [ 20] (set! v0-2 *duck-mods*) [] -> [v0: surface ] + lwu v1, 108(s6) ;; [ 21] (set! v1-8 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw v0, 656(v1) ;; [ 22] (s.w! (+ v1-8 656) v0-2) [v0: surface v1: control-info ] -> [] +B4: +L377: + ld ra, 0(sp) + ld fp, 8(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-duck-walk) + () + (set! (-> self control unknown-float81) 1.0) + (target-collide-set! 'duck (the-as float 1.0)) + (if (not (ja-group? (-> self draw art-group data 69))) + (set! (-> self control unknown-surface00) *duck-mods*) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-duck-stance) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 1 ra? 1 ep? 1 +;; s6-0: target +L378: + daddiu sp, sp, -16 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 +B0: + lwu v1, 120(s6) ;; [ 0] (set! v1-0 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 1] (set! v1-1 (l.w (+ v1-0 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 2] (b! (<=0.si v1-1) L379 (set! v1-2 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L379 + or v1, s7, r0 + +B1: + lwu v1, 120(s6) ;; [ 3] (set! v1-3 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 4] (set! v1-4 (l.wu (+ v1-3 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 5] (set! v1-2 (l.wu (+ v1-4 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B2: +L379: + lwu a0, 116(s6) ;; [ 6] (set! a0-0 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 7] (set! a0-1 (l.wu (+ a0-0 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 304(a0) ;; [ 8] (set! a0-2 (l.wu (+ a0-1 304))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 9] (set! a0-3 (= v1-2 a0-2)) [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L381 ;; [ 10] (b! (not a0-3) L381 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B3: + lwu v1, 120(s6) ;; [ 11] (set! v1-5 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 12] (set! v1-6 (l.wu (+ v1-5 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 13] (set! a0-4 (+ v1-6 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 14] (set! v1-7 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 15] (set! v1-8 (l.wu (+ v1-7 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 308(v1) ;; [ 16] (set! v1-9 (l.wu (+ v1-8 308))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [ 17] (s.w! (+ a0-4 12) v1-9) [v1: art-element a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [ 18] (set! v1-10 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 19] (set! v1-11 (l.wu (+ v1-10 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 308(v1) ;; [ 20] (set! v1-12 (l.wu (+ v1-11 308))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 21] (set! (the-as art-joint-anim v1-13) (l.wu (+ v1-12 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 22] (set! v1-14 (l.h (+ v1-13 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 23] (set! v1-15 (+ v1-14 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 24] (set! f0-0 (gpr->fpr v1-15)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 25] (set! f0-1 (i2f f0-0)) [] -> [] + swc1 f0, 24(a0) ;; [ 26] (s.f! (+ a0-4 24) f0-1) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [ 27] (set! v1-16 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 28] (set! f0-2 (l.f v1-16)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [ 29] (s.f! (+ a0-4 28) f0-2) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [ 30] (set! f0-3 0) [] -> [] + swc1 f0, 16(a0) ;; [ 31] (s.f! (+ a0-4 16) f0-3) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [ 32] (set! t9-0 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [ 33] (set! v1-17 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 34] (set! v1-18 (l.wu (+ v1-17 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 308(v1) ;; [ 35] (set! a1-0 (l.wu (+ v1-18 308))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [ 36] (set! a2-0 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 37] (call! a0-4 a1-0 a2-0) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 38] (set! v1-19 v0-0) [v0: int ] -> [v1: int ] +B4: +L380: + lwu s6, 44(s6) ;; [ 39] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [ 40] (set! v1-20 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 41] (set! v1-21 (l.wu (+ v1-20 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 42] (set! a0-5 (+ v1-21 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [ 43] (set! v1-22 (l.wu (+ a0-5 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 44] (set! v1-23 (l.wu (+ v1-22 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 45] (set! v1-24 (l.h (+ v1-23 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 46] (set! v1-25 (+ v1-24 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 47] (set! f0-4 (gpr->fpr v1-25)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 48] (set! f0-5 (i2f f0-4)) [] -> [] + swc1 f0, 24(a0) ;; [ 49] (s.f! (+ a0-5 24) f0-5) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [ 50] (set! v1-26 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 51] (set! f0-6 (l.f v1-26)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [ 52] (s.f! (+ a0-5 28) f0-6) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 53] (set! t9-1 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [ 54] (set! a1-1 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [ 55] (set! a2-1 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 56] (call! a0-5 a1-1 a2-1) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 57] (set! v1-27 v0-1) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [ 58] (set! t9-2 ja-done?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 59] (set! a0-6 0) [] -> [a0: ] + jalr ra, t9 ;; [ 60] (call! a0-6) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L380 ;; [ 61] (b! (not v0-2) L380 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B5: + or v1, s7, r0 ;; [ 62] (set! v1-28 #f) [] -> [v1: '#f ] + beq r0, r0, L388 ;; [ 63] (b! #t L388 (nop!)) [] -> [] + sll r0, r0, 0 + +B6: +L381: + lwu v1, 120(s6) ;; [ 64] (set! v1-29 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 65] (set! v1-30 (l.w (+ v1-29 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 66] (b! (<=0.si v1-30) L382 (set! v1-31 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L382 + or v1, s7, r0 + +B7: + lwu v1, 120(s6) ;; [ 67] (set! v1-32 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 68] (set! v1-33 (l.wu (+ v1-32 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 69] (set! v1-31 (l.wu (+ v1-33 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B8: +L382: + lwu a0, 116(s6) ;; [ 70] (set! a0-7 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 71] (set! a0-8 (l.wu (+ a0-7 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 152(a0) ;; [ 72] (set! a0-9 (l.wu (+ a0-8 152))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 73] (set! a0-10 (= v1-31 a0-9)) [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L383 ;; [ 74] (bl! (not a0-10) L383 (no-delay!)) [a0: symbol ] -> [] +B9: + or v1, a0, r0 ;; [ 75] (set! v1-34 a0-10) [a0: symbol ] -> [v1: symbol ] + +B10: + lwu v1, 120(s6) ;; [ 76] (set! v1-35 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 77] (set! v1-36 (l.wu (+ v1-35 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu v1, r0, v1 ;; [ 78] (set! v1-37 (+ v1-36 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + lwu a0, 120(s6) ;; [ 79] (set! a0-11 (l.wu (+ self 120))) [s6: target ] -> [a0: joint-control ] + daddiu a0, a0, 44 ;; [ 80] (set! a0-12 (+ a0-11 44)) + ;; [a0: joint-control ] -> [a0: (inline-array joint-control-channel) ] + dsubu a0, v1, a0 ;; [ 81] (set! v1-34 (= v1-37 a0-12)) + ;; [v1: joint-control-channel a0: (inline-array joint-control-channel) ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 +B11: +L383: + beq s7, v1, L384 ;; [ 82] (b! (not v1-34) L384 (nop!)) [v1: symbol ] -> [] + sll r0, r0, 0 + +B12: + or v1, s7, r0 ;; [ 83] (set! v1-38 #f) [] -> [v1: '#f ] + beq r0, r0, L388 ;; [ 84] (b! #t L388 (nop!)) [] -> [] + sll r0, r0, 0 + +B13: +L384: + lwu v1, 120(s6) ;; [ 85] (set! v1-39 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 86] (set! v1-40 (l.w (+ v1-39 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 87] (b! (<=0.si v1-40) L385 (set! v1-41 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L385 + or v1, s7, r0 + +B14: + lwu v1, 120(s6) ;; [ 88] (set! v1-42 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 89] (set! v1-43 (l.wu (+ v1-42 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 90] (set! v1-41 (l.wu (+ v1-43 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B15: +L385: + lwu a0, 116(s6) ;; [ 91] (set! a0-13 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 92] (set! a0-14 (l.wu (+ a0-13 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 156(a0) ;; [ 93] (set! a0-15 (l.wu (+ a0-14 156))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 94] (set! a0-16 (= v1-41 a0-15)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L386 ;; [ 95] (b! (not a0-16) L386 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B16: + lw t9, ja-channel-push!(s7);; [ 96] (set! t9-3 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [ 97] (set! a0-17 1) [] -> [a0: ] + addiu a1, r0, 30 ;; [ 98] (set! a1-2 30) [] -> [a1: ] + jalr ra, t9 ;; [ 99] (call! a0-17 a1-2) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [100] (set! v1-44 v0-3) [v0: int ] -> [v1: int ] + beq r0, r0, L388 ;; [101] (b! #t L388 (nop!)) [] -> [] + sll r0, r0, 0 + +B17: +L386: + lw t9, ja-channel-push!(s7);; [102] (set! t9-4 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [103] (set! a0-18 1) [] -> [a0: ] + addiu a1, r0, 12 ;; [104] (set! a1-3 12) [] -> [a1: ] + jalr ra, t9 ;; [105] (call! a0-18 a1-3) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [106] (set! v1-45 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [107] (set! v1-46 (l.wu (+ v1-45 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [108] (set! a0-19 (+ v1-46 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [109] (set! v1-47 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [110] (set! v1-48 (l.wu (+ v1-47 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 148(v1) ;; [111] (set! v1-49 (l.wu (+ v1-48 148))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [112] (s.w! (+ a0-19 12) v1-49) [v1: art-element a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [113] (set! v1-50 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [114] (set! v1-51 (l.wu (+ v1-50 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 148(v1) ;; [115] (set! v1-52 (l.wu (+ v1-51 148))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [116] (set! (the-as art-joint-anim v1-53) (l.wu (+ v1-52 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [117] (set! v1-54 (l.h (+ v1-53 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [118] (set! v1-55 (+ v1-54 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [119] (set! f0-7 (gpr->fpr v1-55)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [120] (set! f0-8 (i2f f0-7)) [] -> [] + swc1 f0, 24(a0) ;; [121] (s.f! (+ a0-19 24) f0-8) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [122] (set! v1-56 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [123] (set! f0-9 (l.f v1-56)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [124] (s.f! (+ a0-19 28) f0-9) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [125] (set! f0-10 0) [] -> [] + swc1 f0, 16(a0) ;; [126] (s.f! (+ a0-19 16) f0-10) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [127] (set! t9-5 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [128] (set! v1-57 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [129] (set! v1-58 (l.wu (+ v1-57 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 148(v1) ;; [130] (set! a1-4 (l.wu (+ v1-58 148))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [131] (set! a2-2 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [132] (call! a0-19 a1-4 a2-2) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [133] (set! v1-59 v0-5) [v0: int ] -> [v1: int ] +B18: +L387: + lwu s6, 44(s6) ;; [134] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [135] (set! v1-60 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [136] (set! v1-61 (l.wu (+ v1-60 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [137] (set! a0-20 (+ v1-61 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [138] (set! v1-62 (l.wu (+ a0-20 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [139] (set! v1-63 (l.wu (+ v1-62 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [140] (set! v1-64 (l.h (+ v1-63 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [141] (set! v1-65 (+ v1-64 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [142] (set! f0-11 (gpr->fpr v1-65)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [143] (set! f0-12 (i2f f0-11)) [] -> [] + swc1 f0, 24(a0) ;; [144] (s.f! (+ a0-20 24) f0-12) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [145] (set! v1-66 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [146] (set! f0-13 (l.f v1-66)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [147] (s.f! (+ a0-20 28) f0-13) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [148] (set! t9-6 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [149] (set! a1-5 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [150] (set! a2-3 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [151] (call! a0-20 a1-5 a2-3) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [152] (set! v1-67 v0-6) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [153] (set! t9-7 ja-done?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [154] (set! a0-21 0) [] -> [a0: ] + jalr ra, t9 ;; [155] (call! a0-21) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L387 ;; [156] (b! (not v0-7) L387 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B19: + or v1, s7, r0 ;; [157] (set! v1-68 #f) [] -> [v1: '#f ] +B20: +L388: + lwu v1, 120(s6) ;; [158] (set! v1-69 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [159] (set! v1-70 (l.wu (+ v1-69 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [160] (set! a0-22 (+ v1-70 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [161] (set! v1-71 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [162] (set! v1-72 (l.wu (+ v1-71 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 152(v1) ;; [163] (set! v1-73 (l.wu (+ v1-72 152))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [164] (s.w! (+ a0-22 12) v1-73) [v1: art-element a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [165] (set! v1-74 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [166] (set! v1-75 (l.wu (+ v1-74 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 152(v1) ;; [167] (set! v1-76 (l.wu (+ v1-75 152))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [168] (set! (the-as art-joint-anim v1-77) (l.wu (+ v1-76 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [169] (set! v1-78 (l.h (+ v1-77 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [170] (set! v1-79 (+ v1-78 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [171] (set! f0-14 (gpr->fpr v1-79)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [172] (set! f0-15 (i2f f0-14)) [] -> [] + swc1 f0, 24(a0) ;; [173] (s.f! (+ a0-22 24) f0-15) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [174] (set! v1-80 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [175] (set! f0-16 (l.f v1-80)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [176] (s.f! (+ a0-22 28) f0-16) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [177] (set! f0-17 0) [] -> [] + swc1 f0, 16(a0) ;; [178] (s.f! (+ a0-22 16) f0-17) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [179] (set! t9-8 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [180] (set! v1-81 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [181] (set! v1-82 (l.wu (+ v1-81 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 152(v1) ;; [182] (set! a1-6 (l.wu (+ v1-82 152))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [183] (set! a2-4 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [184] (call! a0-22 a1-6 a2-4) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [185] (set! v1-83 v0-8) [v0: int ] -> [v1: int ] +B21: +L389: + lwu s6, 44(s6) ;; [186] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [187] (set! v1-84 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [188] (set! v1-85 (l.wu (+ v1-84 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [189] (set! a0-23 (+ v1-85 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [190] (set! v1-86 (l.wu (+ a0-23 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [191] (set! v1-87 (l.wu (+ v1-86 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [192] (set! v1-88 (l.h (+ v1-87 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [193] (set! v1-89 (+ v1-88 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [194] (set! f0-18 (gpr->fpr v1-89)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [195] (set! f0-19 (i2f f0-18)) [] -> [] + swc1 f0, 24(a0) ;; [196] (s.f! (+ a0-23 24) f0-19) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [197] (set! v1-90 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [198] (set! f0-20 (l.f v1-90)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [199] (s.f! (+ a0-23 28) f0-20) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [200] (set! t9-9 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [201] (set! a1-7 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [202] (set! a2-5 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [203] (call! a0-23 a1-7 a2-5) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [204] (set! v1-91 v0-9) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [205] (set! t9-10 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [206] (set! a0-24 0) [] -> [a0: ] + jalr ra, t9 ;; [207] (call! a0-24) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L389 ;; [208] (b! (not v0-10) L389 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B22: + or v1, s7, r0 ;; [209] (set! v1-92 #f) [] -> [v1: '#f ] + beq r0, r0, L388 ;; [210] (b! #t L388 (nop!)) [] -> [] + sll r0, r0, 0 + +B23: + or v0, s7, r0 ;; [211] (set! v0-11 #f) [] -> [v0: ] + ld ra, 0(sp) + ld fp, 8(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-duck-stance) + () + (cond + ((ja-group? (-> self draw art-group data 69)) + (ja-no-eval :group! (-> self draw art-group data 70) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + ((and (ja-group? (-> self draw art-group data 31)) (= (-> self skel root-channel 0) (-> self skel channel))) + ) + ((ja-group? (-> self draw art-group data 32)) + (ja-channel-push! 1 (seconds 0.1)) + ) + (else + (ja-channel-push! 1 (seconds 0.04)) + (ja-no-eval :group! (-> self draw art-group data 30) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + ) + (loop + (ja-no-eval :group! (-> self draw art-group data 31) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (trans target-duck-stance) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; v1-13: art-joint-anim s6-0: target +L390: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lwu t9, 196(s6) ;; [ 0] (set! t9-0 (l.wu (+ self 196))) + ;; [s6: target ] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 1] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lwu v1, 108(s6) ;; [ 2] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 3] (set! v1-1 (l.wu (+ v1-0 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 4] (set! v1-2 (l.w (+ v1-1 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 5] (set! v1-3 (sll v1-2 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 6] (set! a0-0 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 7] (set! v1-4 (+ v1-3 a0-0)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 8] (set! v1-5 (l.wu (+ v1-4 4))) [v1: ] -> [v1: cpad-info ] + lwu v1, 40(v1) ;; [ 9] (set! v1-6 (l.wu (+ v1-5 40))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 3072 ;; [ 10] (set! v1-7 (logand v1-6 3072)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L391 ;; [ 11] (bl! (zero? v1-7) L391 (no-delay!)) [v1: pad-buttons ] -> [] +B1: + daddiu v1, s7, 8 ;; [ 12] (set! v1-8 #t) [] -> [v1: symbol ] + +B2: + daddiu v1, s7, 8 ;; [ 13] (set! v1-9 #t) [] -> [v1: symbol ] + lwu a0, 160(s6) ;; [ 14] (set! a0-1 (l.wu (+ self 160))) [s6: target ] -> [a0: state-flags ] + andi a0, a0, 8192 ;; [ 15] (set! a0-2 (logand a0-1 8192)) [a0: state-flags ] -> [a0: state-flags ] + movz v1, s7, a0 ;; [ 16] (cmove-#f-zero v1-8 a0-2 v1-9) [v1: symbol a0: state-flags ] -> [v1: symbol ] +B3: +L391: + beql s7, v1, L394 ;; [ 17] (bl! (not v1-8) L394 (no-delay!)) [v1: symbol ] -> [] +B4: + or v1, v1, r0 ;; [ 18] (set! v1-10 v1-8) [v1: symbol ] -> [v1: symbol ] + +B5: + lwu v1, 120(s6) ;; [ 19] (set! v1-11 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 20] (set! v1-12 (l.w (+ v1-11 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 21] (b! (<=0.si v1-12) L392 (set! v1-13 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L392 + or v1, s7, r0 + +B6: + lwu v1, 120(s6) ;; [ 22] (set! v1-14 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 23] (set! v1-15 (l.wu (+ v1-14 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 24] (set! v1-13 (l.wu (+ v1-15 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B7: +L392: + lwu a0, 116(s6) ;; [ 25] (set! a0-3 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 26] (set! a0-4 (l.wu (+ a0-3 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 308(a0) ;; [ 27] (set! a0-5 (l.wu (+ a0-4 308))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [ 28] (set! a1-0 (= v1-13 a0-5)) [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L393 ;; [ 29] (bl! (truthy a1-0) L393 (no-delay!)) [a1: symbol ] -> [] +B8: + or a0, a1, r0 ;; [ 30] (set! a0-6 a1-0) [a1: symbol ] -> [a0: symbol ] + +B9: + lwu a0, 116(s6) ;; [ 31] (set! a0-7 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 32] (set! a0-8 (l.wu (+ a0-7 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 304(a0) ;; [ 33] (set! a0-9 (l.wu (+ a0-8 304))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 34] (set! a0-6 (= v1-13 a0-9)) [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 +B10: +L393: + bnel s7, a0, L394 ;; [ 35] (bl! (truthy a0-6) L394 (no-delay!)) [a0: symbol ] -> [] +B11: + or v1, s7, r0 ;; [ 36] (set! v1-10 #f) [] -> [v1: '#f ] + +B12: + lw t9, can-exit-duck?(s7) ;; [ 37] (set! t9-1 can-exit-duck?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [ 38] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 39] (set! v1-10 v0-1) [v0: symbol ] -> [v1: symbol ] +B13: +L394: + beq s7, v1, L395 ;; [ 40] (b! (not v1-10) L395 (set! v1-16 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B14: + lw t9, enter-state(s7) ;; [ 41] (set! t9-2 enter-state) [] -> [t9: ] + lw v1, target-stance(s7) ;; [ 42] (set! v1-17 target-stance) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 43] (s.w! (+ self 72) v1-17) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 44] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 45] (set! v1-18 v0-2) [v0: object ] -> [v1: object ] +B15: +L395: + lw t9, move-legs?(s7) ;; [ 46] (set! t9-3 move-legs?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [ 47] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L396 ;; [ 48] (b! (not v0-3) L396 (set! v1-19 #f)) [v0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B16: + lw t9, enter-state(s7) ;; [ 49] (set! t9-4 enter-state) [] -> [t9: ] + lw v1, target-duck-walk(s7);; [ 50] (set! v1-20 target-duck-walk) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 51] (s.w! (+ self 72) v1-20) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 52] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 53] (set! v1-21 v0-4) [v0: object ] -> [v1: object ] +B17: +L396: + lwu v1, 108(s6) ;; [ 54] (set! v1-22 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 55] (set! v1-23 (l.wu (+ v1-22 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 56] (set! v1-24 (l.w (+ v1-23 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 57] (set! v1-25 (sll v1-24 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 58] (set! a0-10 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 59] (set! v1-26 (+ v1-25 a0-10)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 60] (set! v1-27 (l.wu (+ v1-26 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 61] (set! v1-28 (l.wu (+ v1-27 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 62] (set! a0-11 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 63] (set! a0-12 (l.wu (+ a0-11 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 64] (set! a0-13 (l.w (+ a0-12 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 65] (set! a0-14 (sll a0-13 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 66] (set! a1-1 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 67] (set! a0-15 (+ a0-14 a1-1)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 68] (set! a0-16 (l.wu (+ a0-15 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 60(a0) ;; [ 69] (set! a0-17 (l.wu (+ a0-16 60))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 70] (set! v1-29 (logior v1-28 a0-17)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 71] (set! a0-18 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 72] (set! a0-19 (l.wu (+ a0-18 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 73] (set! a0-20 (l.w (+ a0-19 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 74] (set! a0-21 (sll a0-20 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 75] (set! a1-2 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 76] (set! a0-22 (+ a0-21 a1-2)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 77] (set! a0-23 (l.wu (+ a0-22 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 64(a0) ;; [ 78] (set! a0-24 (l.wu (+ a0-23 64))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 79] (set! v1-30 (logior v1-29 a0-24)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + andi v1, v1, 16384 ;; [ 80] (set! v1-31 (logand v1-30 #x4000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L397 ;; [ 81] (bl! (zero? v1-31) L397 (no-delay!)) [v1: pad-buttons ] -> [] +B18: + or v1, s7, r0 ;; [ 82] (set! v1-32 #f) [] -> [v1: '#f ] + +B19: + lw t9, can-jump?(s7) ;; [ 83] (set! t9-5 can-jump?) [] -> [t9: (function symbol symbol :behavior target) ] + or a0, s7, r0 ;; [ 84] (set! a0-25 #f) [] -> [a0: '#f ] + jalr ra, t9 ;; [ 85] (call! a0-25) + ;; [a0: '#f t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 86] (set! v1-32 v0-5) [v0: symbol ] -> [v1: symbol ] +B20: +L397: + beq s7, v1, L399 ;; [ 87] (b! (not v1-32) L399 (set! v1-33 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B21: + lwu v1, 108(s6) ;; [ 88] (set! v1-34 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 89] (set! v1-35 (l.wu (+ v1-34 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 90] (set! v1-36 (l.w (+ v1-35 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 91] (set! v1-37 (sll v1-36 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 92] (set! a0-26 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 93] (set! v1-38 (+ v1-37 a0-26)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 94] (set! v1-39 (l.wu (+ v1-38 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwc1 f0, 72(v1) ;; [ 95] (set! f0-0 (l.f (+ v1-39 72))) [v1: cpad-info ] -> [] + mtc1 f1, r0 ;; [ 96] (set! f1-0 0) [] -> [] + c.eq.s f0, f1 ;; [ 97] (b! (!=.s f0-0 f1-0) L398 (nop!)) [] -> [] + bc1f L398 + sll r0, r0, 0 + +B22: + lw t9, enter-state(s7) ;; [ 98] (set! t9-6 enter-state) [] -> [t9: ] + lw v1, *TARGET-bank*(s7) ;; [ 99] (set! v1-40 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 28(v1) ;; [100] (set! f0-1 (l.f (+ v1-40 28))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [101] (set! a0-27 (fpr->gpr f0-1)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [102] (set! v1-41 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 32(v1) ;; [103] (set! f0-2 (l.f (+ v1-41 32))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [104] (set! a1-3 (fpr->gpr f0-2)) [] -> [a1: meters ] + daddiu a2, s7, duck ;; [105] (set! a2-0 'duck) [] -> [a2: symbol ] + lw v1, target-high-jump(s7);; [106] (set! v1-42 target-high-jump) [] -> [v1: (state float float basic target) ] + sw v1, 72(s6) ;; [107] (s.w! (+ self 72) v1-42) [v1: (state float float basic target) s6: target ] -> [] + jalr ra, t9 ;; [108] (call! a0-27 a1-3 a2-0) + ;; [a0: meters a1: meters a2: symbol t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [109] (set! v1-43 v0-6) [v0: object ] -> [v1: object ] + beq r0, r0, L399 ;; [110] (b! #t L399 (nop!)) [] -> [] + sll r0, r0, 0 + +B23: +L398: + lw t9, enter-state(s7) ;; [111] (set! t9-7 enter-state) [] -> [t9: ] + lw v1, *TARGET-bank*(s7) ;; [112] (set! v1-44 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 4(v1) ;; [113] (set! f0-3 (l.f (+ v1-44 4))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [114] (set! a0-28 (fpr->gpr f0-3)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [115] (set! v1-45 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 8(v1) ;; [116] (set! f0-4 (l.f (+ v1-45 8))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [117] (set! a1-4 (fpr->gpr f0-4)) [] -> [a1: meters ] + or a2, s7, r0 ;; [118] (set! a2-1 #f) [] -> [a2: '#f ] + lw v1, target-jump(s7) ;; [119] (set! v1-46 target-jump) [] -> [v1: (state float float surface target) ] + sw v1, 72(s6) ;; [120] (s.w! (+ self 72) v1-46) + ;; [v1: (state float float surface target) s6: target ] -> [] + jalr ra, t9 ;; [121] (call! a0-28 a1-4 a2-1) + ;; [a0: meters a1: meters a2: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [122] (set! v1-47 v0-7) [v0: object ] -> [v1: object ] +B24: +L399: + lw t9, can-hands?(s7) ;; [123] (set! t9-8 can-hands?) [] -> [t9: (function symbol symbol :behavior target) ] + daddiu a0, s7, #t ;; [124] (set! a0-29 #t) [] -> [a0: symbol ] + jalr ra, t9 ;; [125] (call! a0-29) + ;; [a0: symbol t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + beql s7, v0, L400 ;; [126] (bl! (not v0-8) L400 (no-delay!)) [v0: symbol ] -> [] +B25: + or v1, v0, r0 ;; [127] (set! v1-48 v0-8) [v0: symbol ] -> [v1: symbol ] + +B26: + lw t9, can-exit-duck?(s7) ;; [128] (set! t9-9 can-exit-duck?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [129] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [130] (set! v1-48 v0-9) [v0: symbol ] -> [v1: symbol ] +B27: +L400: + beq s7, v1, L401 ;; [131] (b! (not v1-48) L401 (set! v1-49 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B28: + lw t9, enter-state(s7) ;; [132] (set! t9-10 enter-state) [] -> [t9: ] + lw v1, *TARGET-bank*(s7) ;; [133] (set! v1-50 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 44(v1) ;; [134] (set! f0-5 (l.f (+ v1-50 44))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [135] (set! a0-30 (fpr->gpr f0-5)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [136] (set! v1-51 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 48(v1) ;; [137] (set! f0-6 (l.f (+ v1-51 48))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [138] (set! a1-5 (fpr->gpr f0-6)) [] -> [a1: meters ] + lw v1, target-attack-uppercut(s7);; [139] (set! v1-52 target-attack-uppercut) [] -> [v1: (state float float target) ] + sw v1, 72(s6) ;; [140] (s.w! (+ self 72) v1-52) [v1: (state float float target) s6: target ] -> [] + jalr ra, t9 ;; [141] (call! a0-30 a1-5) + ;; [a0: meters a1: meters t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [142] (set! v1-53 v0-10) [v0: object ] -> [v1: object ] +B29: +L401: + lw t9, fall-test(s7) ;; [143] (set! t9-11 fall-test) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [144] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, slide-down-test(s7);; [145] (set! t9-12 slide-down-test) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [146] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (trans target-duck-stance) + () + ((-> self state-hook)) + (if (and (or (zero? (logand (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons l1 r1)) + ) + (logtest? (-> self state-flags) (state-flags prevent-duck)) + ) + (let ((v1-13 (ja-group))) + (and (not (or (= v1-13 (-> self draw art-group data 70)) (= v1-13 (-> self draw art-group data 69)))) + (can-exit-duck?) + ) + ) + ) + (go target-stance) + ) + (if (move-legs?) + (go target-duck-walk) + ) + (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) + (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (go target-high-jump (-> *TARGET-bank* duck-jump-height-min) (-> *TARGET-bank* duck-jump-height-max) 'duck) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) + ) + ) + (if (and (can-hands? #t) (can-exit-duck?)) + (go + target-attack-uppercut + (-> *TARGET-bank* attack-jump-height-min) + (-> *TARGET-bank* attack-jump-height-max) + ) + ) + (fall-test) + (slide-down-test) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (exit target-duck-stance) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 1 ra? 1 ep? 1 +;; Warnings: +;; INFO: Return type mismatch int vs none. + +;; s6-0: target +L402: + daddiu sp, sp, -16 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 +B0: + lwu v1, 72(s6) ;; [ 0] (set! v1-0 (l.wu (+ self 72))) [s6: target ] -> [v1: state ] + lwu v1, 0(v1) ;; [ 1] (set! v1-1 (l.wu v1-0)) [v1: state ] -> [v1: symbol ] + daddiu a0, s7, target-duck-walk;; [ 2] (set! a0-0 'target-duck-walk) [] -> [a0: symbol ] + dsubu v1, v1, a0 ;; [ 3] (set! a0-1 (= v1-1 a0-0)) [v1: symbol a0: symbol ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + bnel s7, a0, L403 ;; [ 4] (bl! (truthy a0-1) L403 (no-delay!)) [a0: symbol ] -> [] +B1: + or v1, a0, r0 ;; [ 5] (set! v1-2 a0-1) [a0: symbol ] -> [v1: symbol ] + +B2: + lwu v1, 72(s6) ;; [ 6] (set! v1-3 (l.wu (+ self 72))) [s6: target ] -> [v1: state ] + lwu v1, 0(v1) ;; [ 7] (set! v1-4 (l.wu v1-3)) [v1: state ] -> [v1: symbol ] + daddiu a0, s7, target-duck-stance;; [ 8] (set! a0-2 'target-duck-stance) [] -> [a0: symbol ] + dsubu v1, v1, a0 ;; [ 9] (set! a0-3 (= v1-4 a0-2)) [v1: symbol a0: symbol ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + bnel s7, a0, L403 ;; [ 10] (bl! (truthy a0-3) L403 (no-delay!)) [a0: symbol ] -> [] +B3: + or v1, a0, r0 ;; [ 11] (set! v1-2 a0-3) [a0: symbol ] -> [v1: symbol ] + +B4: + lwu v1, 72(s6) ;; [ 12] (set! v1-5 (l.wu (+ self 72))) [s6: target ] -> [v1: state ] + lwu v1, 0(v1) ;; [ 13] (set! v1-6 (l.wu v1-5)) [v1: state ] -> [v1: symbol ] + daddiu a0, s7, target-walk;; [ 14] (set! a0-4 'target-walk) [] -> [a0: symbol ] + dsubu v1, v1, a0 ;; [ 15] (set! a0-5 (= v1-6 a0-4)) [v1: symbol a0: symbol ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + bnel s7, a0, L403 ;; [ 16] (bl! (truthy a0-5) L403 (no-delay!)) [a0: symbol ] -> [] +B5: + or v1, a0, r0 ;; [ 17] (set! v1-2 a0-5) [a0: symbol ] -> [v1: symbol ] + +B6: + lwu v1, 72(s6) ;; [ 18] (set! v1-7 (l.wu (+ self 72))) [s6: target ] -> [v1: state ] + lwu v1, 0(v1) ;; [ 19] (set! v1-8 (l.wu v1-7)) [v1: state ] -> [v1: symbol ] + daddiu a0, s7, target-stance;; [ 20] (set! a0-6 'target-stance) [] -> [a0: symbol ] + dsubu v1, v1, a0 ;; [ 21] (set! a0-7 (= v1-8 a0-6)) [v1: symbol a0: symbol ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + bnel s7, a0, L403 ;; [ 22] (bl! (truthy a0-7) L403 (no-delay!)) [a0: symbol ] -> [] +B7: + or v1, a0, r0 ;; [ 23] (set! v1-2 a0-7) [a0: symbol ] -> [v1: symbol ] + +B8: + lwu v1, 72(s6) ;; [ 24] (set! v1-9 (l.wu (+ self 72))) [s6: target ] -> [v1: state ] + lwu v1, 0(v1) ;; [ 25] (set! v1-10 (l.wu v1-9)) [v1: state ] -> [v1: symbol ] + daddiu a0, s7, target-stance-look-around;; [ 26] (set! a0-8 'target-stance-look-around) [] -> [a0: symbol ] + dsubu a0, v1, a0 ;; [ 27] (set! v1-2 (= v1-10 a0-8)) [v1: symbol a0: symbol ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 +B9: +L403: + bne s7, v1, L404 ;; [ 28] (b! (truthy v1-2) L404 (set! v1-11 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B10: + lw t9, target-state-hook-exit(s7);; [ 29] (set! t9-0 target-state-hook-exit) + ;; [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 30] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 31] (set! v1-12 v0-0) [v0: none ] -> [v1: none ] +B11: +L404: + lw t9, target-exit(s7) ;; [ 32] (set! t9-1 target-exit) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 33] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, target-collide-set!(s7);; [ 34] (set! t9-2 target-collide-set!) + ;; [] -> [t9: (function symbol float int :behavior target) ] + daddiu a0, s7, normal ;; [ 35] (set! a0-9 'normal) [] -> [a0: symbol ] + lui v1, L814 ;; [ 36] (set! v1-13 L814) [] -> [v1: ] + ori v1, v1, L814 + addu v1, fp, v1 + lw a1, 0(v1) ;; [ 37] (set! a1-0 (l.w v1-13)) [v1: ] -> [a1: int ] + jalr ra, t9 ;; [ 38] (call! a0-9 a1-0) + ;; [a0: symbol a1: int t9: (function symbol float int :behavior target) ] -> [v0: int ] + sll v0, ra, 0 + + ld ra, 0(sp) + ld fp, 8(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (exit target-duck-stance) + () + (if (not (or (= (-> self next-state name) 'target-duck-walk) + (= (-> self next-state name) 'target-duck-stance) + (= (-> self next-state name) 'target-walk) + (= (-> self next-state name) 'target-stance) + (= (-> self next-state name) 'target-stance-look-around) + ) + ) + (target-state-hook-exit) + ) + (target-exit) + (target-collide-set! 'normal (the-as float 0.0)) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-duck-stance) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 1 ra? 1 ep? 1 +;; Warnings: +;; INFO: Return type mismatch int vs none. + +;; s6-0: target +L405: + daddiu sp, sp, -16 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 +B0: + lui v1, L786 ;; [ 0] (set! v1-0 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 1] (set! f0-0 (l.f v1-0)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 2] (set! v1-1 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 1724(v1) ;; [ 3] (s.f! (+ v1-1 1724) f0-0) [v1: control-info ] -> [] + lw v1, *duck-mods*(s7) ;; [ 4] (set! v1-2 *duck-mods*) [] -> [v1: surface ] + lwu a0, 108(s6) ;; [ 5] (set! a0-0 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sw v1, 656(a0) ;; [ 6] (s.w! (+ a0-0 656) v1-2) [v1: surface a0: control-info ] -> [] + lw t9, target-collide-set!(s7);; [ 7] (set! t9-0 target-collide-set!) + ;; [] -> [t9: (function symbol float int :behavior target) ] + daddiu a0, s7, duck ;; [ 8] (set! a0-1 'duck) [] -> [a0: symbol ] + lui v1, L786 ;; [ 9] (set! v1-3 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw a1, 0(v1) ;; [ 10] (set! a1-0 (l.w v1-3)) [v1: ] -> [a1: int ] + jalr ra, t9 ;; [ 11] (call! a0-1 a1-0) + ;; [a0: symbol a1: int t9: (function symbol float int :behavior target) ] -> [v0: int ] + sll v0, ra, 0 + + ld ra, 0(sp) + ld fp, 8(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-duck-stance) + () + (set! (-> self control unknown-float81) 1.0) + (set! (-> self control unknown-surface00) *duck-mods*) + (target-collide-set! 'duck (the-as float 1.0)) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function mod-var-jump +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x80, fp? 1 ra? 1 ep? 1 + ;stack_vars: 32 bytes at 16 + ;gprs: gp s5 s4 s3 + ;fprs: f30 f28 f26 f24 +;; Warnings: +;; Used lq/sq + +;; v0-2: vector v1-57: vector a0-0: symbol a1-0: symbol a2-0: symbol a3-0: vector s3-1: vector +;; s4-0: vector s6-0: target f0-5: float f0-13: float f26-0: float f28-0: float f30-0: float +L406: + daddiu sp, sp, -128 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s3, 48(sp) + sq s4, 64(sp) + sq s5, 80(sp) + sq gp, 96(sp) + swc1 f24, 112(sp) + swc1 f26, 116(sp) + swc1 f28, 120(sp) + swc1 f30, 124(sp) +B0: + or gp, a1, r0 ;; [ 0] (set! arg1 arg1) [a1: symbol ] -> [gp: symbol ] + or s5, a3, r0 ;; [ 1] (set! arg3 arg3) [a3: vector ] -> [s5: vector ] + lui v1, L769 ;; [ 2] (set! v1-0 L769) [] -> [v1: ] + ori v1, v1, L769 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 3] (set! f0-0 (l.f v1-0)) [v1: ] -> [] + lw v1, *display*(s7) ;; [ 4] (set! v1-1 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 5] (set! v1-2 (l.d (+ v1-1 780))) [v1: display ] -> [v1: time-frame ] + ld a1, 164(s6) ;; [ 6] (set! a1-1 (l.d (+ self 164))) [s6: target ] -> [a1: time-frame ] + dsubu v1, v1, a1 ;; [ 7] (set! v1-3 (- v1-2 a1-1)) [v1: time-frame a1: time-frame ] -> [v1: time-frame ] + mtc1 f1, v1 ;; [ 8] (set! f1-0 (gpr->fpr v1-3)) [v1: time-frame ] -> [] + cvt.s.w f1, f1 ;; [ 9] (set! f1-1 (i2f f1-0)) [] -> [] + mul.s f30, f0, f1 ;; [ 10] (set! f30-0 (*.s f0-0 f1-1)) [] -> [] + lui v1, L786 ;; [ 11] (set! v1-4 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 12] (set! f0-1 (l.f v1-4)) [v1: ] -> [] + c.lt.s f0, f30 ;; [ 13] (b! (<.s f0-1 f30-0) L407 (set! v1-5 #t)) [] -> [v1: symbol ] + bc1t L407 + daddiu v1, s7, 8 + +B1: + or v1, s7, r0 ;; [ 14] (set! v1-5 #f) [] -> [v1: '#f ] +B2: +L407: + bnel s7, v1, L409 ;; [ 15] (bl! (truthy v1-5) L409 (no-delay!)) [v1: symbol ] -> [] +B3: + or v1, v1, r0 ;; [ 16] (set! v1-6 v1-5) [v1: symbol ] -> [v1: symbol ] + +B4: + lwu v1, 108(s6) ;; [ 17] (set! v1-7 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 2196(v1) ;; [ 18] (set! f0-2 (l.f (+ v1-7 2196))) [v1: control-info ] -> [] + mtc1 f1, r0 ;; [ 19] (set! f1-2 0) [] -> [] + c.lt.s f0, f1 ;; [ 20] (b! (<.s f0-2 f1-2) L408 (set! v1-8 #t)) [] -> [v1: symbol ] + bc1t L408 + daddiu v1, s7, 8 + +B5: + or v1, s7, r0 ;; [ 21] (set! v1-8 #f) [] -> [v1: '#f ] +B6: +L408: + bnel s7, v1, L409 ;; [ 22] (bl! (truthy v1-8) L409 (no-delay!)) [v1: symbol ] -> [] +B7: + or v1, v1, r0 ;; [ 23] (set! v1-6 v1-8) [v1: symbol ] -> [v1: symbol ] + +B8: + beq s7, a2, L409 ;; [ 24] (b! (not arg2) L409 (set! v1-6 #t)) [a2: symbol ] -> [v1: symbol ] + daddiu v1, s7, 8 + +B9: + or v1, s7, r0 ;; [ 25] (set! v1-6 #f) [] -> [v1: '#f ] +B10: +L409: + beq s7, v1, L410 ;; [ 26] (b! (not v1-6) L410 (nop!)) [v1: symbol ] -> [] + sll r0, r0, 0 + +B11: + lui v1, L787 ;; [ 27] (set! v1-9 L787) [] -> [v1: ] + ori v1, v1, L787 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 28] (set! f0-3 (l.f v1-9)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 29] (set! v1-10 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 2196(v1) ;; [ 30] (s.f! (+ v1-10 2196) f0-3) [v1: control-info ] -> [] + mfc1 v1, f0 ;; [ 31] (set! v1-11 (fpr->gpr f0-3)) [] -> [v1: float ] + beq r0, r0, L411 ;; [ 32] (b! #t L411 (nop!)) [] -> [] + sll r0, r0, 0 + +B12: +L410: + lwu v1, 108(s6) ;; [ 33] (set! v1-12 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f30, 2196(v1) ;; [ 34] (s.f! (+ v1-12 2196) f30-0) [v1: control-info ] -> [] + lwu v1, 108(s6) ;; [ 35] (set! v1-13 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f30, 2200(v1) ;; [ 36] (s.f! (+ v1-13 2200) f30-0) [v1: control-info ] -> [] + beq s7, a0, L411 ;; [ 37] (b! (not arg0) L411 (set! v1-14 #f)) [a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B13: + daddiu s3, sp, 16 ;; [ 38] (set! s3-0 (+ sp-0 16)) [sp: ] -> [s3: vector ] + sq r0, 0(s3) ;; [ 39] (s.q! s3-0 0) [s3: vector ] -> [] + lwu v1, 108(s6) ;; [ 40] (set! v1-15 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 12 ;; [ 41] (set! v1-16 (+ v1-15 12)) [v1: control-info ] -> [v1: vector ] + lwu a0, 108(s6) ;; [ 42] (set! a0-1 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + daddiu a0, a0, 2220 ;; [ 43] (set! a0-2 (+ a0-1 2220)) [a0: control-info ] -> [a0: vector ] + lqc2 vf4, 0(v1) ;; [ 44] (set! s3-1 (vector-!2 s3-0 v1-16 a0-2)) + ;; [v1: vector a0: vector s3: vector ] -> [s3: vector ] + lqc2 vf5, 0(a0) + vmove.w vf6, vf0 + vsub.xyz vf6, vf4, vf5 + sqc2 vf6, 0(s3) + daddiu s4, sp, 32 ;; [ 45] (set! s4-0 (+ sp-0 32)) [sp: ] -> [s4: vector ] + sq r0, 0(s4) ;; [ 46] (s.q! s4-0 0) [s4: vector ] -> [] + lwu v1, 108(s6) ;; [ 47] (set! v1-17 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 48] (set! v1-18 (l.wu (+ v1-17 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 49] (set! a0-3 (+ v1-18 28)) [v1: dynamics ] -> [a0: vector ] + or v1, s5, r0 ;; [ 50] (set! v1-19 arg3) [s5: vector ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [ 51] (set! f0-4 (vec3dot a0-3 v1-19)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [ 52] (set! v1-20 (fpr->gpr f0-4)) [] -> [v1: float ] + mtc1 f0, v1 ;; [ 53] (set! f0-5 (gpr->fpr v1-20)) [v1: float ] -> [] + mtc1 f1, r0 ;; [ 54] (set! f1-3 0) [] -> [] + or a1, s4, r0 ;; [ 55] (set! a1-2 s4-0) [s4: vector ] -> [a1: vector ] + or v1, s5, r0 ;; [ 56] (set! v1-21 arg3) [s5: vector ] -> [v1: vector ] + or a0, s4, r0 ;; [ 57] (set! a0-4 s4-0) [s4: vector ] -> [a0: vector ] + lwu a2, 108(s6) ;; [ 58] (set! a2-1 (l.wu (+ self 108))) [s6: target ] -> [a2: control-info ] + lwu a2, 432(a2) ;; [ 59] (set! a2-2 (l.wu (+ a2-1 432))) [a2: control-info ] -> [a2: dynamics ] + daddiu a2, a2, 28 ;; [ 60] (set! a2-3 (+ a2-2 28)) [a2: dynamics ] -> [a2: vector ] + lqc2 vf1, 0(a2) ;; [ 61] (set! a0-5 (vector-float*!2 a0-4 a2-3 f0-5)) + ;; [a0: vector a2: vector ] -> [a0: vector ] + mfc1 a2, f0 + qmtc2.i vf2, a2 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a0) + lqc2 vf4, 0(v1) ;; [ 62] (set! a1-3 (vector-!2 a1-2 v1-21 a0-5)) + ;; [v1: vector a0: vector a1: vector ] -> [a1: vector ] + lqc2 vf5, 0(a0) + vmove.w vf6, vf0 + vsub.xyz vf6, vf4, vf5 + sqc2 vf6, 0(a1) + lw t9, vector-length(s7) ;; [ 63] (set! t9-0 vector-length) [] -> [t9: (function vector float) ] + or a0, s4, r0 ;; [ 64] (set! a0-6 s4-0) [s4: vector ] -> [a0: vector ] + jalr ra, t9 ;; [ 65] (call! a0-6) [a0: vector t9: (function vector float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f28, v0 ;; [ 66] (set! f28-0 (gpr->fpr v0-0)) [v0: float ] -> [] + mov.s f26, f28 ;; [ 67] (set! f26-0 f28-0) [] -> [] + lui v1, L748 ;; [ 68] (set! v1-22 L748) [] -> [v1: ] + ori v1, v1, L748 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 69] (set! f0-6 (l.f v1-22)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 70] (set! v1-23 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 71] (set! v1-24 (l.wu (+ v1-23 432))) [v1: control-info ] -> [v1: dynamics ] + lwc1 f1, 8(v1) ;; [ 72] (set! f1-4 (l.f (+ v1-24 8))) [v1: dynamics ] -> [] + mul.s f24, f0, f1 ;; [ 73] (set! f24-0 (*.s f0-6 f1-4)) [] -> [] + lw t9, lerp-scale(s7) ;; [ 74] (set! t9-1 lerp-scale) [] -> [t9: (function float float float float float float) ] + lwu v1, 108(s6) ;; [ 75] (set! v1-25 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 2180(v1) ;; [ 76] (set! f0-7 (l.f (+ v1-25 2180))) [v1: control-info ] -> [] + mfc1 a0, f0 ;; [ 77] (set! a0-7 (fpr->gpr f0-7)) [] -> [a0: float ] + lwu v1, 108(s6) ;; [ 78] (set! v1-26 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 2184(v1) ;; [ 79] (set! f0-8 (l.f (+ v1-26 2184))) [v1: control-info ] -> [] + mfc1 a1, f0 ;; [ 80] (set! a1-4 (fpr->gpr f0-8)) [] -> [a1: float ] + mfc1 a2, f30 ;; [ 81] (set! a2-4 (fpr->gpr f30-0)) [] -> [a2: float ] + lui v1, L814 ;; [ 82] (set! v1-27 L814) [] -> [v1: ] + ori v1, v1, L814 + addu v1, fp, v1 + lw a3, 0(v1) ;; [ 83] (set! a3-1 (l.w v1-27)) [v1: ] -> [a3: int ] + lui v1, L786 ;; [ 84] (set! v1-28 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw t0, 0(v1) ;; [ 85] (set! t0-0 (l.w v1-28)) [v1: ] -> [t0: int ] + jalr ra, t9 ;; [ 86] (call! a0-7 a1-4 a2-4 a3-1 t0-0) + ;; [a0: float a1: float a2: float a3: int t0: int t9: (function float float float float float float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 87] (set! f0-9 (gpr->fpr v0-1)) [v0: float ] -> [] + lwu v1, 108(s6) ;; [ 88] (set! v1-29 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 89] (set! v1-30 (l.wu (+ v1-29 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu v1, v1, 28 ;; [ 90] (set! v1-31 (+ v1-30 28)) [v1: dynamics ] -> [v1: vector ] + lwc1 f1, 0(v1) ;; [ 91] (set! f1-5 (vec3dot v1-31 s3-1)) [v1: vector s3: vector ] -> [] + lwc1 f2, 4(v1) + lwc1 f3, 8(v1) + lwc1 f4, 0(s3) + lwc1 f5, 4(s3) + lwc1 f6, 8(s3) + mula.s f1, f4 + madda.s f2, f5 + madd.s f1, f3, f6 + mfc1 v1, f1 ;; [ 92] (set! v1-32 (fpr->gpr f1-5)) [] -> [v1: float ] + mtc1 f1, v1 ;; [ 93] (set! f1-6 (gpr->fpr v1-32)) [v1: float ] -> [] + sub.s f0, f0, f1 ;; [ 94] (set! f0-10 (-.s f0-9 f1-6)) [] -> [] + mul.s f0, f24, f0 ;; [ 95] (set! f0-11 (*.s f24-0 f0-10)) [] -> [] + sqrt.s f0, f0 ;; [ 96] (set! f0-12 (sqrt.s f0-11)) [] -> [] + lui v1, L770 ;; [ 97] (set! v1-33 L770) [] -> [v1: ] + ori v1, v1, L770 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 98] (set! f1-7 (l.f v1-33)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 99] (set! v1-34 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [100] (set! v1-35 (l.wu (+ v1-34 432))) [v1: control-info ] -> [v1: dynamics ] + lwc1 f2, 8(v1) ;; [101] (set! f2-0 (l.f (+ v1-35 8))) [v1: dynamics ] -> [] + neg.s f2, f2 ;; [102] (set! f2-1 (neg.s f2-0)) [] -> [] + mul.s f1, f1, f2 ;; [103] (set! f1-8 (*.s f1-7 f2-1)) [] -> [] + sub.s f0, f0, f1 ;; [104] (set! f0-13 (-.s f0-12 f1-8)) [] -> [] + or v1, s5, r0 ;; [105] (set! v1-36 arg3) [s5: vector ] -> [v1: vector ] + lwu a0, 108(s6) ;; [106] (set! a0-8 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 432(a0) ;; [107] (set! a0-9 (l.wu (+ a0-8 432))) [a0: control-info ] -> [a0: dynamics ] + daddiu a0, a0, 28 ;; [108] (set! a0-10 (+ a0-9 28)) [a0: dynamics ] -> [a0: vector ] + lqc2 vf1, 0(a0) ;; [109] (set! s5-1 (vector-float*!2 arg3 a0-10 f0-13)) + ;; [a0: vector s5: vector ] -> [s5: vector ] + mfc1 a0, f0 + qmtc2.i vf2, a0 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(s5) + or a0, s4, r0 ;; [110] (set! a0-11 s4-0) [s4: vector ] -> [a0: vector ] + div.s f0, f28, f26 ;; [111] (set! f0-14 (/.s f28-0 f26-0)) [] -> [] + lqc2 vf1, 0(s4) ;; [112] (set! a0-12 (vector-float*!2 a0-11 s4-0 f0-14)) + ;; [a0: vector s4: vector ] -> [a0: vector ] + mfc1 a1, f0 + qmtc2.i vf2, a1 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a0) + vmove.w vf6, vf0 ;; [113] (set! v1-37 (vector+!2 v1-36 s5-1 a0-12)) + ;; [v1: vector a0: vector s5: vector ] -> [v1: vector ] + lqc2 vf4, 0(s5) + lqc2 vf5, 0(a0) + vadd.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) +B14: +L411: + or v1, r0, r0 ;; [114] (set! v1-38 0) [] -> [v1: ] + beql s7, gp, L414 ;; [115] (bl! (not arg1) L414 (no-delay!)) [gp: symbol ] -> [] +B15: + or v1, gp, r0 ;; [116] (set! v1-39 arg1) [gp: symbol ] -> [v1: symbol ] + +B16: + lwu v1, 120(s6) ;; [117] (set! v1-40 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [118] (set! v1-41 (l.w (+ v1-40 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [119] (b! (<=0.si v1-41) L412 (set! v1-42 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L412 + or v1, s7, r0 + +B17: + lwu v1, 120(s6) ;; [120] (set! v1-43 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [121] (set! v1-44 (l.wu (+ v1-43 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [122] (set! v1-42 (l.wu (+ v1-44 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B18: +L412: + beql s7, v1, L414 ;; [123] (bl! (not v1-42) L414 (no-delay!)) [v1: art-joint-anim ] -> [] +B19: + or v1, v1, r0 ;; [124] (set! v1-39 v1-42) [v1: art-joint-anim ] -> [v1: art-joint-anim ] + +B20: + lwu v1, 120(s6) ;; [125] (set! v1-45 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [126] (set! v1-46 (l.w (+ v1-45 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [127] (b! (<=0.si v1-46) L413 (set! v1-47 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L413 + or v1, s7, r0 + +B21: + lwu v1, 120(s6) ;; [128] (set! v1-48 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [129] (set! v1-49 (l.wu (+ v1-48 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [130] (set! v1-47 (l.wu (+ v1-49 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B22: +L413: + lwu v1, 12(v1) ;; [131] (set! v1-50 (l.wu (+ v1-47 12))) [v1: art-joint-anim ] -> [v1: res-lump ] + beql s7, v1, L414 ;; [132] (bl! (not v1-50) L414 (no-delay!)) [v1: res-lump ] -> [] +B23: + or v1, v1, r0 ;; [133] (set! v1-39 v1-50) [v1: res-lump ] -> [v1: res-lump ] + +B24: + daddiu v1, s7, #t ;; [134] (set! v1-39 #t) [] -> [v1: symbol ] +B25: +L414: + beq s7, v1, L417 ;; [135] (b! (not v1-39) L417 (set! v0-2 #f)) [v1: basic ] -> [v0: '#f ] + or v0, s7, r0 + +B26: + lw v1, res-lump(s7) ;; [136] (set! v1-51 res-lump) [] -> [v1: ] + lwu gp, 56(v1) ;; [137] (set! gp-1 (l.wu (+ v1-51 56))) + ;; [v1: ] -> [gp: ] + lwu v1, 120(s6) ;; [138] (set! v1-52 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [139] (set! v1-53 (l.w (+ v1-52 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [140] (b! (<=0.si v1-53) L415 (set! v1-54 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L415 + or v1, s7, r0 + +B27: + lwu v1, 120(s6) ;; [141] (set! v1-55 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [142] (set! v1-56 (l.wu (+ v1-55 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [143] (set! v1-54 (l.wu (+ v1-56 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B28: +L415: + lwu s5, 12(v1) ;; [144] (set! s5-2 (l.wu (+ v1-54 12))) [v1: art-joint-anim ] -> [s5: res-lump ] + daddiu s4, s7, collide-offset;; [145] (set! s4-1 'collide-offset) [] -> [s4: symbol ] + daddiu s3, s7, interp ;; [146] (set! s3-2 'interp) [] -> [s3: symbol ] + lw t9, ja-frame-num(s7) ;; [147] (set! t9-2 ja-frame-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [148] (set! a0-13 0) [] -> [a0: ] + jalr ra, t9 ;; [149] (call! a0-13) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + or a3, v0, r0 ;; [150] (set! a3-2 v0-3) [v0: float ] -> [a3: float ] + or t0, s7, r0 ;; [151] (set! t0-1 #f) [] -> [t0: '#f ] + or t1, s7, r0 ;; [152] (set! t1-0 #f) [] -> [t1: '#f ] + lw t2, *res-static-buf*(s7);; [153] (set! t2-0 *res-static-buf*) [] -> [t2: pointer ] + or t9, gp, r0 ;; [154] (set! t9-3 gp-1) + ;; [gp: ] -> [t9: ] + or a0, s5, r0 ;; [155] (set! a0-14 s5-2) [s5: res-lump ] -> [a0: res-lump ] + or a1, s4, r0 ;; [156] (set! a1-5 s4-1) [s4: symbol ] -> [a1: symbol ] + or a2, s3, r0 ;; [157] (set! a2-5 s3-2) [s3: symbol ] -> [a2: symbol ] + jalr ra, t9 ;; [158] (call! a0-14 a1-5 a2-5 a3-2 t0-1 t1-0 t2-0) + ;; [a0: res-lump a1: symbol a2: symbol a3: float t0: '#f t1: '#f t2: pointer t9: ] -> [v0: vector ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [159] (set! v1-57 v0-4) [v0: vector ] -> [v1: vector ] + beq s7, v1, L416 ;; [160] (b! (not v1-57) L416 (nop!)) [v1: vector ] -> [] + sll r0, r0, 0 + +B29: + lwu a0, 108(s6) ;; [161] (set! a0-15 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + daddiu v0, a0, 588 ;; [162] (set! v0-2 (+ a0-15 588)) [a0: control-info ] -> [v0: vector ] + lq v1, 0(v1) ;; [163] (set! v1-58 (l.q v1-57)) [v1: vector ] -> [v1: uint128 ] + sq v1, 0(v0) ;; [164] (s.q! v0-2 v1-58) [v0: vector v1: uint128 ] -> [] + beq r0, r0, L417 ;; [165] (b! #t L417 (nop!)) [] -> [] + sll r0, r0, 0 + +B30: +L416: + lwu v1, 108(s6) ;; [166] (set! v1-59 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v0, v1, 588 ;; [167] (set! v0-2 (+ v1-59 588)) [v1: control-info ] -> [v0: vector ] + sq r0, 0(v0) ;; [168] (s.q! v0-2 0) [v0: vector ] -> [] +B31: +L417: + ld ra, 0(sp) + ld fp, 8(sp) + lwc1 f30, 124(sp) + lwc1 f28, 120(sp) + lwc1 f26, 116(sp) + lwc1 f24, 112(sp) + lq gp, 96(sp) + lq s5, 80(sp) + lq s4, 64(sp) + lq s3, 48(sp) + jr ra + daddiu sp, sp, 128 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(defbehavior mod-var-jump target ((arg0 symbol) (arg1 symbol) (arg2 symbol) (arg3 vector)) + (local-vars (v0-2 vector)) + (let ((f30-0 (* 0.033333335 (the float (- (-> *display* base-frame-counter) (-> self state-time)))))) + (cond + ((or (< 1.0 f30-0) (< (-> self control unknown-float123) 0.0) (not arg2)) + (set! (-> self control unknown-float123) -1.0) + ) + (else + (set! (-> self control unknown-float123) f30-0) + (set! (-> self control unknown-float124) f30-0) + (when arg0 + (let ((s3-1 (vector-! (new-stack-vector0) (-> self control trans) (-> self control unknown-vector102))) + (s4-0 (new-stack-vector0)) + ) + (let ((f0-5 (vector-dot (-> self control dynam gravity-normal) arg3))) + 0.0 + (vector-! s4-0 arg3 (vector-float*! s4-0 (-> self control dynam gravity-normal) f0-5)) + ) + (let* ((f28-0 (vector-length s4-0)) + (f26-0 f28-0) + (f0-13 + (- (sqrtf + (* 2.0 + (-> self control dynam gravity-length) + (- (lerp-scale + (the-as float (-> self control unknown-uint20)) + (the-as float (-> self control unknown-uint30)) + f30-0 + (the-as float 0.0) + (the-as float 1.0) + ) + (vector-dot (-> self control dynam gravity-normal) s3-1) + ) + ) + ) + (* 0.008333334 (- (-> self control dynam gravity-length))) + ) + ) + ) + (vector+! + arg3 + (vector-float*! arg3 (-> self control dynam gravity-normal) f0-13) + (vector-float*! s4-0 s4-0 (/ f28-0 f26-0)) + ) + ) + ) + ) + ) + ) + ) + 0 + (when (and arg1 (ja-group) (and (-> (ja-group) extra) #t)) + (let ((v1-57 (res-lump-struct (-> (ja-group) extra) 'collide-offset vector :time (ja-frame-num 0)))) + (cond + (v1-57 + (set! v0-2 (-> self control unknown-vector13)) + (set! (-> v0-2 quad) (-> v1-57 quad)) + ) + (else + (set! v0-2 (-> self control unknown-vector13)) + (set! (-> v0-2 quad) (the-as uint128 0)) + ) + ) + ) + v0-2 + ) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function init-var-jump +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x70, fp? 1 ra? 1 ep? 1 + ;stack_vars: 16 bytes at 16 + ;gprs: gp s5 s4 s3 s2 +;; Warnings: +;; Used lq/sq + +;; v0-2: vector a0-0: float a1-0: float a2-0: vector a3-0: vector t0-0: vector s4-1: vector s6-0: target +;; f0-1: float f0-16: float f0-17: float f1-11: float f2-7: float +L418: + daddiu sp, sp, -112 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s2, 32(sp) + sq s3, 48(sp) + sq s4, 64(sp) + sq s5, 80(sp) + sq gp, 96(sp) +B0: + or s5, a0, r0 ;; [ 0] (set! arg0 arg0) [a0: float ] -> [s5: float ] + or s3, a1, r0 ;; [ 1] (set! arg1 arg1) [a1: float ] -> [s3: float ] + or s4, a2, r0 ;; [ 2] (set! arg2 arg2) [a2: vector ] -> [s4: vector ] + or s2, a3, r0 ;; [ 3] (set! arg3 arg3) [a3: vector ] -> [s2: vector ] + or gp, t0, r0 ;; [ 4] (set! arg4 arg4) [t0: vector ] -> [gp: vector ] + addiu v1, r0, -16385 ;; [ 5] (set! v1-0 -16385) [] -> [v1: ] + lwu a0, 108(s6) ;; [ 6] (set! a0-1 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 268(a0) ;; [ 7] (set! a0-2 (l.d (+ a0-1 268))) [a0: control-info ] -> [a0: cshape-moving-flags ] + and v1, v1, a0 ;; [ 8] (set! v1-1 (logand v1-0 a0-2)) + ;; [v1: a0: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + lwu a0, 108(s6) ;; [ 9] (set! a0-3 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sd v1, 268(a0) ;; [ 10] (s.d! (+ a0-3 268) v1-1) [v1: cshape-moving-flags a0: control-info ] -> [] + lw t9, delete-back-vel(s7);; [ 11] (set! t9-0 delete-back-vel) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 12] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw v1, *display*(s7) ;; [ 13] (set! v1-2 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 14] (set! v1-3 (l.d (+ v1-2 780))) [v1: display ] -> [v1: time-frame ] + lwu a0, 108(s6) ;; [ 15] (set! a0-4 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 180(a0) ;; [ 16] (set! a0-5 (l.d (+ a0-4 180))) [a0: control-info ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [ 17] (set! v1-4 (- v1-3 a0-5)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + slti v1, v1, 15 ;; [ 18] (b! (>=.si v1-4 15) L420 (set! v1-5 #f)) [v1: time-frame ] -> [v1: '#f ] + beq v1, r0, L420 + or v1, s7, r0 + +B1: + mtc1 f0, r0 ;; [ 19] (set! f0-0 0) [] -> [] + lui v1, L813 ;; [ 20] (set! v1-6 L813) [] -> [v1: ] + ori v1, v1, L813 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 21] (set! f1-0 (l.f v1-6)) [v1: ] -> [] + lui v1, L752 ;; [ 22] (set! v1-7 L752) [] -> [v1: ] + ori v1, v1, L752 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [ 23] (set! f2-0 (l.f v1-7)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 24] (set! v1-8 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [ 25] (set! v1-9 (l.wu (+ v1-8 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [ 26] (set! a0-6 (+ v1-9 28)) [v1: dynamics ] -> [a0: vector ] + lwu v1, 108(s6) ;; [ 27] (set! v1-10 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 188 ;; [ 28] (set! v1-11 (+ v1-10 188)) [v1: control-info ] -> [v1: vector ] + lwc1 f3, 0(a0) ;; [ 29] (set! f3-0 (vec3dot a0-6 v1-11)) [v1: vector a0: vector ] -> [] + lwc1 f4, 4(a0) + lwc1 f5, 8(a0) + lwc1 f6, 0(v1) + lwc1 f7, 4(v1) + lwc1 f8, 8(v1) + mula.s f3, f6 + madda.s f4, f7 + madd.s f3, f5, f8 + mfc1 v1, f3 ;; [ 30] (set! v1-12 (fpr->gpr f3-0)) [] -> [v1: float ] + mtc1 f3, v1 ;; [ 31] (set! f3-1 (gpr->fpr v1-12)) [v1: float ] -> [] + mul.s f2, f2, f3 ;; [ 32] (set! f2-1 (*.s f2-0 f3-1)) [] -> [] + min.s f1, f1, f2 ;; [ 33] (set! f1-1 (min.s f1-0 f2-1)) [] -> [] + max.s f0, f0, f1 ;; [ 34] (set! f0-1 (max.s f0-0 f1-1)) [] -> [] + mtc1 f1, s5 ;; [ 35] (set! f1-2 (gpr->fpr arg0)) [s5: float ] -> [] + add.s f1, f1, f0 ;; [ 36] (set! f1-3 (+.s f1-2 f0-1)) [] -> [] + mfc1 s5, f1 ;; [ 37] (set! arg0 (fpr->gpr f1-3)) [] -> [s5: float ] + mtc1 f1, s3 ;; [ 38] (set! f1-4 (gpr->fpr arg1)) [s3: float ] -> [] + add.s f0, f1, f0 ;; [ 39] (set! f0-2 (+.s f1-4 f0-1)) [] -> [] + mfc1 s3, f0 ;; [ 40] (set! arg1 (fpr->gpr f0-2)) [] -> [s3: float ] + or v1, s3, r0 ;; [ 41] (set! v1-13 arg1) [s3: float ] -> [v1: float ] + lwu v1, 108(s6) ;; [ 42] (set! v1-14 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 660(v1) ;; [ 43] (set! v1-15 (l.wu (+ v1-14 660))) [v1: control-info ] -> [v1: surface ] + lwu v1, 144(v1) ;; [ 44] (set! v1-16 (l.wu (+ v1-15 144))) [v1: surface ] -> [v1: surface-flags ] + andi v1, v1, 16384 ;; [ 45] (set! v1-17 (logand v1-16 #x4000)) [v1: surface-flags ] -> [v1: surface-flags ] + bnel v1, r0, L419 ;; [ 46] (bl! (nonzero? v1-17) L419 (no-delay!)) [v1: surface-flags ] -> [] +B2: + daddiu v1, s7, 8 ;; [ 47] (set! v1-18 #t) [] -> [v1: symbol ] + +B3: + lwu v1, 108(s6) ;; [ 48] (set! v1-19 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 252(v1) ;; [ 49] (set! v1-20 (l.wu (+ v1-19 252))) [v1: control-info ] -> [v1: pat-surface ] + dsll32 v1, v1, 20 ;; [ 50] (set! v1-21 (sll v1-20 52)) [v1: pat-surface ] -> [v1: ( << 52) ] + dsrl32 v1, v1, 26 ;; [ 51] (set! v1-22 (srl v1-21 58)) [v1: ( << 52) ] -> [v1: pat-material ] + daddiu a0, v1, -21 ;; [ 52] (set! a0-7 (+ v1-22 -21)) + ;; [v1: pat-material ] -> [a0: ] + daddiu v1, s7, 8 ;; [ 53] (set! v1-18 (zero? a0-7)) [a0: ] -> [v1: symbol ] + movn v1, s7, a0 +B4: +L419: + beq s7, v1, L420 ;; [ 54] (b! (not v1-18) L420 (set! v1-23 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B5: + lwu v1, 108(s6) ;; [ 55] (set! v1-24 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 60(v1) ;; [ 56] (set! f0-3 (l.f (+ v1-24 60))) [v1: control-info ] -> [] + lwu v1, 108(s6) ;; [ 57] (set! v1-25 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f1, 188(v1) ;; [ 58] (set! f1-5 (l.f (+ v1-25 188))) [v1: control-info ] -> [] + add.s f0, f0, f1 ;; [ 59] (set! f0-4 (+.s f0-3 f1-5)) [] -> [] + lwu v1, 108(s6) ;; [ 60] (set! v1-26 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 60(v1) ;; [ 61] (s.f! (+ v1-26 60) f0-4) [v1: control-info ] -> [] + lwu v1, 108(s6) ;; [ 62] (set! v1-27 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 68(v1) ;; [ 63] (set! f0-5 (l.f (+ v1-27 68))) [v1: control-info ] -> [] + lwu v1, 108(s6) ;; [ 64] (set! v1-28 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f1, 196(v1) ;; [ 65] (set! f1-6 (l.f (+ v1-28 196))) [v1: control-info ] -> [] + add.s f0, f0, f1 ;; [ 66] (set! f0-6 (+.s f0-5 f1-6)) [] -> [] + lwu v1, 108(s6) ;; [ 67] (set! v1-29 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 68(v1) ;; [ 68] (s.f! (+ v1-29 68) f0-6) [v1: control-info ] -> [] + mfc1 v1, f0 ;; [ 69] (set! v1-30 (fpr->gpr f0-6)) [] -> [v1: float ] +B6: +L420: + mtc1 f0, r0 ;; [ 70] (set! f0-7 0) [] -> [] + lwu v1, 108(s6) ;; [ 71] (set! v1-31 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 2196(v1) ;; [ 72] (s.f! (+ v1-31 2196) f0-7) [v1: control-info ] -> [] + mtc1 f0, r0 ;; [ 73] (set! f0-8 0) [] -> [] + lwu v1, 108(s6) ;; [ 74] (set! v1-32 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 2200(v1) ;; [ 75] (s.f! (+ v1-32 2200) f0-8) [v1: control-info ] -> [] + beq s7, s2, L421 ;; [ 76] (b! (not arg3) L421 (nop!)) [s2: vector ] -> [] + sll r0, r0, 0 + +B7: + mtc1 f0, s5 ;; [ 77] (set! f0-9 (gpr->fpr arg0)) [s5: float ] -> [] + lui v1, L794 ;; [ 78] (set! v1-33 L794) [] -> [v1: ] + ori v1, v1, L794 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 79] (set! f1-7 (l.f v1-33)) [v1: ] -> [] + lw v1, *TARGET-bank*(s7) ;; [ 80] (set! v1-34 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f2, 0(v1) ;; [ 81] (set! f2-2 (l.f v1-34)) [v1: target-bank ] -> [] + add.s f1, f1, f2 ;; [ 82] (set! f1-8 (+.s f1-7 f2-2)) [] -> [] + sub.s f0, f0, f1 ;; [ 83] (set! f0-10 (-.s f0-9 f1-8)) [] -> [] + lwu v1, 108(s6) ;; [ 84] (set! v1-35 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 2180(v1) ;; [ 85] (s.f! (+ v1-35 2180) f0-10) [v1: control-info ] -> [] + mtc1 f0, s3 ;; [ 86] (set! f0-11 (gpr->fpr arg1)) [s3: float ] -> [] + lw v1, *TARGET-bank*(s7) ;; [ 87] (set! v1-36 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f1, 0(v1) ;; [ 88] (set! f1-9 (l.f v1-36)) [v1: target-bank ] -> [] + sub.s f0, f0, f1 ;; [ 89] (set! f0-12 (-.s f0-11 f1-9)) [] -> [] + lwu v1, 108(s6) ;; [ 90] (set! v1-37 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 2184(v1) ;; [ 91] (s.f! (+ v1-37 2184) f0-12) [v1: control-info ] -> [] + mfc1 v1, f0 ;; [ 92] (set! v1-38 (fpr->gpr f0-12)) [] -> [v1: float ] + beq r0, r0, L422 ;; [ 93] (b! #t L422 (nop!)) [] -> [] + sll r0, r0, 0 + +B8: +L421: + mtc1 f0, s5 ;; [ 94] (set! f0-13 (gpr->fpr arg0)) [s5: float ] -> [] + lwu v1, 108(s6) ;; [ 95] (set! v1-39 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 2180(v1) ;; [ 96] (s.f! (+ v1-39 2180) f0-13) [v1: control-info ] -> [] + mtc1 f0, s3 ;; [ 97] (set! f0-14 (gpr->fpr arg1)) [s3: float ] -> [] + lwu v1, 108(s6) ;; [ 98] (set! v1-40 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 2184(v1) ;; [ 99] (s.f! (+ v1-40 2184) f0-14) [v1: control-info ] -> [] + mfc1 v1, f0 ;; [100] (set! v1-41 (fpr->gpr f0-14)) [] -> [v1: float ] +B9: +L422: + beq s7, s4, L423 ;; [101] (b! (not arg2) L423 (set! v1-42 #f)) [s4: vector ] -> [v1: '#f ] + or v1, s7, r0 + +B10: + daddiu s4, sp, 16 ;; [102] (set! s4-1 (+ sp-0 16)) [sp: ] -> [s4: vector ] + sq r0, 0(s4) ;; [103] (s.q! s4-1 0) [s4: vector ] -> [] + lwu v1, 108(s6) ;; [104] (set! v1-43 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [105] (set! v1-44 (l.wu (+ v1-43 432))) [v1: control-info ] -> [v1: dynamics ] + daddiu a0, v1, 28 ;; [106] (set! a0-8 (+ v1-44 28)) [v1: dynamics ] -> [a0: vector ] + or v1, gp, r0 ;; [107] (set! v1-45 arg4) [gp: vector ] -> [v1: vector ] + lwc1 f0, 0(a0) ;; [108] (set! f0-15 (vec3dot a0-8 v1-45)) [v1: vector a0: vector ] -> [] + lwc1 f1, 4(a0) + lwc1 f2, 8(a0) + lwc1 f3, 0(v1) + lwc1 f4, 4(v1) + lwc1 f5, 8(v1) + mula.s f0, f3 + madda.s f1, f4 + madd.s f0, f2, f5 + mfc1 v1, f0 ;; [109] (set! v1-46 (fpr->gpr f0-15)) [] -> [v1: float ] + mtc1 f0, v1 ;; [110] (set! f0-16 (gpr->fpr v1-46)) [v1: float ] -> [] + mtc1 f1, r0 ;; [111] (set! f1-10 0) [] -> [] + or a1, s4, r0 ;; [112] (set! a1-1 s4-1) [s4: vector ] -> [a1: vector ] + or v1, gp, r0 ;; [113] (set! v1-47 arg4) [gp: vector ] -> [v1: vector ] + or a0, s4, r0 ;; [114] (set! a0-9 s4-1) [s4: vector ] -> [a0: vector ] + lwu a2, 108(s6) ;; [115] (set! a2-1 (l.wu (+ self 108))) [s6: target ] -> [a2: control-info ] + lwu a2, 432(a2) ;; [116] (set! a2-2 (l.wu (+ a2-1 432))) [a2: control-info ] -> [a2: dynamics ] + daddiu a2, a2, 28 ;; [117] (set! a2-3 (+ a2-2 28)) [a2: dynamics ] -> [a2: vector ] + lqc2 vf1, 0(a2) ;; [118] (set! a0-10 (vector-float*!2 a0-9 a2-3 f0-16)) + ;; [a0: vector a2: vector ] -> [a0: vector ] + mfc1 a2, f0 + qmtc2.i vf2, a2 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a0) + lqc2 vf4, 0(v1) ;; [119] (set! a1-2 (vector-!2 a1-1 v1-47 a0-10)) + ;; [v1: vector a0: vector a1: vector ] -> [a1: vector ] + lqc2 vf5, 0(a0) + vmove.w vf6, vf0 + vsub.xyz vf6, vf4, vf5 + sqc2 vf6, 0(a1) + lw t9, vector-length(s7) ;; [120] (set! t9-1 vector-length) [] -> [t9: (function vector float) ] + or a0, s4, r0 ;; [121] (set! a0-11 s4-1) [s4: vector ] -> [a0: vector ] + jalr ra, t9 ;; [122] (call! a0-11) [a0: vector t9: (function vector float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [123] (set! f0-17 (gpr->fpr v0-1)) [v0: float ] -> [] + mov.s f1, f0 ;; [124] (set! f1-11 f0-17) [] -> [] + lui v1, L748 ;; [125] (set! v1-48 L748) [] -> [v1: ] + ori v1, v1, L748 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [126] (set! f2-3 (l.f v1-48)) [v1: ] -> [] + lwu v1, 108(s6) ;; [127] (set! v1-49 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [128] (set! v1-50 (l.wu (+ v1-49 432))) [v1: control-info ] -> [v1: dynamics ] + lwc1 f3, 8(v1) ;; [129] (set! f3-2 (l.f (+ v1-50 8))) [v1: dynamics ] -> [] + mul.s f2, f2, f3 ;; [130] (set! f2-4 (*.s f2-3 f3-2)) [] -> [] + mtc1 f3, s5 ;; [131] (set! f3-3 (gpr->fpr arg0)) [s5: float ] -> [] + mul.s f2, f2, f3 ;; [132] (set! f2-5 (*.s f2-4 f3-3)) [] -> [] + sqrt.s f2, f2 ;; [133] (set! f2-6 (sqrt.s f2-5)) [] -> [] + lui v1, L770 ;; [134] (set! v1-51 L770) [] -> [v1: ] + ori v1, v1, L770 + addu v1, fp, v1 + lwc1 f3, 0(v1) ;; [135] (set! f3-4 (l.f v1-51)) [v1: ] -> [] + lwu v1, 108(s6) ;; [136] (set! v1-52 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 432(v1) ;; [137] (set! v1-53 (l.wu (+ v1-52 432))) [v1: control-info ] -> [v1: dynamics ] + lwc1 f4, 8(v1) ;; [138] (set! f4-0 (l.f (+ v1-53 8))) [v1: dynamics ] -> [] + neg.s f4, f4 ;; [139] (set! f4-1 (neg.s f4-0)) [] -> [] + mul.s f3, f3, f4 ;; [140] (set! f3-5 (*.s f3-4 f4-1)) [] -> [] + sub.s f2, f2, f3 ;; [141] (set! f2-7 (-.s f2-6 f3-5)) [] -> [] + or v1, gp, r0 ;; [142] (set! v1-54 arg4) [gp: vector ] -> [v1: vector ] + lwu a0, 108(s6) ;; [143] (set! a0-12 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 432(a0) ;; [144] (set! a0-13 (l.wu (+ a0-12 432))) [a0: control-info ] -> [a0: dynamics ] + daddiu a0, a0, 28 ;; [145] (set! a0-14 (+ a0-13 28)) [a0: dynamics ] -> [a0: vector ] + lqc2 vf1, 0(a0) ;; [146] (set! gp-1 (vector-float*!2 arg4 a0-14 f2-7)) + ;; [a0: vector gp: vector ] -> [gp: vector ] + mfc1 a0, f2 + qmtc2.i vf2, a0 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(gp) + or a0, s4, r0 ;; [147] (set! a0-15 s4-1) [s4: vector ] -> [a0: vector ] + div.s f0, f0, f1 ;; [148] (set! f0-18 (/.s f0-17 f1-11)) [] -> [] + lqc2 vf1, 0(s4) ;; [149] (set! a0-16 (vector-float*!2 a0-15 s4-1 f0-18)) + ;; [a0: vector s4: vector ] -> [a0: vector ] + mfc1 a1, f0 + qmtc2.i vf2, a1 + vaddx.w vf1, vf0, vf0 + vmulx.xyz vf1, vf1, vf2 + sqc2 vf1, 0(a0) + vmove.w vf6, vf0 ;; [150] (set! v1-55 (vector+!2 v1-54 gp-1 a0-16)) + ;; [v1: vector a0: vector gp: vector ] -> [v1: vector ] + lqc2 vf4, 0(gp) + lqc2 vf5, 0(a0) + vadd.xyz vf6, vf4, vf5 + sqc2 vf6, 0(v1) +B11: +L423: + lwu v1, 108(s6) ;; [151] (set! v1-56 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v0, v1, 2220 ;; [152] (set! v0-2 (+ v1-56 2220)) [v1: control-info ] -> [v0: vector ] + lwu v1, 108(s6) ;; [153] (set! v1-57 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 12 ;; [154] (set! v1-58 (+ v1-57 12)) [v1: control-info ] -> [v1: vector ] + lq v1, 0(v1) ;; [155] (set! v1-59 (l.q v1-58)) [v1: vector ] -> [v1: uint128 ] + sq v1, 0(v0) ;; [156] (s.q! v0-2 v1-59) [v0: vector v1: uint128 ] -> [] + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 96(sp) + lq s5, 80(sp) + lq s4, 64(sp) + lq s3, 48(sp) + lq s2, 32(sp) + jr ra + daddiu sp, sp, 112 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(defbehavior init-var-jump target ((arg0 float) (arg1 float) (arg2 vector) (arg3 vector) (arg4 vector)) + (logclear! (-> self control status) (cshape-moving-flags csmf14)) + (delete-back-vel) + (when (< (- (-> *display* base-frame-counter) (-> self control rider-time)) (seconds 0.05)) + (let ((f0-1 + (fmax + 0.0 + (fmin 28672.0 (* 0.5 (vector-dot (-> self control dynam gravity-normal) (-> self control rider-last-move)))) + ) + ) + ) + (set! arg0 (+ arg0 f0-1)) + (set! arg1 (+ arg1 f0-1)) + ) + (when (or (logtest? (-> self control unknown-surface01 flags) (surface-flags moving-ground)) + (= (-> self control poly-pat material) (pat-material rotate)) + ) + (+! (-> self control transv x) (-> self control rider-last-move x)) + (+! (-> self control transv z) (-> self control rider-last-move z)) + ) + ) + (set! (-> self control unknown-float123) 0.0) + (set! (-> self control unknown-float124) 0.0) + (cond + (arg3 + (set! (-> self control unknown-uint20) + (the-as uint (- arg0 (+ -409.6 (-> *TARGET-bank* jump-collide-offset)))) + ) + (set! (-> self control unknown-int21) (the-as int (- arg1 (-> *TARGET-bank* jump-collide-offset)))) + ) + (else + (set! (-> self control unknown-uint20) (the-as uint arg0)) + (set! (-> self control unknown-int21) (the-as int arg1)) + ) + ) + (when arg2 + (let ((s4-1 (new-stack-vector0))) + (let ((f0-16 (vector-dot (-> self control dynam gravity-normal) arg4))) + 0.0 + (vector-! s4-1 arg4 (vector-float*! s4-1 (-> self control dynam gravity-normal) f0-16)) + ) + (let* ((f0-17 (vector-length s4-1)) + (f1-11 f0-17) + (f2-7 + (- (sqrtf (* 2.0 (-> self control dynam gravity-length) arg0)) + (* 0.008333334 (- (-> self control dynam gravity-length))) + ) + ) + ) + (vector+! + arg4 + (vector-float*! arg4 (-> self control dynam gravity-normal) f2-7) + (vector-float*! s4-1 s4-1 (/ f0-17 f1-11)) + ) + ) + ) + ) + (let ((v0-2 (-> self control unknown-vector102))) + (set! (-> v0-2 quad) (-> self control trans quad)) + v0-2 + ) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-slide-down) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 1 ra? 1 ep? 1 +;; s6-0: target +L424: + daddiu sp, sp, -16 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 +B0: + lwu v1, 120(s6) ;; [ 0] (set! v1-0 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 1] (set! v1-1 (l.w (+ v1-0 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 2] (b! (<=0.si v1-1) L425 (set! v1-2 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L425 + or v1, s7, r0 + +B1: + lwu v1, 120(s6) ;; [ 3] (set! v1-3 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 4] (set! v1-4 (l.wu (+ v1-3 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 5] (set! v1-2 (l.wu (+ v1-4 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B2: +L425: + lwu a0, 116(s6) ;; [ 6] (set! a0-0 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 7] (set! a0-1 (l.wu (+ a0-0 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 152(a0) ;; [ 8] (set! a0-2 (l.wu (+ a0-1 152))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 9] (set! a0-3 (= v1-2 a0-2)) [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + bne s7, a0, L426 ;; [ 10] (b! (truthy a0-3) L426 (set! v1-5 #f)) [a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B3: + lw t9, ja-channel-push!(s7);; [ 11] (set! t9-0 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [ 12] (set! a0-4 1) [] -> [a0: ] + addiu a1, r0, 30 ;; [ 13] (set! a1-0 30) [] -> [a1: ] + jalr ra, t9 ;; [ 14] (call! a0-4 a1-0) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 15] (set! v1-6 v0-0) [v0: int ] -> [v1: int ] +B4: +L426: + lwu v1, 120(s6) ;; [ 16] (set! v1-7 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 17] (set! v1-8 (l.wu (+ v1-7 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 18] (set! a0-5 (+ v1-8 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 19] (set! v1-9 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 20] (set! v1-10 (l.wu (+ v1-9 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 152(v1) ;; [ 21] (set! v1-11 (l.wu (+ v1-10 152))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [ 22] (s.w! (+ a0-5 12) v1-11) [v1: art-element a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [ 23] (set! v1-12 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 24] (set! v1-13 (l.wu (+ v1-12 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 152(v1) ;; [ 25] (set! v1-14 (l.wu (+ v1-13 152))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 26] (set! (the-as art-joint-anim v1-15) (l.wu (+ v1-14 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 27] (set! v1-16 (l.h (+ v1-15 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 28] (set! v1-17 (+ v1-16 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 29] (set! f0-0 (gpr->fpr v1-17)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 30] (set! f0-1 (i2f f0-0)) [] -> [] + swc1 f0, 24(a0) ;; [ 31] (s.f! (+ a0-5 24) f0-1) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [ 32] (set! v1-18 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 33] (set! f0-2 (l.f v1-18)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [ 34] (s.f! (+ a0-5 28) f0-2) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [ 35] (set! f0-3 0) [] -> [] + swc1 f0, 16(a0) ;; [ 36] (s.f! (+ a0-5 16) f0-3) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [ 37] (set! t9-1 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [ 38] (set! v1-19 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 39] (set! v1-20 (l.wu (+ v1-19 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 152(v1) ;; [ 40] (set! a1-1 (l.wu (+ v1-20 152))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [ 41] (set! a2-0 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 42] (call! a0-5 a1-1 a2-0) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 43] (set! v1-21 v0-1) [v0: int ] -> [v1: int ] +B5: +L427: + lwu s6, 44(s6) ;; [ 44] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [ 45] (set! v1-22 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 46] (set! v1-23 (l.wu (+ v1-22 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 47] (set! a0-6 (+ v1-23 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [ 48] (set! v1-24 (l.wu (+ a0-6 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 49] (set! v1-25 (l.wu (+ v1-24 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 50] (set! v1-26 (l.h (+ v1-25 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 51] (set! v1-27 (+ v1-26 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 52] (set! f0-4 (gpr->fpr v1-27)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 53] (set! f0-5 (i2f f0-4)) [] -> [] + swc1 f0, 24(a0) ;; [ 54] (s.f! (+ a0-6 24) f0-5) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [ 55] (set! v1-28 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 56] (set! f0-6 (l.f v1-28)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [ 57] (s.f! (+ a0-6 28) f0-6) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 58] (set! t9-2 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [ 59] (set! a1-2 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [ 60] (set! a2-1 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 61] (call! a0-6 a1-2 a2-1) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 62] (set! v1-29 v0-2) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [ 63] (set! t9-3 ja-done?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 64] (set! a0-7 0) [] -> [a0: ] + jalr ra, t9 ;; [ 65] (call! a0-7) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L427 ;; [ 66] (b! (not v0-3) L427 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B6: + or v1, s7, r0 ;; [ 67] (set! v1-30 #f) [] -> [v1: '#f ] + beq r0, r0, L426 ;; [ 68] (b! #t L426 (nop!)) [] -> [] + sll r0, r0, 0 + +B7: + or v0, s7, r0 ;; [ 69] (set! v0-4 #f) [] -> [v0: ] + ld ra, 0(sp) + ld fp, 8(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-slide-down) + () + (if (not (ja-group? (-> self draw art-group data 31))) + (ja-channel-push! 1 (seconds 0.1)) + ) + (loop + (ja-no-eval :group! (-> self draw art-group data 31) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (trans target-slide-down) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; Warnings: +;; INFO: Return type mismatch object vs none. + +;; s6-0: target +L428: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lwu v1, 108(s6) ;; [ 0] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld v1, 268(v1) ;; [ 1] (set! v1-1 (l.d (+ v1-0 268))) [v1: control-info ] -> [v1: cshape-moving-flags ] + andi v1, v1, 1 ;; [ 2] (set! v1-2 (logand v1-1 1)) + ;; [v1: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + bnel v1, r0, L429 ;; [ 3] (bl! (nonzero? v1-2) L429 (no-delay!)) [v1: cshape-moving-flags ] -> [] +B1: + daddiu v1, s7, 8 ;; [ 4] (set! v1-3 #t) [] -> [v1: symbol ] + +B2: + lw t9, target-move-dist(s7);; [ 5] (set! t9-0 target-move-dist) + ;; [] -> [t9: (function time-frame float :behavior target) ] + lw v1, *TARGET-bank*(s7) ;; [ 6] (set! v1-4 *TARGET-bank*) [] -> [v1: target-bank ] + ld a0, 556(v1) ;; [ 7] (set! a0-0 (l.d (+ v1-4 556))) [v1: target-bank ] -> [a0: seconds ] + jalr ra, t9 ;; [ 8] (call! a0-0) + ;; [a0: seconds t9: (function time-frame float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 9] (set! f0-0 (gpr->fpr v0-0)) [v0: float ] -> [] + lw v1, *TARGET-bank*(s7) ;; [ 10] (set! v1-5 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f1, 572(v1) ;; [ 11] (set! f1-0 (l.f (+ v1-5 572))) [v1: target-bank ] -> [] + c.lt.s f0, f1 ;; [ 12] (b! (>=.s f0-0 f1-0) L429 (set! v1-3 #f)) [] -> [v1: '#f ] + bc1f L429 + or v1, s7, r0 + +B3: + daddiu v1, s7, #t ;; [ 13] (set! v1-3 #t) [] -> [v1: symbol ] +B4: +L429: + beq s7, v1, L430 ;; [ 14] (b! (not v1-3) L430 (set! v0-1 #f)) [v1: symbol ] -> [v0: '#f ] + or v0, s7, r0 + +B5: + lwu v1, 108(s6) ;; [ 15] (set! v1-6 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld v1, 268(v1) ;; [ 16] (set! v1-7 (l.d (+ v1-6 268))) [v1: control-info ] -> [v1: cshape-moving-flags ] + ori v1, v1, 1 ;; [ 17] (set! v1-8 (logior v1-7 1)) + ;; [v1: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + lwu a0, 108(s6) ;; [ 18] (set! a0-1 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sd v1, 268(a0) ;; [ 19] (s.d! (+ a0-1 268) v1-8) [v1: cshape-moving-flags a0: control-info ] -> [] + lw t9, enter-state(s7) ;; [ 20] (set! t9-1 enter-state) [] -> [t9: ] + lw v1, target-duck-stance(s7);; [ 21] (set! v1-9 target-duck-stance) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 22] (s.w! (+ self 72) v1-9) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 23] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + +B6: +L430: + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (trans target-slide-down) + () + (when (or (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (if (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) + #t + ) + ) + (logior! (-> self control status) (cshape-moving-flags onsurf)) + (go target-duck-stance) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (exit target-slide-down) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x00, fp? 0 ra? 0 ep? 1 +;; Warnings: +;; INFO: Return type mismatch time-frame vs none. + +;; s6-0: target +B0: +L431: + lw v1, *display*(s7) ;; [ 0] (set! v1-0 *display*) [] -> [v1: display ] + ld v0, 780(v1) ;; [ 1] (set! v0-0 (l.d (+ v1-0 780))) [v1: display ] -> [v0: time-frame ] + lwu v1, 108(s6) ;; [ 2] (set! v1-1 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sd v0, 1700(v1) ;; [ 3] (s.d! (+ v1-1 1700) v0-0) [v0: time-frame v1: control-info ] -> [] + jr ra + daddu sp, sp, r0 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (exit target-slide-down) + () + (set! (-> self control unknown-dword35) (-> *display* base-frame-counter)) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-slide-down) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x00, fp? 0 ra? 0 ep? 1 +;; Warnings: +;; INFO: Return type mismatch surface vs none. + +;; s6-0: target +B0: +L432: + lw v0, *jump-mods*(s7) ;; [ 0] (set! v0-0 *jump-mods*) [] -> [v0: surface ] + lwu v1, 108(s6) ;; [ 1] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw v0, 656(v1) ;; [ 2] (s.w! (+ v1-0 656) v0-0) [v0: surface v1: control-info ] -> [] + jr ra + daddu sp, sp, r0 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler (enter target-slide-down) () (set! (-> self control unknown-surface00) *jump-mods*) (none)) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-turn-around) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x20, fp? 1 ra? 1 ep? 1 + ;gprs: gp +;; Warnings: +;; INFO: Return type mismatch object vs none. + +;; s6-0: target +L433: + daddiu sp, sp, -32 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq gp, 16(sp) +B0: + lw t9, ja-channel-push!(s7);; [ 0] (set! t9-0 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [ 1] (set! a0-0 1) [] -> [a0: ] + addiu a1, r0, 12 ;; [ 2] (set! a1-0 12) [] -> [a1: ] + jalr ra, t9 ;; [ 3] (call! a0-0 a1-0) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [ 4] (set! v1-0 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 5] (set! v1-1 (l.wu (+ v1-0 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu gp, r0, v1 ;; [ 6] (set! gp-0 (+ v1-1 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lw t9, joint-control-channel-group-eval!(s7);; [ 7] (set! t9-1 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a0, gp, r0 ;; [ 8] (set! a0-1 gp-0) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 9] (set! v1-2 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 10] (set! v1-3 (l.wu (+ v1-2 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 160(v1) ;; [ 11] (set! a1-1 (l.wu (+ v1-3 160))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-identity(s7);; [ 12] (set! a2-0 num-func-identity) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 13] (call! a0-1 a1-1 a2-0) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + mtc1 f0, r0 ;; [ 14] (set! f0-0 0) [] -> [] + swc1 f0, 16(gp) ;; [ 15] (s.f! (+ gp-0 16) f0-0) [gp: joint-control-channel ] -> [] + mfc1 v1, f0 ;; [ 16] (set! v1-4 (fpr->gpr f0-0)) [] -> [v1: float ] + lw t9, quaternion-rotate-y!(s7);; [ 17] (set! t9-2 quaternion-rotate-y!) + ;; [] -> [t9: (function quaternion quaternion float quaternion) ] + lwu v1, 108(s6) ;; [ 18] (set! v1-5 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a0, v1, 108 ;; [ 19] (set! a0-2 (+ v1-5 108)) [v1: control-info ] -> [a0: quaternion ] + lwu v1, 108(s6) ;; [ 20] (set! v1-6 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a1, v1, 108 ;; [ 21] (set! a1-2 (+ v1-6 108)) [v1: control-info ] -> [a1: quaternion ] + lui v1, L733 ;; [ 22] (set! v1-7 L733) [] -> [v1: ] + ori v1, v1, L733 + addu v1, fp, v1 + lw a2, 0(v1) ;; [ 23] (set! a2-1 (l.w v1-7)) [v1: ] -> [a2: int ] + jalr ra, t9 ;; [ 24] (call! a0-2 a1-2 a2-1) + ;; [a0: quaternion a1: quaternion a2: int t9: (function quaternion quaternion float quaternion) ] -> [v0: quaternion ] + sll v0, ra, 0 + + lwu a0, 128(s6) ;; [ 25] (set! a0-3 (l.wu (+ self 128))) [s6: target ] -> [a0: align-control ] + lwu v1, -4(a0) ;; [ 26] (set! v1-8 (l.wu (+ a0-3 -4))) + ;; [a0: align-control ] -> [v1: ] + lwu t9, 52(v1) ;; [ 27] (set! t9-3 (l.wu (+ v1-8 52))) + ;; [v1: ] -> [t9: ] + jalr ra, t9 ;; [ 28] (call! a0-3) + ;; [a0: align-control t9: ] -> [v0: transformq ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 29] (set! v1-9 v0-3) [v0: transformq ] -> [v1: transformq ] +B1: +L434: + lwu s6, 44(s6) ;; [ 30] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [ 31] (set! v1-10 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 32] (set! v1-11 (l.wu (+ v1-10 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 33] (set! a0-4 (+ v1-11 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [ 34] (set! v1-12 (l.wu (+ a0-4 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 35] (set! v1-13 (l.wu (+ v1-12 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 36] (set! v1-14 (l.h (+ v1-13 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 37] (set! v1-15 (+ v1-14 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 38] (set! f0-1 (gpr->fpr v1-15)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 39] (set! f0-2 (i2f f0-1)) [] -> [] + swc1 f0, 24(a0) ;; [ 40] (s.f! (+ a0-4 24) f0-2) [a0: joint-control-channel ] -> [] + lui v1, L748 ;; [ 41] (set! v1-16 L748) [] -> [v1: ] + ori v1, v1, L748 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 42] (set! f0-3 (l.f v1-16)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [ 43] (s.f! (+ a0-4 28) f0-3) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 44] (set! t9-4 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [ 45] (set! a1-3 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [ 46] (set! a2-2 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 47] (call! a0-4 a1-3 a2-2) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 48] (set! v1-17 v0-4) [v0: int ] -> [v1: int ] + lwu a0, 128(s6) ;; [ 49] (set! a0-5 (l.wu (+ self 128))) [s6: target ] -> [a0: align-control ] + lwu v1, -4(a0) ;; [ 50] (set! v1-18 (l.wu (+ a0-5 -4))) + ;; [a0: align-control ] -> [v1: ] + lwu t9, 52(v1) ;; [ 51] (set! t9-5 (l.wu (+ v1-18 52))) + ;; [v1: ] -> [t9: ] + jalr ra, t9 ;; [ 52] (call! a0-5) + ;; [a0: align-control t9: ] -> [v0: transformq ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 53] (set! v1-19 v0-5) [v0: transformq ] -> [v1: transformq ] + lwu a0, 128(s6) ;; [ 54] (set! a0-6 (l.wu (+ self 128))) [s6: target ] -> [a0: align-control ] + lwu v1, -4(a0) ;; [ 55] (set! v1-20 (l.wu (+ a0-6 -4))) + ;; [a0: align-control ] -> [v1: ] + lwu t9, 56(v1) ;; [ 56] (set! t9-6 (l.wu (+ v1-20 56))) + ;; [v1: ] -> [t9: ] + addiu a1, r0, 16 ;; [ 57] (set! a1-4 16) [] -> [a1: ] + lui v1, L786 ;; [ 58] (set! v1-21 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw a2, 0(v1) ;; [ 59] (set! a2-3 (l.w v1-21)) [v1: ] -> [a2: int ] + lui v1, L786 ;; [ 60] (set! v1-22 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw a3, 0(v1) ;; [ 61] (set! a3-0 (l.w v1-22)) [v1: ] -> [a3: int ] + lui v1, L786 ;; [ 62] (set! v1-23 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw t0, 0(v1) ;; [ 63] (set! t0-0 (l.w v1-23)) [v1: ] -> [t0: int ] + jalr ra, t9 ;; [ 64] (call! a0-6 a1-4 a2-3 a3-0 t0-0) + ;; [a0: align-control a1: a2: int a3: int t0: int t9: ] -> [v0: trsqv ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 65] (set! v1-24 v0-6) [v0: trsqv ] -> [v1: trsqv ] + lw t9, ja-done?(s7) ;; [ 66] (set! t9-7 ja-done?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 67] (set! a0-7 0) [] -> [a0: ] + jalr ra, t9 ;; [ 68] (call! a0-7) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L434 ;; [ 69] (b! (not v0-7) L434 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B2: + or v1, s7, r0 ;; [ 70] (set! v1-25 #f) [] -> [v1: '#f ] + lw t9, remove-exit(s7) ;; [ 71] (set! t9-8 remove-exit) [] -> [t9: (function stack-frame :behavior process) ] + jalr ra, t9 ;; [ 72] (call!) [t9: (function stack-frame :behavior process) ] -> [v0: stack-frame ] + sll v0, ra, 0 + + mtc1 f0, r0 ;; [ 73] (set! f0-4 0) [] -> [] + lwu v1, 108(s6) ;; [ 74] (set! v1-26 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 1724(v1) ;; [ 75] (s.f! (+ v1-26 1724) f0-4) [v1: control-info ] -> [] + lw t9, set-forward-vel(s7);; [ 76] (set! t9-9 set-forward-vel) [] -> [t9: (function float vector :behavior target) ] + lui v1, L732 ;; [ 77] (set! v1-27 L732) [] -> [v1: ] + ori v1, v1, L732 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 78] (set! a0-8 (l.w v1-27)) [v1: ] -> [a0: int ] + jalr ra, t9 ;; [ 79] (call! a0-8) + ;; [a0: int t9: (function float vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + lui v1, L732 ;; [ 80] (set! v1-28 L732) [] -> [v1: ] + ori v1, v1, L732 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 81] (set! f0-5 (l.f v1-28)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 82] (set! v1-29 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 528(v1) ;; [ 83] (s.f! (+ v1-29 528) f0-5) [v1: control-info ] -> [] + lw t9, target-state-hook-exit(s7);; [ 84] (set! t9-10 target-state-hook-exit) + ;; [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 85] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, enter-state(s7) ;; [ 86] (set! t9-11 enter-state) [] -> [t9: ] + lw v1, target-walk(s7) ;; [ 87] (set! v1-30 target-walk) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 88] (s.w! (+ self 72) v1-30) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 89] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 16(sp) + jr ra + daddiu sp, sp, 32 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-turn-around) + () + (ja-channel-push! 1 (seconds 0.04)) + (ja :group! (-> self draw art-group data 33) :num! min) + (quaternion-rotate-y! (-> self control dir-targ) (-> self control dir-targ) (the-as float 32768.0)) + (compute-alignment! (-> self align)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 2.0)) + (compute-alignment! (-> self align)) + (align! (-> self align) (align-opts adjust-quat) (the-as float 1.0) (the-as float 1.0) (the-as float 1.0)) + ) + (remove-exit) + (set! (-> self control unknown-float81) 0.0) + (set-forward-vel (the-as float 40960.0)) + (set! (-> self control unknown-float01) 40960.0) + (target-state-hook-exit) + (go target-walk) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (trans target-turn-around) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; s6-0: target +L435: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lwu t9, 196(s6) ;; [ 0] (set! t9-0 (l.wu (+ self 196))) + ;; [s6: target ] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 1] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lwu v1, 108(s6) ;; [ 2] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 3] (set! v1-1 (l.wu (+ v1-0 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 4] (set! v1-2 (l.w (+ v1-1 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 5] (set! v1-3 (sll v1-2 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 6] (set! a0-0 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 7] (set! v1-4 (+ v1-3 a0-0)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 8] (set! v1-5 (l.wu (+ v1-4 4))) [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 9] (set! v1-6 (l.wu (+ v1-5 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 10] (set! a0-1 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 11] (set! a0-2 (l.wu (+ a0-1 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 12] (set! a0-3 (l.w (+ a0-2 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 13] (set! a0-4 (sll a0-3 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 14] (set! a1-0 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 15] (set! a0-5 (+ a0-4 a1-0)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 16] (set! a0-6 (l.wu (+ a0-5 4))) [a0: ] -> [a0: cpad-info ] + lwu a0, 60(a0) ;; [ 17] (set! a0-7 (l.wu (+ a0-6 60))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 18] (set! v1-7 (logior v1-6 a0-7)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 19] (set! a0-8 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 20] (set! a0-9 (l.wu (+ a0-8 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 21] (set! a0-10 (l.w (+ a0-9 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 22] (set! a0-11 (sll a0-10 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 23] (set! a1-1 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 24] (set! a0-12 (+ a0-11 a1-1)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 25] (set! a0-13 (l.wu (+ a0-12 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 64(a0) ;; [ 26] (set! a0-14 (l.wu (+ a0-13 64))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 27] (set! v1-8 (logior v1-7 a0-14)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + andi v1, v1, 16384 ;; [ 28] (set! v1-9 (logand v1-8 #x4000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L436 ;; [ 29] (bl! (zero? v1-9) L436 (no-delay!)) [v1: pad-buttons ] -> [] +B1: + or v1, s7, r0 ;; [ 30] (set! v1-10 #f) [] -> [v1: '#f ] + +B2: + lw t9, can-jump?(s7) ;; [ 31] (set! t9-1 can-jump?) [] -> [t9: (function symbol symbol :behavior target) ] + or a0, s7, r0 ;; [ 32] (set! a0-15 #f) [] -> [a0: '#f ] + jalr ra, t9 ;; [ 33] (call! a0-15) + ;; [a0: '#f t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 34] (set! v1-10 v0-1) [v0: symbol ] -> [v1: symbol ] +B3: +L436: + beq s7, v1, L437 ;; [ 35] (b! (not v1-10) L437 (set! v1-11 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B4: + lw t9, enter-state(s7) ;; [ 36] (set! t9-2 enter-state) [] -> [t9: ] + lw v1, *TARGET-bank*(s7) ;; [ 37] (set! v1-12 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 4(v1) ;; [ 38] (set! f0-0 (l.f (+ v1-12 4))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [ 39] (set! a0-16 (fpr->gpr f0-0)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [ 40] (set! v1-13 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 8(v1) ;; [ 41] (set! f0-1 (l.f (+ v1-13 8))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [ 42] (set! a1-2 (fpr->gpr f0-1)) [] -> [a1: meters ] + or a2, s7, r0 ;; [ 43] (set! a2-0 #f) [] -> [a2: '#f ] + lw v1, target-jump(s7) ;; [ 44] (set! v1-14 target-jump) [] -> [v1: (state float float surface target) ] + sw v1, 72(s6) ;; [ 45] (s.w! (+ self 72) v1-14) + ;; [v1: (state float float surface target) s6: target ] -> [] + jalr ra, t9 ;; [ 46] (call! a0-16 a1-2 a2-0) + ;; [a0: meters a1: meters a2: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 47] (set! v1-15 v0-2) [v0: object ] -> [v1: object ] +B5: +L437: + lwu v1, 108(s6) ;; [ 48] (set! v1-16 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 49] (set! v1-17 (l.wu (+ v1-16 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 50] (set! v1-18 (l.w (+ v1-17 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 51] (set! v1-19 (sll v1-18 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 52] (set! a0-17 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 53] (set! v1-20 (+ v1-19 a0-17)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 54] (set! v1-21 (l.wu (+ v1-20 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 55] (set! v1-22 (l.wu (+ v1-21 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 8192 ;; [ 56] (set! v1-23 (logand v1-22 8192)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L438 ;; [ 57] (bl! (zero? v1-23) L438 (no-delay!)) [v1: pad-buttons ] -> [] +B6: + or v1, s7, r0 ;; [ 58] (set! v1-24 #f) [] -> [v1: '#f ] + +B7: + lw t9, can-feet?(s7) ;; [ 59] (set! t9-3 can-feet?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [ 60] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 61] (set! v1-24 v0-3) [v0: symbol ] -> [v1: symbol ] +B8: +L438: + beq s7, v1, L439 ;; [ 62] (b! (not v1-24) L439 (set! v1-25 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B9: + lw t9, enter-state(s7) ;; [ 63] (set! t9-4 enter-state) [] -> [t9: ] + lw v1, target-attack(s7) ;; [ 64] (set! v1-26 target-attack) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 65] (s.w! (+ self 72) v1-26) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 66] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 67] (set! v1-27 v0-4) [v0: object ] -> [v1: object ] +B10: +L439: + lw t9, can-hands?(s7) ;; [ 68] (set! t9-5 can-hands?) [] -> [t9: (function symbol symbol :behavior target) ] + daddiu a0, s7, #t ;; [ 69] (set! a0-18 #t) [] -> [a0: symbol ] + jalr ra, t9 ;; [ 70] (call! a0-18) + ;; [a0: symbol t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L440 ;; [ 71] (b! (not v0-5) L440 (set! v1-28 #f)) [v0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B11: + lw t9, enter-state(s7) ;; [ 72] (set! t9-6 enter-state) [] -> [t9: ] + lw v1, target-running-attack(s7);; [ 73] (set! v1-29 target-running-attack) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 74] (s.w! (+ self 72) v1-29) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 75] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 76] (set! v1-30 v0-6) [v0: object ] -> [v1: object ] +B12: +L440: + lwu v1, 108(s6) ;; [ 77] (set! v1-31 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld v1, 268(v1) ;; [ 78] (set! v1-32 (l.d (+ v1-31 268))) [v1: control-info ] -> [v1: cshape-moving-flags ] + andi v1, v1, 1 ;; [ 79] (set! v1-33 (logand v1-32 1)) + ;; [v1: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + bnel v1, r0, L441 ;; [ 80] (bl! (nonzero? v1-33) L441 (no-delay!)) [v1: cshape-moving-flags ] -> [] +B13: + or v1, s7, r0 ;; [ 81] (set! v1-34 #f) [] -> [v1: '#f ] + +B14: + lw v1, *display*(s7) ;; [ 82] (set! v1-35 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 83] (set! v1-36 (l.d (+ v1-35 780))) [v1: display ] -> [v1: time-frame ] + lwu a0, 108(s6) ;; [ 84] (set! a0-19 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 1284(a0) ;; [ 85] (set! a0-20 (l.d (+ a0-19 1284))) [a0: control-info ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [ 86] (set! v1-37 (- v1-36 a0-20)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + slti a0, v1, 24 ;; [ 87] (set! v1-34 (>=.si v1-37 24)) [v1: time-frame ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 +B15: +L441: + beq s7, v1, L442 ;; [ 88] (b! (not v1-34) L442 (set! v1-38 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B16: + lw t9, enter-state(s7) ;; [ 89] (set! t9-7 enter-state) [] -> [t9: ] + or a0, s7, r0 ;; [ 90] (set! a0-21 #f) [] -> [a0: '#f ] + lw v1, target-falling(s7) ;; [ 91] (set! v1-39 target-falling) [] -> [v1: (state symbol target) ] + sw v1, 72(s6) ;; [ 92] (s.w! (+ self 72) v1-39) [v1: (state symbol target) s6: target ] -> [] + jalr ra, t9 ;; [ 93] (call! a0-21) [a0: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 94] (set! v1-40 v0-7) [v0: object ] -> [v1: object ] +B17: +L442: + lw t9, slide-down-test(s7);; [ 95] (set! t9-8 slide-down-test) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 96] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (trans target-turn-around) + () + ((-> self state-hook)) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) + ) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) + (go target-attack) + ) + (if (can-hands? #t) + (go target-running-attack) + ) + (if (and (zero? (logand (-> self control status) (cshape-moving-flags onsurf))) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (seconds 0.08)) + ) + (go target-falling #f) + ) + (slide-down-test) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (exit target-turn-around) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 1 ra? 1 ep? 1 +;; Warnings: +;; INFO: Return type mismatch float vs none. + +;; s6-0: target +L443: + daddiu sp, sp, -16 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 +B0: + lw t9, target-state-hook-exit(s7);; [ 0] (set! t9-0 target-state-hook-exit) + ;; [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 1] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, set-forward-vel(s7);; [ 2] (set! t9-1 set-forward-vel) [] -> [t9: (function float vector :behavior target) ] + lui v1, L814 ;; [ 3] (set! v1-0 L814) [] -> [v1: ] + ori v1, v1, L814 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 4] (set! a0-0 (l.w v1-0)) [v1: ] -> [a0: int ] + jalr ra, t9 ;; [ 5] (call! a0-0) + ;; [a0: int t9: (function float vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + mtc1 f0, r0 ;; [ 6] (set! f0-0 0) [] -> [] + lwu v1, 108(s6) ;; [ 7] (set! v1-1 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 528(v1) ;; [ 8] (s.f! (+ v1-1 528) f0-0) [v1: control-info ] -> [] + lwu a0, 108(s6) ;; [ 9] (set! a0-1 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu v1, -4(a0) ;; [ 10] (set! v1-2 (l.wu (+ a0-1 -4))) + ;; [a0: control-info ] -> [v1: ] + lwu t9, 88(v1) ;; [ 11] (set! t9-2 (l.wu (+ v1-2 88))) + ;; [v1: ] -> [t9: ] + lwu v1, 108(s6) ;; [ 12] (set! v1-3 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a1, v1, 108 ;; [ 13] (set! a1-0 (+ v1-3 108)) [v1: control-info ] -> [a1: quaternion ] + jalr ra, t9 ;; [ 14] (call! a0-1 a1-0) + ;; [a0: control-info a1: quaternion t9: ] -> [v0: quaternion ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 15] (set! v1-4 v0-2) [v0: quaternion ] -> [v1: quaternion ] + mtc1 f0, r0 ;; [ 16] (set! f0-1 0) [] -> [] + lwu v1, 108(s6) ;; [ 17] (set! v1-5 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 1724(v1) ;; [ 18] (s.f! (+ v1-5 1724) f0-1) [v1: control-info ] -> [] + mfc1 v0, f0 ;; [ 19] (set! v0-3 (fpr->gpr f0-1)) [] -> [v0: float ] + ld ra, 0(sp) + ld fp, 8(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (exit target-turn-around) + () + (target-state-hook-exit) + (set-forward-vel (the-as float 0.0)) + (set! (-> self control unknown-float01) 0.0) + (set-quaternion! (-> self control) (-> self control dir-targ)) + (set! (-> self control unknown-float81) 0.0) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-turn-around) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 1 ra? 1 ep? 1 +;; Warnings: +;; INFO: Return type mismatch float vs none. + +;; s6-0: target +L444: + daddiu sp, sp, -16 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 +B0: + lw t9, vector-turn-to(s7) ;; [ 0] (set! t9-0 vector-turn-to) [] -> [t9: (function vector vector :behavior target) ] + lwu v1, 108(s6) ;; [ 1] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu a0, v1, 60 ;; [ 2] (set! a0-0 (+ v1-0 60)) [v1: control-info ] -> [a0: vector ] + jalr ra, t9 ;; [ 3] (call! a0-0) + ;; [a0: vector t9: (function vector vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + lw v1, *turn-around-mods*(s7);; [ 4] (set! v1-1 *turn-around-mods*) [] -> [v1: surface ] + lwu a0, 108(s6) ;; [ 5] (set! a0-1 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sw v1, 656(a0) ;; [ 6] (s.w! (+ a0-1 656) v1-1) [v1: surface a0: control-info ] -> [] + lui v1, L786 ;; [ 7] (set! v1-2 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 8] (set! f0-0 (l.f v1-2)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 9] (set! v1-3 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 1724(v1) ;; [ 10] (s.f! (+ v1-3 1724) f0-0) [v1: control-info ] -> [] + mfc1 v0, f0 ;; [ 11] (set! v0-1 (fpr->gpr f0-0)) [] -> [v0: float ] + ld ra, 0(sp) + ld fp, 8(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-turn-around) + () + (vector-turn-to (-> self control transv)) + (set! (-> self control unknown-surface00) *turn-around-mods*) + (set! (-> self control unknown-float81) 1.0) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-walk) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x50, fp? 1 ra? 1 ep? 1 + ;gprs: gp s5 + ;fprs: f30 f28 f26 f24 f22 +;; v1-108: art-joint-anim v1-116: art-joint-anim v1-146: art-joint-anim v1-317: effect-control +;; s5-4: art-joint-anim s6-0: target gp-0: symbol f0-64: float +;; f0-69: float f0-92: float f1-19: float f22-0: float +;; f24-0: float f26-1: float f28-0: float f28-1: float +;; f28-2: float f30-0: float f30-1: float f30-2: meters +L445: + daddiu sp, sp, -80 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s5, 16(sp) + sq gp, 32(sp) + swc1 f22, 48(sp) + swc1 f24, 52(sp) + swc1 f26, 56(sp) + swc1 f28, 60(sp) + swc1 f30, 64(sp) +B0: + mtc1 f28, r0 ;; [ 0] (set! f28-0 0) [] -> [] + mtc1 f0, r0 ;; [ 1] (set! f0-0 0) [] -> [] + lui v1, L786 ;; [ 2] (set! v1-0 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 3] (set! f1-0 (l.f v1-0)) [v1: ] -> [] + lui v1, L759 ;; [ 4] (set! v1-1 L759) [] -> [v1: ] + ori v1, v1, L759 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [ 5] (set! f2-0 (l.f v1-1)) [v1: ] -> [] + lui v1, L783 ;; [ 6] (set! v1-2 L783) [] -> [v1: ] + ori v1, v1, L783 + addu v1, fp, v1 + lwc1 f3, 0(v1) ;; [ 7] (set! f3-0 (l.f v1-2)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 8] (set! v1-3 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f4, 528(v1) ;; [ 9] (set! f4-0 (l.f (+ v1-3 528))) [v1: control-info ] -> [] + add.s f3, f3, f4 ;; [ 10] (set! f3-1 (+.s f3-0 f4-0)) [] -> [] + mul.s f2, f2, f3 ;; [ 11] (set! f2-1 (*.s f2-0 f3-1)) [] -> [] + min.s f1, f1, f2 ;; [ 12] (set! f1-1 (min.s f1-0 f2-1)) [] -> [] + max.s f30, f0, f1 ;; [ 13] (set! f30-0 (max.s f0-0 f1-1)) [] -> [] + or gp, s7, r0 ;; [ 14] (set! gp-0 #f) [] -> [gp: '#f ] + lwu v1, 120(s6) ;; [ 15] (set! v1-4 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 16] (set! v1-5 (l.w (+ v1-4 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 17] (b! (<=0.si v1-5) L446 (set! v1-6 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L446 + or v1, s7, r0 + +B1: + lwu v1, 120(s6) ;; [ 18] (set! v1-7 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 19] (set! v1-8 (l.wu (+ v1-7 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 20] (set! v1-6 (l.wu (+ v1-8 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B2: +L446: + lwu a0, 116(s6) ;; [ 21] (set! a0-0 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 22] (set! a0-1 (l.wu (+ a0-0 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 160(a0) ;; [ 23] (set! a0-2 (l.wu (+ a0-1 160))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 24] (set! a0-3 (= v1-6 a0-2)) [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L447 ;; [ 25] (b! (not a0-3) L447 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B3: + lui v1, L786 ;; [ 26] (set! v1-9 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f30, 0(v1) ;; [ 27] (set! f30-0 (l.f v1-9)) [v1: ] -> [] + lw t9, ja-channel-push!(s7);; [ 28] (set! t9-0 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 7 ;; [ 29] (set! a0-4 7) [] -> [a0: ] + addiu a1, r0, 15 ;; [ 30] (set! a1-0 15) [] -> [a1: ] + jalr ra, t9 ;; [ 31] (call! a0-4 a1-0) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 32] (set! v1-10 v0-0) [v0: int ] -> [v1: int ] + beq r0, r0, L497 ;; [ 33] (b! #t L497 (nop!)) [] -> [] + sll r0, r0, 0 + +B4: +L447: + lwu v1, 120(s6) ;; [ 34] (set! v1-11 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 35] (set! v1-12 (l.w (+ v1-11 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 36] (b! (<=0.si v1-12) L448 (set! v1-13 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L448 + or v1, s7, r0 + +B5: + lwu v1, 120(s6) ;; [ 37] (set! v1-14 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 38] (set! v1-15 (l.wu (+ v1-14 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 39] (set! v1-13 (l.wu (+ v1-15 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B6: +L448: + lwu a0, 116(s6) ;; [ 40] (set! a0-5 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 41] (set! a0-6 (l.wu (+ a0-5 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 304(a0) ;; [ 42] (set! a0-7 (l.wu (+ a0-6 304))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 43] (set! a0-8 (= v1-13 a0-7)) [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L449 ;; [ 44] (b! (not a0-8) L449 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B7: + lw t9, ja-channel-push!(s7);; [ 45] (set! t9-1 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 7 ;; [ 46] (set! a0-9 7) [] -> [a0: ] + addiu a1, r0, 22 ;; [ 47] (set! a1-1 22) [] -> [a1: ] + jalr ra, t9 ;; [ 48] (call! a0-9 a1-1) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lui v1, L786 ;; [ 49] (set! v1-16 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f30, 0(v1) ;; [ 50] (set! f30-0 (l.f v1-16)) [v1: ] -> [] + mfc1 v1, f30 ;; [ 51] (set! v1-17 (fpr->gpr f30-0)) [] -> [v1: float ] + beq r0, r0, L497 ;; [ 52] (b! #t L497 (nop!)) [] -> [] + sll r0, r0, 0 + +B8: +L449: + lwu v1, 120(s6) ;; [ 53] (set! v1-18 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 54] (set! v1-19 (l.w (+ v1-18 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 55] (b! (<=0.si v1-19) L450 (set! v1-20 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L450 + or v1, s7, r0 + +B9: + lwu v1, 120(s6) ;; [ 56] (set! v1-21 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 57] (set! v1-22 (l.wu (+ v1-21 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 58] (set! v1-20 (l.wu (+ v1-22 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B10: +L450: + lwu a0, 116(s6) ;; [ 59] (set! a0-10 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 60] (set! a0-11 (l.wu (+ a0-10 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 232(a0) ;; [ 61] (set! a0-12 (l.wu (+ a0-11 232))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 62] (set! a0-13 (= v1-20 a0-12)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L458 ;; [ 63] (b! (not a0-13) L458 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B11: + lui v1, L764 ;; [ 64] (set! v1-23 L764) [] -> [v1: ] + ori v1, v1, L764 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 65] (set! f0-1 (l.f v1-23)) [v1: ] -> [] + lui v1, L786 ;; [ 66] (set! v1-24 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 67] (set! f1-2 (l.f v1-24)) [v1: ] -> [] + lui v1, L759 ;; [ 68] (set! v1-25 L759) [] -> [v1: ] + ori v1, v1, L759 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [ 69] (set! f2-2 (l.f v1-25)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 70] (set! v1-26 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f3, 528(v1) ;; [ 71] (set! f3-2 (l.f (+ v1-26 528))) [v1: control-info ] -> [] + mul.s f2, f2, f3 ;; [ 72] (set! f2-3 (*.s f2-2 f3-2)) [] -> [] + min.s f1, f1, f2 ;; [ 73] (set! f1-3 (min.s f1-2 f2-3)) [] -> [] + max.s f30, f0, f1 ;; [ 74] (set! f30-1 (max.s f0-1 f1-3)) [] -> [] + lw t9, rand-vu-percent?(s7);; [ 75] (set! t9-2 rand-vu-percent?) [] -> [t9: (function float symbol) ] + lui v1, L751 ;; [ 76] (set! v1-27 L751) [] -> [v1: ] + ori v1, v1, L751 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 77] (set! a0-14 (l.w v1-27)) [v1: ] -> [a0: int ] + jalr ra, t9 ;; [ 78] (call! a0-14) [a0: int t9: (function float symbol) ] -> [v0: symbol ] + sll v0, ra, 0 + + beql s7, v0, L451 ;; [ 79] (bl! (not v0-2) L451 (no-delay!)) [v0: symbol ] -> [] +B12: + or v1, v0, r0 ;; [ 80] (set! v1-28 v0-2) [v0: symbol ] -> [v1: symbol ] + +B13: + lui v1, L782 ;; [ 81] (set! v1-29 L782) [] -> [v1: ] + ori v1, v1, L782 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 82] (set! f0-2 (l.f v1-29)) [v1: ] -> [] + lwu v1, 108(s6) ;; [ 83] (set! v1-30 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f1, 528(v1) ;; [ 84] (set! f1-4 (l.f (+ v1-30 528))) [v1: control-info ] -> [] + c.lt.s f0, f1 ;; [ 85] (b! (<.s f0-2 f1-4) L451 (set! v1-28 #t)) [] -> [v1: symbol ] + bc1t L451 + daddiu v1, s7, 8 + +B14: + or v1, s7, r0 ;; [ 86] (set! v1-28 #f) [] -> [v1: '#f ] +B15: +L451: + beq s7, v1, L454 ;; [ 87] (b! (not v1-28) L454 (nop!)) [v1: symbol ] -> [] + sll r0, r0, 0 + +B16: + lwu v1, 120(s6) ;; [ 88] (set! v1-31 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 89] (set! v1-32 (l.wu (+ v1-31 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s5, r0, v1 ;; [ 90] (set! s5-0 (+ v1-32 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + lwu v1, 116(s6) ;; [ 91] (set! v1-33 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 92] (set! v1-34 (l.wu (+ v1-33 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 240(v1) ;; [ 93] (set! v1-35 (l.wu (+ v1-34 240))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(s5) ;; [ 94] (s.w! (+ s5-0 12) v1-35) [v1: art-element s5: joint-control-channel ] -> [] + lw t9, ja-aframe(s7) ;; [ 95] (set! t9-3 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L743 ;; [ 96] (set! v1-36 L743) [] -> [v1: ] + ori v1, v1, L743 + addu v1, fp, v1 + lw a0, 0(v1) ;; [ 97] (set! a0-15 (l.w v1-36)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [ 98] (set! a1-2 0) [] -> [a1: ] + jalr ra, t9 ;; [ 99] (call! a0-15 a1-2) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [100] (set! f0-3 (gpr->fpr v0-3)) [v0: float ] -> [] + swc1 f0, 24(s5) ;; [101] (s.f! (+ s5-0 24) f0-3) [s5: joint-control-channel ] -> [] + swc1 f30, 28(s5) ;; [102] (s.f! (+ s5-0 28) f30-1) [s5: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [103] (set! f0-4 0) [] -> [] + swc1 f0, 16(s5) ;; [104] (s.f! (+ s5-0 16) f0-4) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [105] (set! t9-4 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [106] (set! v1-37 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [107] (set! v1-38 (l.wu (+ v1-37 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 240(v1) ;; [108] (set! a1-3 (l.wu (+ v1-38 240))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [109] (set! a2-0 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s5, r0 ;; [110] (set! a0-16 s5-0) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [111] (call! a0-16 a1-3 a2-0) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [112] (set! v1-39 v0-4) [v0: int ] -> [v1: int ] +B17: +L452: + lwu s6, 44(s6) ;; [113] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [114] (set! v1-40 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [115] (set! v1-41 (l.wu (+ v1-40 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s5, r0, v1 ;; [116] (set! s5-1 (+ v1-41 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + lw t9, ja-aframe(s7) ;; [117] (set! t9-5 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L743 ;; [118] (set! v1-42 L743) [] -> [v1: ] + ori v1, v1, L743 + addu v1, fp, v1 + lw a0, 0(v1) ;; [119] (set! a0-17 (l.w v1-42)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [120] (set! a1-4 0) [] -> [a1: ] + jalr ra, t9 ;; [121] (call! a0-17 a1-4) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [122] (set! f0-5 (gpr->fpr v0-5)) [v0: float ] -> [] + swc1 f0, 24(s5) ;; [123] (s.f! (+ s5-1 24) f0-5) [s5: joint-control-channel ] -> [] + swc1 f30, 28(s5) ;; [124] (s.f! (+ s5-1 28) f30-1) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [125] (set! t9-6 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [126] (set! a1-5 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [127] (set! a2-1 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s5, r0 ;; [128] (set! a0-18 s5-1) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [129] (call! a0-18 a1-5 a2-1) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [130] (set! v1-43 v0-6) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [131] (set! t9-7 ja-done?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [132] (set! a0-19 0) [] -> [a0: ] + jalr ra, t9 ;; [133] (call! a0-19) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L452 ;; [134] (b! (not v0-7) L452 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B18: + or v1, s7, r0 ;; [135] (set! v1-44 #f) [] -> [v1: '#f ] + lwu v1, 120(s6) ;; [136] (set! v1-45 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [137] (set! v1-46 (l.wu (+ v1-45 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [138] (set! a0-20 (+ v1-46 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [139] (set! v1-47 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [140] (set! v1-48 (l.wu (+ v1-47 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 248(v1) ;; [141] (set! v1-49 (l.wu (+ v1-48 248))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [142] (s.w! (+ a0-20 12) v1-49) [v1: art-element a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [143] (set! v1-50 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [144] (set! v1-51 (l.wu (+ v1-50 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 248(v1) ;; [145] (set! v1-52 (l.wu (+ v1-51 248))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [146] (set! (the-as art-joint-anim v1-53) (l.wu (+ v1-52 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [147] (set! v1-54 (l.h (+ v1-53 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [148] (set! v1-55 (+ v1-54 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [149] (set! f0-6 (gpr->fpr v1-55)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [150] (set! f0-7 (i2f f0-6)) [] -> [] + swc1 f0, 24(a0) ;; [151] (s.f! (+ a0-20 24) f0-7) [a0: joint-control-channel ] -> [] + swc1 f30, 28(a0) ;; [152] (s.f! (+ a0-20 28) f30-1) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [153] (set! f0-8 0) [] -> [] + swc1 f0, 16(a0) ;; [154] (s.f! (+ a0-20 16) f0-8) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [155] (set! t9-8 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [156] (set! v1-56 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [157] (set! v1-57 (l.wu (+ v1-56 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 248(v1) ;; [158] (set! a1-6 (l.wu (+ v1-57 248))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [159] (set! a2-2 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [160] (call! a0-20 a1-6 a2-2) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [161] (set! v1-58 v0-8) [v0: int ] -> [v1: int ] +B19: +L453: + lwu s6, 44(s6) ;; [162] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [163] (set! v1-59 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [164] (set! v1-60 (l.wu (+ v1-59 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [165] (set! a0-21 (+ v1-60 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [166] (set! v1-61 (l.wu (+ a0-21 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [167] (set! v1-62 (l.wu (+ v1-61 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [168] (set! v1-63 (l.h (+ v1-62 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [169] (set! v1-64 (+ v1-63 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [170] (set! f0-9 (gpr->fpr v1-64)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [171] (set! f0-10 (i2f f0-9)) [] -> [] + swc1 f0, 24(a0) ;; [172] (s.f! (+ a0-21 24) f0-10) [a0: joint-control-channel ] -> [] + swc1 f30, 28(a0) ;; [173] (s.f! (+ a0-21 28) f30-1) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [174] (set! t9-9 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [175] (set! a1-7 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [176] (set! a2-3 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [177] (call! a0-21 a1-7 a2-3) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [178] (set! v1-65 v0-9) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [179] (set! t9-10 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [180] (set! a0-22 0) [] -> [a0: ] + jalr ra, t9 ;; [181] (call! a0-22) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L453 ;; [182] (b! (not v0-10) L453 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B20: + or v1, s7, r0 ;; [183] (set! v1-66 #f) [] -> [v1: '#f ] + beq r0, r0, L457 ;; [184] (b! #t L457 (nop!)) [] -> [] + sll r0, r0, 0 + +B21: +L454: + lwu v1, 120(s6) ;; [185] (set! v1-67 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [186] (set! v1-68 (l.wu (+ v1-67 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s5, r0, v1 ;; [187] (set! s5-2 (+ v1-68 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + lwu v1, 116(s6) ;; [188] (set! v1-69 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [189] (set! v1-70 (l.wu (+ v1-69 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 236(v1) ;; [190] (set! v1-71 (l.wu (+ v1-70 236))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(s5) ;; [191] (s.w! (+ s5-2 12) v1-71) [v1: art-element s5: joint-control-channel ] -> [] + lw t9, ja-aframe(s7) ;; [192] (set! t9-11 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L743 ;; [193] (set! v1-72 L743) [] -> [v1: ] + ori v1, v1, L743 + addu v1, fp, v1 + lw a0, 0(v1) ;; [194] (set! a0-23 (l.w v1-72)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [195] (set! a1-8 0) [] -> [a1: ] + jalr ra, t9 ;; [196] (call! a0-23 a1-8) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [197] (set! f0-11 (gpr->fpr v0-11)) [v0: float ] -> [] + swc1 f0, 24(s5) ;; [198] (s.f! (+ s5-2 24) f0-11) [s5: joint-control-channel ] -> [] + swc1 f30, 28(s5) ;; [199] (s.f! (+ s5-2 28) f30-1) [s5: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [200] (set! f0-12 0) [] -> [] + swc1 f0, 16(s5) ;; [201] (s.f! (+ s5-2 16) f0-12) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [202] (set! t9-12 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [203] (set! v1-73 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [204] (set! v1-74 (l.wu (+ v1-73 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 236(v1) ;; [205] (set! a1-9 (l.wu (+ v1-74 236))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [206] (set! a2-4 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s5, r0 ;; [207] (set! a0-24 s5-2) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [208] (call! a0-24 a1-9 a2-4) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [209] (set! v1-75 v0-12) [v0: int ] -> [v1: int ] +B22: +L455: + lwu s6, 44(s6) ;; [210] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [211] (set! v1-76 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [212] (set! v1-77 (l.wu (+ v1-76 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s5, r0, v1 ;; [213] (set! s5-3 (+ v1-77 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + lw t9, ja-aframe(s7) ;; [214] (set! t9-13 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L743 ;; [215] (set! v1-78 L743) [] -> [v1: ] + ori v1, v1, L743 + addu v1, fp, v1 + lw a0, 0(v1) ;; [216] (set! a0-25 (l.w v1-78)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [217] (set! a1-10 0) [] -> [a1: ] + jalr ra, t9 ;; [218] (call! a0-25 a1-10) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [219] (set! f0-13 (gpr->fpr v0-13)) [v0: float ] -> [] + swc1 f0, 24(s5) ;; [220] (s.f! (+ s5-3 24) f0-13) [s5: joint-control-channel ] -> [] + swc1 f30, 28(s5) ;; [221] (s.f! (+ s5-3 28) f30-1) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [222] (set! t9-14 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [223] (set! a1-11 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [224] (set! a2-5 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s5, r0 ;; [225] (set! a0-26 s5-3) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [226] (call! a0-26 a1-11 a2-5) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [227] (set! v1-79 v0-14) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [228] (set! t9-15 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [229] (set! a0-27 0) [] -> [a0: ] + jalr ra, t9 ;; [230] (call! a0-27) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L455 ;; [231] (b! (not v0-15) L455 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B23: + or v1, s7, r0 ;; [232] (set! v1-80 #f) [] -> [v1: '#f ] + lwu v1, 120(s6) ;; [233] (set! v1-81 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [234] (set! v1-82 (l.wu (+ v1-81 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [235] (set! a0-28 (+ v1-82 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [236] (set! v1-83 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [237] (set! v1-84 (l.wu (+ v1-83 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 244(v1) ;; [238] (set! v1-85 (l.wu (+ v1-84 244))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [239] (s.w! (+ a0-28 12) v1-85) [v1: art-element a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [240] (set! v1-86 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [241] (set! v1-87 (l.wu (+ v1-86 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 244(v1) ;; [242] (set! v1-88 (l.wu (+ v1-87 244))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [243] (set! (the-as art-joint-anim v1-89) (l.wu (+ v1-88 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [244] (set! v1-90 (l.h (+ v1-89 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [245] (set! v1-91 (+ v1-90 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [246] (set! f0-14 (gpr->fpr v1-91)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [247] (set! f0-15 (i2f f0-14)) [] -> [] + swc1 f0, 24(a0) ;; [248] (s.f! (+ a0-28 24) f0-15) [a0: joint-control-channel ] -> [] + swc1 f30, 28(a0) ;; [249] (s.f! (+ a0-28 28) f30-1) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [250] (set! f0-16 0) [] -> [] + swc1 f0, 16(a0) ;; [251] (s.f! (+ a0-28 16) f0-16) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [252] (set! t9-16 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [253] (set! v1-92 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [254] (set! v1-93 (l.wu (+ v1-92 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 244(v1) ;; [255] (set! a1-12 (l.wu (+ v1-93 244))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [256] (set! a2-6 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [257] (call! a0-28 a1-12 a2-6) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [258] (set! v1-94 v0-16) [v0: int ] -> [v1: int ] +B24: +L456: + lwu s6, 44(s6) ;; [259] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [260] (set! v1-95 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [261] (set! v1-96 (l.wu (+ v1-95 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [262] (set! a0-29 (+ v1-96 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [263] (set! v1-97 (l.wu (+ a0-29 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [264] (set! v1-98 (l.wu (+ v1-97 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [265] (set! v1-99 (l.h (+ v1-98 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [266] (set! v1-100 (+ v1-99 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [267] (set! f0-17 (gpr->fpr v1-100)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [268] (set! f0-18 (i2f f0-17)) [] -> [] + swc1 f0, 24(a0) ;; [269] (s.f! (+ a0-29 24) f0-18) [a0: joint-control-channel ] -> [] + swc1 f30, 28(a0) ;; [270] (s.f! (+ a0-29 28) f30-1) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [271] (set! t9-17 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [272] (set! a1-13 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [273] (set! a2-7 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [274] (call! a0-29 a1-13 a2-7) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [275] (set! v1-101 v0-17) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [276] (set! t9-18 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [277] (set! a0-30 0) [] -> [a0: ] + jalr ra, t9 ;; [278] (call! a0-30) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L456 ;; [279] (b! (not v0-18) L456 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B25: + or v1, s7, r0 ;; [280] (set! v1-102 #f) [] -> [v1: '#f ] +B26: +L457: + lw t9, ja-channel-push!(s7);; [281] (set! t9-19 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 7 ;; [282] (set! a0-31 7) [] -> [a0: ] + addiu a1, r0, 15 ;; [283] (set! a1-14 15) [] -> [a1: ] + jalr ra, t9 ;; [284] (call! a0-31 a1-14) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lui v1, L786 ;; [285] (set! v1-103 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f30, 0(v1) ;; [286] (set! f30-0 (l.f v1-103)) [v1: ] -> [] + lui v1, L742 ;; [287] (set! v1-104 L742) [] -> [v1: ] + ori v1, v1, L742 + addu v1, fp, v1 + lwc1 f28, 0(v1) ;; [288] (set! f28-0 (l.f v1-104)) [v1: ] -> [] + mfc1 v1, f28 ;; [289] (set! v1-105 (fpr->gpr f28-0)) [] -> [v1: float ] + beq r0, r0, L497 ;; [290] (b! #t L497 (nop!)) [] -> [] + sll r0, r0, 0 + +B27: +L458: + lwu v1, 120(s6) ;; [291] (set! v1-106 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [292] (set! v1-107 (l.w (+ v1-106 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [293] (b! (<=0.si v1-107) L459 (set! v1-108 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L459 + or v1, s7, r0 + +B28: + lwu v1, 120(s6) ;; [294] (set! v1-109 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [295] (set! v1-110 (l.wu (+ v1-109 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [296] (set! v1-108 (l.wu (+ v1-110 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B29: +L459: + lwu a0, 116(s6) ;; [297] (set! a0-32 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [298] (set! a0-33 (l.wu (+ a0-32 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 264(a0) ;; [299] (set! a0-34 (l.wu (+ a0-33 264))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [300] (set! a1-15 (= v1-108 a0-34)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L460 ;; [301] (bl! (truthy a1-15) L460 (no-delay!)) [a1: symbol ] -> [] +B30: + or a0, a1, r0 ;; [302] (set! a0-35 a1-15) [a1: symbol ] -> [a0: symbol ] + +B31: + lwu a0, 116(s6) ;; [303] (set! a0-36 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [304] (set! a0-37 (l.wu (+ a0-36 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 268(a0) ;; [305] (set! a0-38 (l.wu (+ a0-37 268))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [306] (set! a0-35 (= v1-108 a0-38)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 +B32: +L460: + beq s7, a0, L461 ;; [307] (b! (not a0-35) L461 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B33: + lui v1, L786 ;; [308] (set! v1-111 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f30, 0(v1) ;; [309] (set! f30-0 (l.f v1-111)) [v1: ] -> [] + lui v1, L742 ;; [310] (set! v1-112 L742) [] -> [v1: ] + ori v1, v1, L742 + addu v1, fp, v1 + lwc1 f28, 0(v1) ;; [311] (set! f28-0 (l.f v1-112)) [v1: ] -> [] + lw t9, ja-channel-push!(s7);; [312] (set! t9-20 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 7 ;; [313] (set! a0-39 7) [] -> [a0: ] + addiu a1, r0, 45 ;; [314] (set! a1-16 45) [] -> [a1: ] + jalr ra, t9 ;; [315] (call! a0-39 a1-16) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [316] (set! v1-113 v0-20) [v0: int ] -> [v1: int ] + beq r0, r0, L497 ;; [317] (b! #t L497 (nop!)) [] -> [] + sll r0, r0, 0 + +B34: +L461: + lwu v1, 120(s6) ;; [318] (set! v1-114 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [319] (set! v1-115 (l.w (+ v1-114 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [320] (b! (<=0.si v1-115) L462 (set! v1-116 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L462 + or v1, s7, r0 + +B35: + lwu v1, 120(s6) ;; [321] (set! v1-117 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [322] (set! v1-118 (l.wu (+ v1-117 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [323] (set! v1-116 (l.wu (+ v1-118 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B36: +L462: + lwu a0, 116(s6) ;; [324] (set! a0-40 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [325] (set! a0-41 (l.wu (+ a0-40 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 364(a0) ;; [326] (set! a0-42 (l.wu (+ a0-41 364))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [327] (set! a1-17 (= v1-116 a0-42)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L463 ;; [328] (bl! (truthy a1-17) L463 (no-delay!)) [a1: symbol ] -> [] +B37: + or a0, a1, r0 ;; [329] (set! a0-43 a1-17) [a1: symbol ] -> [a0: symbol ] + +B38: + lwu a0, 116(s6) ;; [330] (set! a0-44 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [331] (set! a0-45 (l.wu (+ a0-44 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 368(a0) ;; [332] (set! a0-46 (l.wu (+ a0-45 368))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [333] (set! a0-43 (= v1-116 a0-46)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 +B39: +L463: + beq s7, a0, L464 ;; [334] (b! (not a0-43) L464 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B40: + lui v1, L786 ;; [335] (set! v1-119 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f30, 0(v1) ;; [336] (set! f30-0 (l.f v1-119)) [v1: ] -> [] + lui v1, L741 ;; [337] (set! v1-120 L741) [] -> [v1: ] + ori v1, v1, L741 + addu v1, fp, v1 + lwc1 f28, 0(v1) ;; [338] (set! f28-0 (l.f v1-120)) [v1: ] -> [] + lw t9, ja-channel-push!(s7);; [339] (set! t9-21 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 7 ;; [340] (set! a0-47 7) [] -> [a0: ] + addiu a1, r0, 30 ;; [341] (set! a1-18 30) [] -> [a1: ] + jalr ra, t9 ;; [342] (call! a0-47 a1-18) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [343] (set! v1-121 v0-21) [v0: int ] -> [v1: int ] + beq r0, r0, L497 ;; [344] (b! #t L497 (nop!)) [] -> [] + sll r0, r0, 0 + +B41: +L464: + lwu v1, 120(s6) ;; [345] (set! v1-122 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [346] (set! v1-123 (l.w (+ v1-122 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [347] (b! (<=0.si v1-123) L465 (set! v1-124 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L465 + or v1, s7, r0 + +B42: + lwu v1, 120(s6) ;; [348] (set! v1-125 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [349] (set! v1-126 (l.wu (+ v1-125 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [350] (set! v1-124 (l.wu (+ v1-126 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B43: +L465: + lwu a0, 116(s6) ;; [351] (set! a0-48 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [352] (set! a0-49 (l.wu (+ a0-48 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 120(a0) ;; [353] (set! a0-50 (l.wu (+ a0-49 120))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [354] (set! a0-51 (= v1-124 a0-50)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L466 ;; [355] (bl! (not a0-51) L466 (no-delay!)) [a0: symbol ] -> [] +B44: + or v1, a0, r0 ;; [356] (set! v1-127 a0-51) [a0: symbol ] -> [v1: symbol ] + +B45: + lwu v1, 120(s6) ;; [357] (set! v1-128 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [358] (set! v1-129 (l.wu (+ v1-128 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu v1, r0, v1 ;; [359] (set! v1-130 (+ v1-129 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + lwu a0, 120(s6) ;; [360] (set! a0-52 (l.wu (+ self 120))) [s6: target ] -> [a0: joint-control ] + daddiu a0, a0, 44 ;; [361] (set! a0-53 (+ a0-52 44)) + ;; [a0: joint-control ] -> [a0: (inline-array joint-control-channel) ] + dsubu a0, v1, a0 ;; [362] (set! v1-127 (= v1-130 a0-53)) + ;; [v1: joint-control-channel a0: (inline-array joint-control-channel) ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 +B46: +L466: + beq s7, v1, L467 ;; [363] (b! (not v1-127) L467 (nop!)) [v1: symbol ] -> [] + sll r0, r0, 0 + +B47: + lw t9, ja-aframe-num(s7) ;; [364] (set! t9-22 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [365] (set! a0-54 0) [] -> [a0: ] + jalr ra, t9 ;; [366] (call! a0-54) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f28, v0 ;; [367] (set! f28-0 (gpr->fpr v0-22)) [v0: float ] -> [] + mfc1 v1, f28 ;; [368] (set! v1-131 (fpr->gpr f28-0)) [] -> [v1: float ] + beq r0, r0, L497 ;; [369] (b! #t L497 (nop!)) [] -> [] + sll r0, r0, 0 + +B48: +L467: + lwu v1, 120(s6) ;; [370] (set! v1-132 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [371] (set! v1-133 (l.w (+ v1-132 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [372] (b! (<=0.si v1-133) L468 (set! v1-134 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L468 + or v1, s7, r0 + +B49: + lwu v1, 120(s6) ;; [373] (set! v1-135 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [374] (set! v1-136 (l.wu (+ v1-135 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [375] (set! v1-134 (l.wu (+ v1-136 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B50: +L468: + lwu a0, 116(s6) ;; [376] (set! a0-55 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [377] (set! a0-56 (l.wu (+ a0-55 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 436(a0) ;; [378] (set! a0-57 (l.wu (+ a0-56 436))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [379] (set! a0-58 (= v1-134 a0-57)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L469 ;; [380] (b! (not a0-58) L469 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B51: + lw t9, ja-aframe-num(s7) ;; [381] (set! t9-23 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [382] (set! a0-59 0) [] -> [a0: ] + jalr ra, t9 ;; [383] (call! a0-59) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f28, v0 ;; [384] (set! f28-0 (gpr->fpr v0-23)) [v0: float ] -> [] + lw t9, ja-channel-push!(s7);; [385] (set! t9-24 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 7 ;; [386] (set! a0-60 7) [] -> [a0: ] + addiu a1, r0, 30 ;; [387] (set! a1-19 30) [] -> [a1: ] + jalr ra, t9 ;; [388] (call! a0-60 a1-19) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [389] (set! v1-137 v0-24) [v0: int ] -> [v1: int ] + beq r0, r0, L497 ;; [390] (b! #t L497 (nop!)) [] -> [] + sll r0, r0, 0 + +B52: +L469: + lwu v1, 120(s6) ;; [391] (set! v1-138 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [392] (set! v1-139 (l.w (+ v1-138 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [393] (b! (<=0.si v1-139) L470 (set! v1-140 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L470 + or v1, s7, r0 + +B53: + lwu v1, 120(s6) ;; [394] (set! v1-141 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [395] (set! v1-142 (l.wu (+ v1-141 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [396] (set! v1-140 (l.wu (+ v1-142 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B54: +L470: + lwu a0, 116(s6) ;; [397] (set! a0-61 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [398] (set! a0-62 (l.wu (+ a0-61 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 384(a0) ;; [399] (set! a0-63 (l.wu (+ a0-62 384))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [400] (set! a0-64 (= v1-140 a0-63)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L471 ;; [401] (b! (not a0-64) L471 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B55: + lw t9, ja-aframe-num(s7) ;; [402] (set! t9-25 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [403] (set! a0-65 0) [] -> [a0: ] + jalr ra, t9 ;; [404] (call! a0-65) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f28, v0 ;; [405] (set! f28-0 (gpr->fpr v0-25)) [v0: float ] -> [] + lw t9, ja-channel-push!(s7);; [406] (set! t9-26 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 7 ;; [407] (set! a0-66 7) [] -> [a0: ] + addiu a1, r0, 15 ;; [408] (set! a1-20 15) [] -> [a1: ] + jalr ra, t9 ;; [409] (call! a0-66 a1-20) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [410] (set! v1-143 v0-26) [v0: int ] -> [v1: int ] + beq r0, r0, L497 ;; [411] (b! #t L497 (nop!)) [] -> [] + sll r0, r0, 0 + +B56: +L471: + lwu v1, 120(s6) ;; [412] (set! v1-144 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [413] (set! v1-145 (l.w (+ v1-144 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [414] (b! (<=0.si v1-145) L472 (set! v1-146 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L472 + or v1, s7, r0 + +B57: + lwu v1, 120(s6) ;; [415] (set! v1-147 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [416] (set! v1-148 (l.wu (+ v1-147 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [417] (set! v1-146 (l.wu (+ v1-148 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B58: +L472: + lwu a0, 116(s6) ;; [418] (set! a0-67 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [419] (set! a0-68 (l.wu (+ a0-67 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 180(a0) ;; [420] (set! a0-69 (l.wu (+ a0-68 180))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [421] (set! a1-21 (= v1-146 a0-69)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L473 ;; [422] (bl! (truthy a1-21) L473 (no-delay!)) [a1: symbol ] -> [] +B59: + or a0, a1, r0 ;; [423] (set! a0-70 a1-21) [a1: symbol ] -> [a0: symbol ] + +B60: + lwu a0, 116(s6) ;; [424] (set! a0-71 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [425] (set! a0-72 (l.wu (+ a0-71 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 312(a0) ;; [426] (set! a0-73 (l.wu (+ a0-72 312))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [427] (set! a1-22 (= v1-146 a0-73)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L473 ;; [428] (bl! (truthy a1-22) L473 (no-delay!)) [a1: symbol ] -> [] +B61: + or a0, a1, r0 ;; [429] (set! a0-70 a1-22) [a1: symbol ] -> [a0: symbol ] + +B62: + lwu a0, 116(s6) ;; [430] (set! a0-74 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [431] (set! a0-75 (l.wu (+ a0-74 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 260(a0) ;; [432] (set! a0-76 (l.wu (+ a0-75 260))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [433] (set! a1-23 (= v1-146 a0-76)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L473 ;; [434] (bl! (truthy a1-23) L473 (no-delay!)) [a1: symbol ] -> [] +B63: + or a0, a1, r0 ;; [435] (set! a0-70 a1-23) [a1: symbol ] -> [a0: symbol ] + +B64: + lwu a0, 116(s6) ;; [436] (set! a0-77 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [437] (set! a0-78 (l.wu (+ a0-77 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 276(a0) ;; [438] (set! a0-79 (l.wu (+ a0-78 276))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [439] (set! a1-24 (= v1-146 a0-79)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L473 ;; [440] (bl! (truthy a1-24) L473 (no-delay!)) [a1: symbol ] -> [] +B65: + or a0, a1, r0 ;; [441] (set! a0-70 a1-24) [a1: symbol ] -> [a0: symbol ] + +B66: + lwu a0, 116(s6) ;; [442] (set! a0-80 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [443] (set! a0-81 (l.wu (+ a0-80 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 288(a0) ;; [444] (set! a0-82 (l.wu (+ a0-81 288))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [445] (set! a1-25 (= v1-146 a0-82)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L473 ;; [446] (bl! (truthy a1-25) L473 (no-delay!)) [a1: symbol ] -> [] +B67: + or a0, a1, r0 ;; [447] (set! a0-70 a1-25) [a1: symbol ] -> [a0: symbol ] + +B68: + lwu a0, 116(s6) ;; [448] (set! a0-83 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [449] (set! a0-84 (l.wu (+ a0-83 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 300(a0) ;; [450] (set! a0-85 (l.wu (+ a0-84 300))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [451] (set! a0-70 (= v1-146 a0-85)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 +B69: +L473: + bnel s7, a0, L475 ;; [452] (bl! (truthy a0-70) L475 (no-delay!)) [a0: symbol ] -> [] +B70: + or v1, a0, r0 ;; [453] (set! v1-149 a0-70) [a0: symbol ] -> [v1: symbol ] + +B71: + lwu v1, 120(s6) ;; [454] (set! v1-150 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [455] (set! v1-151 (l.w (+ v1-150 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [456] (b! (<=0.si v1-151) L474 (set! v1-152 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L474 + or v1, s7, r0 + +B72: + lwu v1, 120(s6) ;; [457] (set! v1-153 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [458] (set! v1-154 (l.wu (+ v1-153 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [459] (set! v1-152 (l.wu (+ v1-154 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B73: +L474: + lwu a0, 116(s6) ;; [460] (set! a0-86 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [461] (set! a0-87 (l.wu (+ a0-86 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 164(a0) ;; [462] (set! a0-88 (l.wu (+ a0-87 164))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [463] (set! a0-89 (= v1-152 a0-88)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L475 ;; [464] (bl! (not a0-89) L475 (no-delay!)) [a0: symbol ] -> [] +B74: + or v1, a0, r0 ;; [465] (set! v1-149 a0-89) [a0: symbol ] -> [v1: symbol ] + +B75: + lui v1, L742 ;; [466] (set! v1-155 L742) [] -> [v1: ] + ori v1, v1, L742 + addu v1, fp, v1 + lwc1 f26, 0(v1) ;; [467] (set! f26-0 (l.f v1-155)) [v1: ] -> [] + lw t9, ja-aframe-num(s7) ;; [468] (set! t9-27 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [469] (set! a0-90 0) [] -> [a0: ] + jalr ra, t9 ;; [470] (call! a0-90) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [471] (set! f0-19 (gpr->fpr v0-27)) [v0: float ] -> [] + c.lt.s f26, f0 ;; [472] (b! (<.s f26-0 f0-19) L475 (set! v1-149 #t)) [] -> [v1: symbol ] + bc1t L475 + daddiu v1, s7, 8 + +B76: + or v1, s7, r0 ;; [473] (set! v1-149 #f) [] -> [v1: '#f ] +B77: +L475: + beql s7, v1, L476 ;; [474] (bl! (not v1-149) L476 (no-delay!)) [v1: symbol ] -> [] +B78: + or v1, v1, r0 ;; [475] (set! v1-156 v1-149) [v1: symbol ] -> [v1: symbol ] + +B79: + lui v1, L791 ;; [476] (set! v1-157 L791) [] -> [v1: ] + ori v1, v1, L791 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [477] (set! f0-20 (l.f v1-157)) [v1: ] -> [] + lwu v1, 108(s6) ;; [478] (set! v1-158 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f1, 528(v1) ;; [479] (set! f1-5 (l.f (+ v1-158 528))) [v1: control-info ] -> [] + c.lt.s f0, f1 ;; [480] (b! (<.s f0-20 f1-5) L476 (set! v1-156 #t)) [] -> [v1: symbol ] + bc1t L476 + daddiu v1, s7, 8 + +B80: + or v1, s7, r0 ;; [481] (set! v1-156 #f) [] -> [v1: '#f ] +B81: +L476: + beq s7, v1, L492 ;; [482] (b! (not v1-156) L492 (nop!)) [v1: symbol ] -> [] + sll r0, r0, 0 + +B82: + lwu v1, 120(s6) ;; [483] (set! v1-159 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [484] (set! v1-160 (l.w (+ v1-159 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [485] (b! (<=0.si v1-160) L477 (set! s5-4 #f)) [v1: int ] -> [s5: '#f ] + beq v1, r0, L477 + or s5, s7, r0 + +B83: + lwu v1, 120(s6) ;; [486] (set! v1-161 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [487] (set! v1-162 (l.wu (+ v1-161 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu s5, 12(v1) ;; [488] (set! s5-4 (l.wu (+ v1-162 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: art-joint-anim ] +B84: +L477: + lwu v1, 108(s6) ;; [489] (set! v1-163 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f30, 412(v1) ;; [490] (set! f30-2 (l.f (+ v1-163 412))) [v1: control-info ] -> [] + lwu v1, 120(s6) ;; [491] (set! v1-164 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [492] (set! v1-165 (l.w (+ v1-164 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [493] (b! (<=0.si v1-165) L478 (set! v1-166 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L478 + or v1, s7, r0 + +B85: + lwu v1, 120(s6) ;; [494] (set! v1-167 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [495] (set! v1-168 (l.wu (+ v1-167 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [496] (set! v1-166 (l.wu (+ v1-168 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B86: +L478: + lwu a0, 116(s6) ;; [497] (set! a0-91 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [498] (set! a0-92 (l.wu (+ a0-91 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 312(a0) ;; [499] (set! a0-93 (l.wu (+ a0-92 312))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [500] (set! a1-26 (= v1-166 a0-93)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L479 ;; [501] (bl! (truthy a1-26) L479 (no-delay!)) [a1: symbol ] -> [] +B87: + or a0, a1, r0 ;; [502] (set! a0-94 a1-26) [a1: symbol ] -> [a0: symbol ] + +B88: + lwu a0, 116(s6) ;; [503] (set! a0-95 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [504] (set! a0-96 (l.wu (+ a0-95 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 260(a0) ;; [505] (set! a0-97 (l.wu (+ a0-96 260))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [506] (set! a0-94 (= v1-166 a0-97)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 +B89: +L479: + beq s7, a0, L480 ;; [507] (b! (not a0-94) L480 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B90: + lw t9, ja-channel-push!(s7);; [508] (set! t9-28 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [509] (set! a0-98 1) [] -> [a0: ] + addiu a1, r0, 15 ;; [510] (set! a1-27 15) [] -> [a1: ] + jalr ra, t9 ;; [511] (call! a0-98 a1-27) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [512] (set! v1-169 v0-28) [v0: int ] -> [v1: int ] + beq r0, r0, L481 ;; [513] (b! #t L481 (nop!)) [] -> [] + sll r0, r0, 0 + +B91: +L480: + lw t9, ja-channel-set!(s7);; [514] (set! t9-29 ja-channel-set!) + ;; [] -> [t9: (function int int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [515] (set! a0-99 1) [] -> [a0: ] + jalr ra, t9 ;; [516] (call! a0-99) + ;; [a0: t9: (function int int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [517] (set! v1-170 v0-29) [v0: int ] -> [v1: int ] +B92: +L481: + lwu v1, 116(s6) ;; [518] (set! v1-171 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [519] (set! v1-172 (l.wu (+ v1-171 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 164(v1) ;; [520] (set! v1-173 (l.wu (+ v1-172 164))) [v1: art-group ] -> [v1: art-element ] + bne s5, v1, L482 ;; [521] (b! (!= s5-4 v1-173) L482 (nop!)) [v1: art-element s5: art-joint-anim ] -> [] + sll r0, r0, 0 + +B93: + lui v1, L735 ;; [522] (set! v1-174 L735) [] -> [v1: ] + ori v1, v1, L735 + addu v1, fp, v1 + lw v1, 0(v1) ;; [523] (set! v1-175 (l.w v1-174)) [v1: ] -> [v1: int ] + beq r0, r0, L483 ;; [524] (b! #t L483 (nop!)) [] -> [] + sll r0, r0, 0 + +B94: +L482: + lui v1, L734 ;; [525] (set! v1-176 L734) [] -> [v1: ] + ori v1, v1, L734 + addu v1, fp, v1 + lw v1, 0(v1) ;; [526] (set! v1-175 (l.w v1-176)) [v1: ] -> [v1: int ] +B95: +L483: + mtc1 f0, v1 ;; [527] (set! f0-21 (gpr->fpr (the-as float v1-175))) [v1: float ] -> [] + c.lt.s f0, f30 ;; [528] (b! (>=.s f0-21 f30-2) L485 (nop!)) [] -> [] + bc1f L485 + sll r0, r0, 0 + +B96: + lwu v1, 120(s6) ;; [529] (set! v1-177 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [530] (set! v1-178 (l.wu (+ v1-177 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s5, r0, v1 ;; [531] (set! s5-5 (+ v1-178 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + lwu v1, 116(s6) ;; [532] (set! v1-179 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [533] (set! v1-180 (l.wu (+ v1-179 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 140(v1) ;; [534] (set! v1-181 (l.wu (+ v1-180 140))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(s5) ;; [535] (s.w! (+ s5-5 12) v1-181) [v1: art-element s5: joint-control-channel ] -> [] + lw t9, ja-aframe(s7) ;; [536] (set! t9-30 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L750 ;; [537] (set! v1-182 L750) [] -> [v1: ] + ori v1, v1, L750 + addu v1, fp, v1 + lw a0, 0(v1) ;; [538] (set! a0-100 (l.w v1-182)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [539] (set! a1-28 0) [] -> [a1: ] + jalr ra, t9 ;; [540] (call! a0-100 a1-28) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [541] (set! f0-22 (gpr->fpr v0-30)) [v0: float ] -> [] + swc1 f0, 24(s5) ;; [542] (s.f! (+ s5-5 24) f0-22) [s5: joint-control-channel ] -> [] + lui v1, L776 ;; [543] (set! v1-183 L776) [] -> [v1: ] + ori v1, v1, L776 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [544] (set! f0-23 (l.f v1-183)) [v1: ] -> [] + swc1 f0, 28(s5) ;; [545] (s.f! (+ s5-5 28) f0-23) [s5: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [546] (set! f0-24 0) [] -> [] + swc1 f0, 16(s5) ;; [547] (s.f! (+ s5-5 16) f0-24) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [548] (set! t9-31 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [549] (set! v1-184 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [550] (set! v1-185 (l.wu (+ v1-184 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 140(v1) ;; [551] (set! a1-29 (l.wu (+ v1-185 140))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [552] (set! a2-8 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s5, r0 ;; [553] (set! a0-101 s5-5) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [554] (call! a0-101 a1-29 a2-8) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [555] (set! v1-186 v0-31) [v0: int ] -> [v1: int ] +B97: +L484: + lwu s6, 44(s6) ;; [556] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [557] (set! v1-187 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [558] (set! v1-188 (l.wu (+ v1-187 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s5, r0, v1 ;; [559] (set! s5-6 (+ v1-188 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + lw t9, ja-aframe(s7) ;; [560] (set! t9-32 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L750 ;; [561] (set! v1-189 L750) [] -> [v1: ] + ori v1, v1, L750 + addu v1, fp, v1 + lw a0, 0(v1) ;; [562] (set! a0-102 (l.w v1-189)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [563] (set! a1-30 0) [] -> [a1: ] + jalr ra, t9 ;; [564] (call! a0-102 a1-30) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [565] (set! f0-25 (gpr->fpr v0-32)) [v0: float ] -> [] + swc1 f0, 24(s5) ;; [566] (s.f! (+ s5-6 24) f0-25) [s5: joint-control-channel ] -> [] + lui v1, L776 ;; [567] (set! v1-190 L776) [] -> [v1: ] + ori v1, v1, L776 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [568] (set! f0-26 (l.f v1-190)) [v1: ] -> [] + swc1 f0, 28(s5) ;; [569] (s.f! (+ s5-6 28) f0-26) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [570] (set! t9-33 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [571] (set! a1-31 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [572] (set! a2-9 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s5, r0 ;; [573] (set! a0-103 s5-6) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [574] (call! a0-103 a1-31 a2-9) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [575] (set! v1-191 v0-33) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [576] (set! t9-34 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [577] (set! a0-104 0) [] -> [a0: ] + jalr ra, t9 ;; [578] (call! a0-104) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L484 ;; [579] (b! (not v0-34) L484 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B98: + or v1, s7, r0 ;; [580] (set! v1-192 #f) [] -> [v1: '#f ] + beq r0, r0, L491 ;; [581] (b! #t L491 (nop!)) [] -> [] + sll r0, r0, 0 + +B99: +L485: + lwu v1, 116(s6) ;; [582] (set! v1-193 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [583] (set! v1-194 (l.wu (+ v1-193 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 164(v1) ;; [584] (set! v1-195 (l.wu (+ v1-194 164))) [v1: art-group ] -> [v1: art-element ] + bne s5, v1, L486 ;; [585] (b! (!= s5-4 v1-195) L486 (nop!)) [v1: art-element s5: art-joint-anim ] -> [] + sll r0, r0, 0 + +B100: + lui v1, L736 ;; [586] (set! v1-196 L736) [] -> [v1: ] + ori v1, v1, L736 + addu v1, fp, v1 + lw v1, 0(v1) ;; [587] (set! v1-197 (l.w v1-196)) [v1: ] -> [v1: int ] + beq r0, r0, L487 ;; [588] (b! #t L487 (nop!)) [] -> [] + sll r0, r0, 0 + +B101: +L486: + lui v1, L734 ;; [589] (set! v1-198 L734) [] -> [v1: ] + ori v1, v1, L734 + addu v1, fp, v1 + lw v1, 0(v1) ;; [590] (set! v1-197 (l.w v1-198)) [v1: ] -> [v1: int ] +B102: +L487: + mtc1 f0, v1 ;; [591] (set! f0-27 (gpr->fpr (the-as float v1-197))) [v1: float ] -> [] + c.lt.s f0, f30 ;; [592] (b! (>=.s f0-27 f30-2) L489 (nop!)) [] -> [] + bc1f L489 + sll r0, r0, 0 + +B103: + lwu v1, 120(s6) ;; [593] (set! v1-199 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [594] (set! v1-200 (l.wu (+ v1-199 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s5, r0, v1 ;; [595] (set! s5-7 (+ v1-200 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + lwu v1, 116(s6) ;; [596] (set! v1-201 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [597] (set! v1-202 (l.wu (+ v1-201 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 140(v1) ;; [598] (set! v1-203 (l.wu (+ v1-202 140))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(s5) ;; [599] (s.w! (+ s5-7 12) v1-203) [v1: art-element s5: joint-control-channel ] -> [] + lw t9, ja-aframe(s7) ;; [600] (set! t9-35 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L750 ;; [601] (set! v1-204 L750) [] -> [v1: ] + ori v1, v1, L750 + addu v1, fp, v1 + lw a0, 0(v1) ;; [602] (set! a0-105 (l.w v1-204)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [603] (set! a1-32 0) [] -> [a1: ] + jalr ra, t9 ;; [604] (call! a0-105 a1-32) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [605] (set! f0-28 (gpr->fpr v0-35)) [v0: float ] -> [] + swc1 f0, 24(s5) ;; [606] (s.f! (+ s5-7 24) f0-28) [s5: joint-control-channel ] -> [] + lui v1, L776 ;; [607] (set! v1-205 L776) [] -> [v1: ] + ori v1, v1, L776 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [608] (set! f0-29 (l.f v1-205)) [v1: ] -> [] + swc1 f0, 28(s5) ;; [609] (s.f! (+ s5-7 28) f0-29) [s5: joint-control-channel ] -> [] + lw t9, ja-aframe(s7) ;; [610] (set! t9-36 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L787 ;; [611] (set! v1-206 L787) [] -> [v1: ] + ori v1, v1, L787 + addu v1, fp, v1 + lw a0, 0(v1) ;; [612] (set! a0-106 (l.w v1-206)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [613] (set! a1-33 0) [] -> [a1: ] + jalr ra, t9 ;; [614] (call! a0-106 a1-33) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [615] (set! f0-30 (gpr->fpr v0-36)) [v0: float ] -> [] + swc1 f0, 16(s5) ;; [616] (s.f! (+ s5-7 16) f0-30) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [617] (set! t9-37 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [618] (set! v1-207 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [619] (set! v1-208 (l.wu (+ v1-207 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 140(v1) ;; [620] (set! a1-34 (l.wu (+ v1-208 140))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [621] (set! a2-10 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s5, r0 ;; [622] (set! a0-107 s5-7) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [623] (call! a0-107 a1-34 a2-10) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [624] (set! v1-209 v0-37) [v0: int ] -> [v1: int ] +B104: +L488: + lwu s6, 44(s6) ;; [625] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [626] (set! v1-210 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [627] (set! v1-211 (l.wu (+ v1-210 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s5, r0, v1 ;; [628] (set! s5-8 (+ v1-211 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + lw t9, ja-aframe(s7) ;; [629] (set! t9-38 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L750 ;; [630] (set! v1-212 L750) [] -> [v1: ] + ori v1, v1, L750 + addu v1, fp, v1 + lw a0, 0(v1) ;; [631] (set! a0-108 (l.w v1-212)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [632] (set! a1-35 0) [] -> [a1: ] + jalr ra, t9 ;; [633] (call! a0-108 a1-35) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [634] (set! f0-31 (gpr->fpr v0-38)) [v0: float ] -> [] + swc1 f0, 24(s5) ;; [635] (s.f! (+ s5-8 24) f0-31) [s5: joint-control-channel ] -> [] + lui v1, L776 ;; [636] (set! v1-213 L776) [] -> [v1: ] + ori v1, v1, L776 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [637] (set! f0-32 (l.f v1-213)) [v1: ] -> [] + swc1 f0, 28(s5) ;; [638] (s.f! (+ s5-8 28) f0-32) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [639] (set! t9-39 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [640] (set! a1-36 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [641] (set! a2-11 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s5, r0 ;; [642] (set! a0-109 s5-8) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [643] (call! a0-109 a1-36 a2-11) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [644] (set! v1-214 v0-39) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [645] (set! t9-40 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [646] (set! a0-110 0) [] -> [a0: ] + jalr ra, t9 ;; [647] (call! a0-110) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L488 ;; [648] (b! (not v0-40) L488 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B105: + or v1, s7, r0 ;; [649] (set! v1-215 #f) [] -> [v1: '#f ] + beq r0, r0, L491 ;; [650] (b! #t L491 (nop!)) [] -> [] + sll r0, r0, 0 + +B106: +L489: + lwu v1, 120(s6) ;; [651] (set! v1-216 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [652] (set! v1-217 (l.wu (+ v1-216 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s5, r0, v1 ;; [653] (set! s5-9 (+ v1-217 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + lwu v1, 116(s6) ;; [654] (set! v1-218 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [655] (set! v1-219 (l.wu (+ v1-218 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 144(v1) ;; [656] (set! v1-220 (l.wu (+ v1-219 144))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(s5) ;; [657] (s.w! (+ s5-9 12) v1-220) [v1: art-element s5: joint-control-channel ] -> [] + lw t9, ja-aframe(s7) ;; [658] (set! t9-41 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L749 ;; [659] (set! v1-221 L749) [] -> [v1: ] + ori v1, v1, L749 + addu v1, fp, v1 + lw a0, 0(v1) ;; [660] (set! a0-111 (l.w v1-221)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [661] (set! a1-37 0) [] -> [a1: ] + jalr ra, t9 ;; [662] (call! a0-111 a1-37) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [663] (set! f0-33 (gpr->fpr v0-41)) [v0: float ] -> [] + swc1 f0, 24(s5) ;; [664] (s.f! (+ s5-9 24) f0-33) [s5: joint-control-channel ] -> [] + lui v1, L776 ;; [665] (set! v1-222 L776) [] -> [v1: ] + ori v1, v1, L776 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [666] (set! f0-34 (l.f v1-222)) [v1: ] -> [] + swc1 f0, 28(s5) ;; [667] (s.f! (+ s5-9 28) f0-34) [s5: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [668] (set! f0-35 0) [] -> [] + swc1 f0, 16(s5) ;; [669] (s.f! (+ s5-9 16) f0-35) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [670] (set! t9-42 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [671] (set! v1-223 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [672] (set! v1-224 (l.wu (+ v1-223 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 144(v1) ;; [673] (set! a1-38 (l.wu (+ v1-224 144))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [674] (set! a2-12 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s5, r0 ;; [675] (set! a0-112 s5-9) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [676] (call! a0-112 a1-38 a2-12) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [677] (set! v1-225 v0-42) [v0: int ] -> [v1: int ] +B107: +L490: + lwu s6, 44(s6) ;; [678] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [679] (set! v1-226 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [680] (set! v1-227 (l.wu (+ v1-226 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s5, r0, v1 ;; [681] (set! s5-10 (+ v1-227 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + lw t9, ja-aframe(s7) ;; [682] (set! t9-43 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L749 ;; [683] (set! v1-228 L749) [] -> [v1: ] + ori v1, v1, L749 + addu v1, fp, v1 + lw a0, 0(v1) ;; [684] (set! a0-113 (l.w v1-228)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [685] (set! a1-39 0) [] -> [a1: ] + jalr ra, t9 ;; [686] (call! a0-113 a1-39) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [687] (set! f0-36 (gpr->fpr v0-43)) [v0: float ] -> [] + swc1 f0, 24(s5) ;; [688] (s.f! (+ s5-10 24) f0-36) [s5: joint-control-channel ] -> [] + lui v1, L776 ;; [689] (set! v1-229 L776) [] -> [v1: ] + ori v1, v1, L776 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [690] (set! f0-37 (l.f v1-229)) [v1: ] -> [] + swc1 f0, 28(s5) ;; [691] (s.f! (+ s5-10 28) f0-37) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [692] (set! t9-44 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [693] (set! a1-40 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [694] (set! a2-13 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s5, r0 ;; [695] (set! a0-114 s5-10) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [696] (call! a0-114 a1-40 a2-13) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [697] (set! v1-230 v0-44) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [698] (set! t9-45 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [699] (set! a0-115 0) [] -> [a0: ] + jalr ra, t9 ;; [700] (call! a0-115) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L490 ;; [701] (b! (not v0-45) L490 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B108: + or v1, s7, r0 ;; [702] (set! v1-231 #f) [] -> [v1: '#f ] +B109: +L491: + lwu s6, 44(s6) ;; [703] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [704] (set! v1-232 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [705] (set! v1-233 (l.wu (+ v1-232 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [706] (set! a0-116 (+ v1-233 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [707] (set! v1-234 (l.wu (+ a0-116 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [708] (set! v1-235 (l.wu (+ v1-234 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [709] (set! v1-236 (l.h (+ v1-235 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [710] (set! v1-237 (+ v1-236 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [711] (set! f0-38 (gpr->fpr v1-237)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [712] (set! f0-39 (i2f f0-38)) [] -> [] + swc1 f0, 24(a0) ;; [713] (s.f! (+ a0-116 24) f0-39) [a0: joint-control-channel ] -> [] + lui v1, L782 ;; [714] (set! v1-238 L782) [] -> [v1: ] + ori v1, v1, L782 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [715] (set! f0-40 (l.f v1-238)) [v1: ] -> [] + lwu v1, 108(s6) ;; [716] (set! v1-239 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f1, 528(v1) ;; [717] (set! f1-6 (l.f (+ v1-239 528))) [v1: control-info ] -> [] + max.s f0, f0, f1 ;; [718] (set! f0-41 (max.s f0-40 f1-6)) [] -> [] + lw v1, *display*(s7) ;; [719] (set! v1-240 *display*) [] -> [v1: display ] + lwc1 f1, 904(v1) ;; [720] (set! f1-7 (l.f (+ v1-240 904))) [v1: display ] -> [] + mul.s f0, f0, f1 ;; [721] (set! f0-42 (*.s f0-41 f1-7)) [] -> [] + lw v1, *TARGET-bank*(s7) ;; [722] (set! v1-241 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f1, 228(v1) ;; [723] (set! f1-8 (l.f (+ v1-241 228))) [v1: target-bank ] -> [] + lw v1, *TARGET-bank*(s7) ;; [724] (set! v1-242 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f2, 204(v1) ;; [725] (set! f2-4 (l.f (+ v1-242 204))) [v1: target-bank ] -> [] + div.s f1, f1, f2 ;; [726] (set! f1-9 (/.s f1-8 f2-4)) [] -> [] + div.s f0, f0, f1 ;; [727] (set! f0-43 (/.s f0-42 f1-9)) [] -> [] + swc1 f0, 28(a0) ;; [728] (s.f! (+ a0-116 28) f0-43) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [729] (set! t9-46 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [730] (set! a1-41 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [731] (set! a2-14 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [732] (call! a0-116 a1-41 a2-14) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [733] (set! v1-243 v0-46) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [734] (set! t9-47 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [735] (set! a0-117 0) [] -> [a0: ] + jalr ra, t9 ;; [736] (call! a0-117) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L491 ;; [737] (b! (not v0-47) L491 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B110: + or v1, s7, r0 ;; [738] (set! v1-244 #f) [] -> [v1: '#f ] + lui v1, L742 ;; [739] (set! v1-245 L742) [] -> [v1: ] + ori v1, v1, L742 + addu v1, fp, v1 + lwc1 f28, 0(v1) ;; [740] (set! f28-0 (l.f v1-245)) [v1: ] -> [] + lui v1, L786 ;; [741] (set! v1-246 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f30, 0(v1) ;; [742] (set! f30-0 (l.f v1-246)) [v1: ] -> [] + lw t9, ja-channel-set!(s7);; [743] (set! t9-48 ja-channel-set!) + ;; [] -> [t9: (function int int :behavior process-drawable) ] + addiu a0, r0, 7 ;; [744] (set! a0-118 7) [] -> [a0: ] + jalr ra, t9 ;; [745] (call! a0-118) + ;; [a0: t9: (function int int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [746] (set! v1-247 v0-48) [v0: int ] -> [v1: int ] + beq r0, r0, L497 ;; [747] (b! #t L497 (nop!)) [] -> [] + sll r0, r0, 0 + +B111: +L492: + lwu v1, 120(s6) ;; [748] (set! v1-248 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [749] (set! v1-249 (l.w (+ v1-248 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [750] (b! (<=0.si v1-249) L493 (set! v1-250 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L493 + or v1, s7, r0 + +B112: + lwu v1, 120(s6) ;; [751] (set! v1-251 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [752] (set! v1-252 (l.wu (+ v1-251 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [753] (set! v1-250 (l.wu (+ v1-252 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B113: +L493: + lwu a0, 116(s6) ;; [754] (set! a0-119 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [755] (set! a0-120 (l.wu (+ a0-119 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 164(a0) ;; [756] (set! a0-121 (l.wu (+ a0-120 164))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [757] (set! a0-122 (= v1-250 a0-121)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L494 ;; [758] (b! (not a0-122) L494 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B114: + lw t9, ja-channel-push!(s7);; [759] (set! t9-49 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 7 ;; [760] (set! a0-123 7) [] -> [a0: ] + addiu a1, r0, 15 ;; [761] (set! a1-42 15) [] -> [a1: ] + jalr ra, t9 ;; [762] (call! a0-123 a1-42) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + daddiu gp, s7, #t ;; [763] (set! gp-0 #t) [] -> [gp: symbol ] + or v1, gp, r0 ;; [764] (set! v1-253 gp-0) [gp: symbol ] -> [v1: symbol ] + beq r0, r0, L497 ;; [765] (b! #t L497 (nop!)) [] -> [] + sll r0, r0, 0 + +B115: +L494: + lwu v1, 120(s6) ;; [766] (set! v1-254 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [767] (set! v1-255 (l.w (+ v1-254 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [768] (b! (<=0.si v1-255) L495 (set! v1-256 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L495 + or v1, s7, r0 + +B116: + lwu v1, 120(s6) ;; [769] (set! v1-257 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [770] (set! v1-258 (l.wu (+ v1-257 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [771] (set! v1-256 (l.wu (+ v1-258 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B117: +L495: + lwu a0, 116(s6) ;; [772] (set! a0-124 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [773] (set! a0-125 (l.wu (+ a0-124 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 340(a0) ;; [774] (set! a0-126 (l.wu (+ a0-125 340))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [775] (set! a0-127 (= v1-256 a0-126)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L496 ;; [776] (b! (not a0-127) L496 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B118: + lw t9, ja-channel-push!(s7);; [777] (set! t9-50 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 7 ;; [778] (set! a0-128 7) [] -> [a0: ] + addiu a1, r0, 45 ;; [779] (set! a1-43 45) [] -> [a1: ] + jalr ra, t9 ;; [780] (call! a0-128 a1-43) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [781] (set! v1-259 v0-50) [v0: int ] -> [v1: int ] + beq r0, r0, L497 ;; [782] (b! #t L497 (nop!)) [] -> [] + sll r0, r0, 0 + +B119: +L496: + lw t9, ja-channel-push!(s7);; [783] (set! t9-51 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 7 ;; [784] (set! a0-129 7) [] -> [a0: ] + addiu a1, r0, 15 ;; [785] (set! a1-44 15) [] -> [a1: ] + jalr ra, t9 ;; [786] (call! a0-129 a1-44) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [787] (set! v1-260 v0-51) [v0: int ] -> [v1: int ] +B120: +L497: + daddiu v1, s7, push ;; [788] (set! v1-261 'push) [] -> [v1: symbol ] + lwu a0, 120(s6) ;; [789] (set! a0-130 (l.wu (+ self 120))) [s6: target ] -> [a0: joint-control ] + lwu a0, 12(a0) ;; [790] (set! a0-131 (l.wu (+ a0-130 12))) + ;; [a0: joint-control ] -> [a0: (inline-array joint-control-channel) ] + sw v1, 148(a0) ;; [791] (s.w! (+ a0-131 148) v1-261) + ;; [v1: symbol a0: (inline-array joint-control-channel) ] -> [] + daddiu v1, s7, stack ;; [792] (set! v1-262 'stack) [] -> [v1: symbol ] + lwu a0, 120(s6) ;; [793] (set! a0-132 (l.wu (+ self 120))) [s6: target ] -> [a0: joint-control ] + lwu a0, 12(a0) ;; [794] (set! a0-133 (l.wu (+ a0-132 12))) + ;; [a0: joint-control ] -> [a0: (inline-array joint-control-channel) ] + sw v1, 292(a0) ;; [795] (s.w! (+ a0-133 292) v1-262) + ;; [v1: symbol a0: (inline-array joint-control-channel) ] -> [] + lwu v1, 120(s6) ;; [796] (set! v1-263 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [797] (set! v1-264 (l.wu (+ v1-263 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu v1, r0, v1 ;; [798] (set! v1-265 (+ v1-264 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + lwu a0, 116(s6) ;; [799] (set! a0-134 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [800] (set! a0-135 (l.wu (+ a0-134 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 120(a0) ;; [801] (set! a0-136 (l.wu (+ a0-135 120))) [a0: art-group ] -> [a0: art-element ] + sw a0, 12(v1) ;; [802] (s.w! (+ v1-265 12) a0-136) [v1: joint-control-channel a0: art-element ] -> [] + lw t9, ja-aframe(s7) ;; [803] (set! t9-52 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + mfc1 a0, f28 ;; [804] (set! a0-137 (fpr->gpr f28-0)) [] -> [a0: float ] + addiu a1, r0, 0 ;; [805] (set! a1-45 0) [] -> [a1: ] + jalr ra, t9 ;; [806] (call! a0-137 a1-45) + ;; [a0: float a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f28, v0 ;; [807] (set! f28-1 (gpr->fpr v0-52)) [v0: float ] -> [] + lwu v1, 120(s6) ;; [808] (set! v1-266 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [809] (set! v1-267 (l.wu (+ v1-266 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s5, r0, v1 ;; [810] (set! s5-11 (+ v1-267 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + mtc1 f0, r0 ;; [811] (set! f0-44 0) [] -> [] + swc1 f0, 8(s5) ;; [812] (s.f! (+ s5-11 8) f0-44) [s5: joint-control-channel ] -> [] + lw v1, *TARGET-bank*(s7) ;; [813] (set! v1-268 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 208(v1) ;; [814] (set! f0-45 (l.f (+ v1-268 208))) [v1: target-bank ] -> [] + swc1 f0, 36(s5) ;; [815] (s.f! (+ s5-11 36) f0-45) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [816] (set! t9-53 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a0, s5, r0 ;; [817] (set! a0-138 s5-11) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [818] (set! v1-269 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [819] (set! v1-270 (l.wu (+ v1-269 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 120(v1) ;; [820] (set! a1-46 (l.wu (+ v1-270 120))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-identity(s7);; [821] (set! a2-15 num-func-identity) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [822] (call! a0-138 a1-46 a2-15) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + swc1 f28, 16(s5) ;; [823] (s.f! (+ s5-11 16) f28-1) [s5: joint-control-channel ] -> [] + mfc1 v1, f28 ;; [824] (set! v1-271 (fpr->gpr f28-1)) [] -> [v1: float ] + lwu v1, 120(s6) ;; [825] (set! v1-272 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [826] (set! v1-273 (l.wu (+ v1-272 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu s5, v1, 48 ;; [827] (set! s5-12 (+ v1-273 48)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + mtc1 f0, r0 ;; [828] (set! f0-46 0) [] -> [] + swc1 f0, 8(s5) ;; [829] (s.f! (+ s5-12 8) f0-46) [s5: joint-control-channel ] -> [] + lw v1, *TARGET-bank*(s7) ;; [830] (set! v1-274 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 216(v1) ;; [831] (set! f0-47 (l.f (+ v1-274 216))) [v1: target-bank ] -> [] + swc1 f0, 36(s5) ;; [832] (s.f! (+ s5-12 36) f0-47) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [833] (set! t9-54 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a0, s5, r0 ;; [834] (set! a0-139 s5-12) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [835] (set! v1-275 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [836] (set! v1-276 (l.wu (+ v1-275 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 128(v1) ;; [837] (set! a1-47 (l.wu (+ v1-276 128))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-identity(s7);; [838] (set! a2-16 num-func-identity) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [839] (call! a0-139 a1-47 a2-16) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + swc1 f28, 16(s5) ;; [840] (s.f! (+ s5-12 16) f28-1) [s5: joint-control-channel ] -> [] + mfc1 v1, f28 ;; [841] (set! v1-277 (fpr->gpr f28-1)) [] -> [v1: float ] + lwu v1, 120(s6) ;; [842] (set! v1-278 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [843] (set! v1-279 (l.wu (+ v1-278 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu s5, v1, 96 ;; [844] (set! s5-13 (+ v1-279 96)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + mtc1 f0, r0 ;; [845] (set! f0-48 0) [] -> [] + swc1 f0, 8(s5) ;; [846] (s.f! (+ s5-13 8) f0-48) [s5: joint-control-channel ] -> [] + lw v1, *TARGET-bank*(s7) ;; [847] (set! v1-280 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 220(v1) ;; [848] (set! f0-49 (l.f (+ v1-280 220))) [v1: target-bank ] -> [] + swc1 f0, 36(s5) ;; [849] (s.f! (+ s5-13 36) f0-49) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [850] (set! t9-55 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a0, s5, r0 ;; [851] (set! a0-140 s5-13) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [852] (set! v1-281 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [853] (set! v1-282 (l.wu (+ v1-281 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 136(v1) ;; [854] (set! a1-48 (l.wu (+ v1-282 136))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-identity(s7);; [855] (set! a2-17 num-func-identity) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [856] (call! a0-140 a1-48 a2-17) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + swc1 f28, 16(s5) ;; [857] (s.f! (+ s5-13 16) f28-1) [s5: joint-control-channel ] -> [] + mfc1 v1, f28 ;; [858] (set! v1-283 (fpr->gpr f28-1)) [] -> [v1: float ] + lwu v1, 120(s6) ;; [859] (set! v1-284 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [860] (set! v1-285 (l.wu (+ v1-284 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu s5, v1, 192 ;; [861] (set! s5-14 (+ v1-285 192)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + mtc1 f0, r0 ;; [862] (set! f0-50 0) [] -> [] + swc1 f0, 8(s5) ;; [863] (s.f! (+ s5-14 8) f0-50) [s5: joint-control-channel ] -> [] + lw v1, *TARGET-bank*(s7) ;; [864] (set! v1-286 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 232(v1) ;; [865] (set! f0-51 (l.f (+ v1-286 232))) [v1: target-bank ] -> [] + swc1 f0, 36(s5) ;; [866] (s.f! (+ s5-14 36) f0-51) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [867] (set! t9-56 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a0, s5, r0 ;; [868] (set! a0-141 s5-14) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [869] (set! v1-287 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [870] (set! v1-288 (l.wu (+ v1-287 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 108(v1) ;; [871] (set! a1-49 (l.wu (+ v1-288 108))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-identity(s7);; [872] (set! a2-18 num-func-identity) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [873] (call! a0-141 a1-49 a2-18) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + swc1 f28, 16(s5) ;; [874] (s.f! (+ s5-14 16) f28-1) [s5: joint-control-channel ] -> [] + mfc1 v1, f28 ;; [875] (set! v1-289 (fpr->gpr f28-1)) [] -> [v1: float ] + lwu v1, 120(s6) ;; [876] (set! v1-290 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [877] (set! v1-291 (l.wu (+ v1-290 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu s5, v1, 240 ;; [878] (set! s5-15 (+ v1-291 240)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + mtc1 f0, r0 ;; [879] (set! f0-52 0) [] -> [] + swc1 f0, 8(s5) ;; [880] (s.f! (+ s5-15 8) f0-52) [s5: joint-control-channel ] -> [] + lw v1, *TARGET-bank*(s7) ;; [881] (set! v1-292 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 236(v1) ;; [882] (set! f0-53 (l.f (+ v1-292 236))) [v1: target-bank ] -> [] + swc1 f0, 36(s5) ;; [883] (s.f! (+ s5-15 36) f0-53) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [884] (set! t9-57 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a0, s5, r0 ;; [885] (set! a0-142 s5-15) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [886] (set! v1-293 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [887] (set! v1-294 (l.wu (+ v1-293 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 116(v1) ;; [888] (set! a1-50 (l.wu (+ v1-294 116))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-identity(s7);; [889] (set! a2-19 num-func-identity) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [890] (call! a0-142 a1-50 a2-19) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + swc1 f28, 16(s5) ;; [891] (s.f! (+ s5-15 16) f28-1) [s5: joint-control-channel ] -> [] + mfc1 v1, f28 ;; [892] (set! v1-295 (fpr->gpr f28-1)) [] -> [v1: float ] + lwu v1, 120(s6) ;; [893] (set! v1-296 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [894] (set! v1-297 (l.wu (+ v1-296 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu s5, v1, 144 ;; [895] (set! s5-16 (+ v1-297 144)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + mtc1 f0, r0 ;; [896] (set! f0-54 0) [] -> [] + swc1 f0, 8(s5) ;; [897] (s.f! (+ s5-16 8) f0-54) [s5: joint-control-channel ] -> [] + lw v1, *TARGET-bank*(s7) ;; [898] (set! v1-298 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 224(v1) ;; [899] (set! f0-55 (l.f (+ v1-298 224))) [v1: target-bank ] -> [] + swc1 f0, 36(s5) ;; [900] (s.f! (+ s5-16 36) f0-55) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [901] (set! t9-58 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a0, s5, r0 ;; [902] (set! a0-143 s5-16) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [903] (set! v1-299 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [904] (set! v1-300 (l.wu (+ v1-299 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 100(v1) ;; [905] (set! a1-51 (l.wu (+ v1-300 100))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-identity(s7);; [906] (set! a2-20 num-func-identity) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [907] (call! a0-143 a1-51 a2-20) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + swc1 f28, 16(s5) ;; [908] (s.f! (+ s5-16 16) f28-1) [s5: joint-control-channel ] -> [] + mfc1 v1, f28 ;; [909] (set! v1-301 (fpr->gpr f28-1)) [] -> [v1: float ] + mtc1 f28, r0 ;; [910] (set! f28-2 0) [] -> [] + mtc1 f26, r0 ;; [911] (set! f26-1 0) [] -> [] +B121: +L498: + lui v1, L787 ;; [912] (set! v1-302 L787) [] -> [v1: ] + ori v1, v1, L787 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [913] (set! f0-56 (l.f v1-302)) [v1: ] -> [] + lui v1, L786 ;; [914] (set! v1-303 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [915] (set! f1-10 (l.f v1-303)) [v1: ] -> [] + lui v1, L748 ;; [916] (set! v1-304 L748) [] -> [v1: ] + ori v1, v1, L748 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [917] (set! f2-5 (l.f v1-304)) [v1: ] -> [] + lwu v1, 108(s6) ;; [918] (set! v1-305 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f3, 1300(v1) ;; [919] (set! f3-3 (l.f (+ v1-305 1300))) [v1: control-info ] -> [] + mul.s f2, f2, f3 ;; [920] (set! f2-6 (*.s f2-5 f3-3)) [] -> [] + min.s f1, f1, f2 ;; [921] (set! f1-11 (min.s f1-10 f2-6)) [] -> [] + max.s f22, f0, f1 ;; [922] (set! f22-0 (max.s f0-56 f1-11)) [] -> [] + lui v1, L787 ;; [923] (set! v1-306 L787) [] -> [v1: ] + ori v1, v1, L787 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [924] (set! f0-57 (l.f v1-306)) [v1: ] -> [] + lui v1, L786 ;; [925] (set! v1-307 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [926] (set! f1-12 (l.f v1-307)) [v1: ] -> [] + lui v1, L765 ;; [927] (set! v1-308 L765) [] -> [v1: ] + ori v1, v1, L765 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [928] (set! f2-7 (l.f v1-308)) [v1: ] -> [] + lwu v1, 108(s6) ;; [929] (set! v1-309 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f3, 1304(v1) ;; [930] (set! f3-4 (l.f (+ v1-309 1304))) [v1: control-info ] -> [] + mul.s f2, f2, f3 ;; [931] (set! f2-8 (*.s f2-7 f3-4)) [] -> [] + min.s f1, f1, f2 ;; [932] (set! f1-13 (min.s f1-12 f2-8)) [] -> [] + max.s f24, f0, f1 ;; [933] (set! f24-0 (max.s f0-57 f1-13)) [] -> [] + lw t9, seek(s7) ;; [934] (set! t9-59 seek) [] -> [t9: (function float float float float) ] + mfc1 a0, f30 ;; [935] (set! a0-144 (fpr->gpr f30-0)) [] -> [a0: float ] + mtc1 f0, r0 ;; [936] (set! f0-58 0) [] -> [] + lui v1, L786 ;; [937] (set! v1-310 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [938] (set! f1-14 (l.f v1-310)) [v1: ] -> [] + lui v1, L759 ;; [939] (set! v1-311 L759) [] -> [v1: ] + ori v1, v1, L759 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [940] (set! f2-9 (l.f v1-311)) [v1: ] -> [] + lui v1, L783 ;; [941] (set! v1-312 L783) [] -> [v1: ] + ori v1, v1, L783 + addu v1, fp, v1 + lwc1 f3, 0(v1) ;; [942] (set! f3-5 (l.f v1-312)) [v1: ] -> [] + lwu v1, 108(s6) ;; [943] (set! v1-313 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f4, 528(v1) ;; [944] (set! f4-1 (l.f (+ v1-313 528))) [v1: control-info ] -> [] + add.s f3, f3, f4 ;; [945] (set! f3-6 (+.s f3-5 f4-1)) [] -> [] + mul.s f2, f2, f3 ;; [946] (set! f2-10 (*.s f2-9 f3-6)) [] -> [] + min.s f1, f1, f2 ;; [947] (set! f1-15 (min.s f1-14 f2-10)) [] -> [] + max.s f0, f0, f1 ;; [948] (set! f0-59 (max.s f0-58 f1-15)) [] -> [] + mfc1 a1, f0 ;; [949] (set! a1-52 (fpr->gpr f0-59)) [] -> [a1: float ] + lui v1, L748 ;; [950] (set! v1-314 L748) [] -> [v1: ] + ori v1, v1, L748 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [951] (set! f0-60 (l.f v1-314)) [v1: ] -> [] + lw v1, *display*(s7) ;; [952] (set! v1-315 *display*) [] -> [v1: display ] + lwc1 f1, 904(v1) ;; [953] (set! f1-16 (l.f (+ v1-315 904))) [v1: display ] -> [] + mul.s f0, f0, f1 ;; [954] (set! f0-61 (*.s f0-60 f1-16)) [] -> [] + mfc1 a2, f0 ;; [955] (set! a2-21 (fpr->gpr f0-61)) [] -> [a2: float ] + jalr ra, t9 ;; [956] (call! a0-144 a1-52 a2-21) + ;; [a0: float a1: float a2: float t9: (function float float float float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f30, v0 ;; [957] (set! f30-0 (gpr->fpr v0-59)) [v0: float ] -> [] + lwu v1, 120(s6) ;; [958] (set! v1-316 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 36(v1) ;; [959] (set! v1-317 (l.wu (+ v1-316 36))) [v1: joint-control ] -> [v1: effect-control ] + lui a0, L752 ;; [960] (set! a0-145 L752) [] -> [a0: ] + ori a0, a0, L752 + addu a0, fp, a0 + lwc1 f0, 0(a0) ;; [961] (set! f0-62 (l.f a0-145)) [a0: ] -> [] + c.lt.s f0, f30 ;; [962] (b! (>=.s f0-62 f30-0) L499 (nop!)) [] -> [] + bc1f L499 + sll r0, r0, 0 + +B122: + addiu a0, r0, 3 ;; [963] (set! a0-146 3) [] -> [a0: ] + beq r0, r0, L500 ;; [964] (b! #t L500 (nop!)) [] -> [] + sll r0, r0, 0 + +B123: +L499: + addiu a0, r0, 0 ;; [965] (set! a0-146 0) [] -> [a0: ] +B124: +L500: + sw a0, 16(v1) ;; [966] (s.w! (+ v1-317 16) a0-146) [v1: effect-control a0: int ] -> [] + or v1, r0, r0 ;; [967] (set! v1-318 0) [] -> [v1: ] + sub.s f0, f22, f28 ;; [968] (set! f0-63 (-.s f22-0 f28-2)) [] -> [] + abs.s f0, f0 ;; [969] (set! f0-64 (abs.s f0-63)) [] -> [] + lw t9, seek(s7) ;; [970] (set! t9-60 seek) [] -> [t9: (function float float float float) ] + mfc1 a0, f28 ;; [971] (set! a0-147 (fpr->gpr f28-2)) [] -> [a0: float ] + mfc1 a1, f22 ;; [972] (set! a1-53 (fpr->gpr f22-0)) [] -> [a1: float ] + lui v1, L761 ;; [973] (set! v1-319 L761) [] -> [v1: ] + ori v1, v1, L761 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [974] (set! f1-17 (l.f v1-319)) [v1: ] -> [] + lui v1, L766 ;; [975] (set! v1-320 L766) [] -> [v1: ] + ori v1, v1, L766 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [976] (set! f2-11 (l.f v1-320)) [v1: ] -> [] + lui v1, L753 ;; [977] (set! v1-321 L753) [] -> [v1: ] + ori v1, v1, L753 + addu v1, fp, v1 + lwc1 f3, 0(v1) ;; [978] (set! f3-7 (l.f v1-321)) [v1: ] -> [] + mul.s f0, f3, f0 ;; [979] (set! f0-65 (*.s f3-7 f0-64)) [] -> [] + min.s f0, f2, f0 ;; [980] (set! f0-66 (min.s f2-11 f0-65)) [] -> [] + max.s f0, f1, f0 ;; [981] (set! f0-67 (max.s f1-17 f0-66)) [] -> [] + mfc1 a2, f0 ;; [982] (set! a2-22 (fpr->gpr f0-67)) [] -> [a2: float ] + jalr ra, t9 ;; [983] (call! a0-147 a1-53 a2-22) + ;; [a0: float a1: float a2: float t9: (function float float float float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f28, v0 ;; [984] (set! f28-2 (gpr->fpr v0-60)) [v0: float ] -> [] + mfc1 v1, f28 ;; [985] (set! v1-322 (fpr->gpr f28-2)) [] -> [v1: float ] + sub.s f0, f24, f26 ;; [986] (set! f0-68 (-.s f24-0 f26-1)) [] -> [] + abs.s f0, f0 ;; [987] (set! f0-69 (abs.s f0-68)) [] -> [] + lw t9, seek(s7) ;; [988] (set! t9-61 seek) [] -> [t9: (function float float float float) ] + mfc1 a0, f26 ;; [989] (set! a0-148 (fpr->gpr f26-1)) [] -> [a0: float ] + mfc1 a1, f24 ;; [990] (set! a1-54 (fpr->gpr f24-0)) [] -> [a1: float ] + lui v1, L761 ;; [991] (set! v1-323 L761) [] -> [v1: ] + ori v1, v1, L761 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [992] (set! f1-18 (l.f v1-323)) [v1: ] -> [] + lui v1, L766 ;; [993] (set! v1-324 L766) [] -> [v1: ] + ori v1, v1, L766 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [994] (set! f2-12 (l.f v1-324)) [v1: ] -> [] + lui v1, L753 ;; [995] (set! v1-325 L753) [] -> [v1: ] + ori v1, v1, L753 + addu v1, fp, v1 + lwc1 f3, 0(v1) ;; [996] (set! f3-8 (l.f v1-325)) [v1: ] -> [] + mul.s f0, f3, f0 ;; [997] (set! f0-70 (*.s f3-8 f0-69)) [] -> [] + min.s f0, f2, f0 ;; [998] (set! f0-71 (min.s f2-12 f0-70)) [] -> [] + max.s f0, f1, f0 ;; [999] (set! f0-72 (max.s f1-18 f0-71)) [] -> [] + mfc1 a2, f0 ;; [1000] (set! a2-23 (fpr->gpr f0-72)) [] -> [a2: float ] + jalr ra, t9 ;; [1001] (call! a0-148 a1-54 a2-23) + ;; [a0: float a1: float a2: float t9: (function float float float float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f26, v0 ;; [1002] (set! f26-1 (gpr->fpr v0-61)) [v0: float ] -> [] + mfc1 v1, f26 ;; [1003] (set! v1-326 (fpr->gpr f26-1)) [] -> [v1: float ] + mtc1 f0, r0 ;; [1004] (set! f0-73 0) [] -> [] + c.lt.s f28, f0 ;; [1005] (b! (<.s f28-2 f0-73) L501 (nop!)) [] -> [] + bc1t L501 + sll r0, r0, 0 + +B125: + lwu v1, 120(s6) ;; [1006] (set! v1-327 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [1007] (set! v1-328 (l.wu (+ v1-327 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu v1, v1, 48 ;; [1008] (set! v1-329 (+ v1-328 48)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + abs.s f0, f28 ;; [1009] (set! f0-74 (abs.s f28-2)) [] -> [] + swc1 f0, 8(v1) ;; [1010] (s.f! (+ v1-329 8) f0-74) [v1: joint-control-channel ] -> [] + lw a0, *TARGET-bank*(s7) ;; [1011] (set! a0-149 *TARGET-bank*) [] -> [a0: target-bank ] + lwc1 f0, 212(a0) ;; [1012] (set! f0-75 (l.f (+ a0-149 212))) [a0: target-bank ] -> [] + swc1 f0, 36(v1) ;; [1013] (s.f! (+ v1-329 36) f0-75) [v1: joint-control-channel ] -> [] + lwu a0, 116(s6) ;; [1014] (set! a0-150 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [1015] (set! a0-151 (l.wu (+ a0-150 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 124(a0) ;; [1016] (set! a0-152 (l.wu (+ a0-151 124))) [a0: art-group ] -> [a0: art-element ] + sw a0, 12(v1) ;; [1017] (s.w! (+ v1-329 12) a0-152) [v1: joint-control-channel a0: art-element ] -> [] + lwu v1, 120(s6) ;; [1018] (set! v1-330 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [1019] (set! v1-331 (l.wu (+ v1-330 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu v1, v1, 192 ;; [1020] (set! v1-332 (+ v1-331 192)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + abs.s f0, f28 ;; [1021] (set! f0-76 (abs.s f28-2)) [] -> [] + swc1 f0, 8(v1) ;; [1022] (s.f! (+ v1-332 8) f0-76) [v1: joint-control-channel ] -> [] + lw a0, *TARGET-bank*(s7) ;; [1023] (set! a0-153 *TARGET-bank*) [] -> [a0: target-bank ] + lwc1 f0, 228(a0) ;; [1024] (set! f0-77 (l.f (+ a0-153 228))) [a0: target-bank ] -> [] + swc1 f0, 36(v1) ;; [1025] (s.f! (+ v1-332 36) f0-77) [v1: joint-control-channel ] -> [] + lwu a0, 116(s6) ;; [1026] (set! a0-154 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [1027] (set! a0-155 (l.wu (+ a0-154 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 104(a0) ;; [1028] (set! a0-156 (l.wu (+ a0-155 104))) [a0: art-group ] -> [a0: art-element ] + sw a0, 12(v1) ;; [1029] (s.w! (+ v1-332 12) a0-156) [v1: joint-control-channel a0: art-element ] -> [] + beq r0, r0, L502 ;; [1030] (b! #t L502 (nop!)) [] -> [] + sll r0, r0, 0 + +B126: +L501: + lwu v1, 120(s6) ;; [1031] (set! v1-333 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [1032] (set! v1-334 (l.wu (+ v1-333 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu v1, v1, 48 ;; [1033] (set! v1-335 (+ v1-334 48)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + abs.s f0, f28 ;; [1034] (set! f0-78 (abs.s f28-2)) [] -> [] + swc1 f0, 8(v1) ;; [1035] (s.f! (+ v1-335 8) f0-78) [v1: joint-control-channel ] -> [] + lw a0, *TARGET-bank*(s7) ;; [1036] (set! a0-157 *TARGET-bank*) [] -> [a0: target-bank ] + lwc1 f0, 216(a0) ;; [1037] (set! f0-79 (l.f (+ a0-157 216))) [a0: target-bank ] -> [] + swc1 f0, 36(v1) ;; [1038] (s.f! (+ v1-335 36) f0-79) [v1: joint-control-channel ] -> [] + lwu a0, 116(s6) ;; [1039] (set! a0-158 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [1040] (set! a0-159 (l.wu (+ a0-158 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 128(a0) ;; [1041] (set! a0-160 (l.wu (+ a0-159 128))) [a0: art-group ] -> [a0: art-element ] + sw a0, 12(v1) ;; [1042] (s.w! (+ v1-335 12) a0-160) [v1: joint-control-channel a0: art-element ] -> [] + lwu v1, 120(s6) ;; [1043] (set! v1-336 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [1044] (set! v1-337 (l.wu (+ v1-336 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu v1, v1, 192 ;; [1045] (set! v1-338 (+ v1-337 192)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + abs.s f0, f28 ;; [1046] (set! f0-80 (abs.s f28-2)) [] -> [] + swc1 f0, 8(v1) ;; [1047] (s.f! (+ v1-338 8) f0-80) [v1: joint-control-channel ] -> [] + lw a0, *TARGET-bank*(s7) ;; [1048] (set! a0-161 *TARGET-bank*) [] -> [a0: target-bank ] + lwc1 f0, 232(a0) ;; [1049] (set! f0-81 (l.f (+ a0-161 232))) [a0: target-bank ] -> [] + swc1 f0, 36(v1) ;; [1050] (s.f! (+ v1-338 36) f0-81) [v1: joint-control-channel ] -> [] + lwu a0, 116(s6) ;; [1051] (set! a0-162 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [1052] (set! a0-163 (l.wu (+ a0-162 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 108(a0) ;; [1053] (set! a0-164 (l.wu (+ a0-163 108))) [a0: art-group ] -> [a0: art-element ] + sw a0, 12(v1) ;; [1054] (s.w! (+ v1-338 12) a0-164) [v1: joint-control-channel a0: art-element ] -> [] +B127: +L502: + mtc1 f0, r0 ;; [1055] (set! f0-82 0) [] -> [] + c.lt.s f26, f0 ;; [1056] (b! (<.s f26-1 f0-82) L503 (nop!)) [] -> [] + bc1t L503 + sll r0, r0, 0 + +B128: + lwu v1, 120(s6) ;; [1057] (set! v1-339 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [1058] (set! v1-340 (l.wu (+ v1-339 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu v1, v1, 96 ;; [1059] (set! v1-341 (+ v1-340 96)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + abs.s f0, f26 ;; [1060] (set! f0-83 (abs.s f26-1)) [] -> [] + swc1 f0, 8(v1) ;; [1061] (s.f! (+ v1-341 8) f0-83) [v1: joint-control-channel ] -> [] + lw a0, *TARGET-bank*(s7) ;; [1062] (set! a0-165 *TARGET-bank*) [] -> [a0: target-bank ] + lwc1 f0, 220(a0) ;; [1063] (set! f0-84 (l.f (+ a0-165 220))) [a0: target-bank ] -> [] + swc1 f0, 36(v1) ;; [1064] (s.f! (+ v1-341 36) f0-84) [v1: joint-control-channel ] -> [] + lwu a0, 116(s6) ;; [1065] (set! a0-166 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [1066] (set! a0-167 (l.wu (+ a0-166 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 132(a0) ;; [1067] (set! a0-168 (l.wu (+ a0-167 132))) [a0: art-group ] -> [a0: art-element ] + sw a0, 12(v1) ;; [1068] (s.w! (+ v1-341 12) a0-168) [v1: joint-control-channel a0: art-element ] -> [] + lwu v1, 120(s6) ;; [1069] (set! v1-342 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [1070] (set! v1-343 (l.wu (+ v1-342 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu v1, v1, 240 ;; [1071] (set! v1-344 (+ v1-343 240)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + abs.s f0, f26 ;; [1072] (set! f0-85 (abs.s f26-1)) [] -> [] + swc1 f0, 8(v1) ;; [1073] (s.f! (+ v1-344 8) f0-85) [v1: joint-control-channel ] -> [] + lw a0, *TARGET-bank*(s7) ;; [1074] (set! a0-169 *TARGET-bank*) [] -> [a0: target-bank ] + lwc1 f0, 236(a0) ;; [1075] (set! f0-86 (l.f (+ a0-169 236))) [a0: target-bank ] -> [] + swc1 f0, 36(v1) ;; [1076] (s.f! (+ v1-344 36) f0-86) [v1: joint-control-channel ] -> [] + lwu a0, 116(s6) ;; [1077] (set! a0-170 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [1078] (set! a0-171 (l.wu (+ a0-170 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 112(a0) ;; [1079] (set! a0-172 (l.wu (+ a0-171 112))) [a0: art-group ] -> [a0: art-element ] + sw a0, 12(v1) ;; [1080] (s.w! (+ v1-344 12) a0-172) [v1: joint-control-channel a0: art-element ] -> [] + beq r0, r0, L504 ;; [1081] (b! #t L504 (nop!)) [] -> [] + sll r0, r0, 0 + +B129: +L503: + lwu v1, 120(s6) ;; [1082] (set! v1-345 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [1083] (set! v1-346 (l.wu (+ v1-345 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu v1, v1, 96 ;; [1084] (set! v1-347 (+ v1-346 96)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + abs.s f0, f26 ;; [1085] (set! f0-87 (abs.s f26-1)) [] -> [] + swc1 f0, 8(v1) ;; [1086] (s.f! (+ v1-347 8) f0-87) [v1: joint-control-channel ] -> [] + lw a0, *TARGET-bank*(s7) ;; [1087] (set! a0-173 *TARGET-bank*) [] -> [a0: target-bank ] + lwc1 f0, 220(a0) ;; [1088] (set! f0-88 (l.f (+ a0-173 220))) [a0: target-bank ] -> [] + swc1 f0, 36(v1) ;; [1089] (s.f! (+ v1-347 36) f0-88) [v1: joint-control-channel ] -> [] + lwu a0, 116(s6) ;; [1090] (set! a0-174 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [1091] (set! a0-175 (l.wu (+ a0-174 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 136(a0) ;; [1092] (set! a0-176 (l.wu (+ a0-175 136))) [a0: art-group ] -> [a0: art-element ] + sw a0, 12(v1) ;; [1093] (s.w! (+ v1-347 12) a0-176) [v1: joint-control-channel a0: art-element ] -> [] + lwu v1, 120(s6) ;; [1094] (set! v1-348 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [1095] (set! v1-349 (l.wu (+ v1-348 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu v1, v1, 240 ;; [1096] (set! v1-350 (+ v1-349 240)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + abs.s f0, f26 ;; [1097] (set! f0-89 (abs.s f26-1)) [] -> [] + swc1 f0, 8(v1) ;; [1098] (s.f! (+ v1-350 8) f0-89) [v1: joint-control-channel ] -> [] + lw a0, *TARGET-bank*(s7) ;; [1099] (set! a0-177 *TARGET-bank*) [] -> [a0: target-bank ] + lwc1 f0, 236(a0) ;; [1100] (set! f0-90 (l.f (+ a0-177 236))) [a0: target-bank ] -> [] + swc1 f0, 36(v1) ;; [1101] (s.f! (+ v1-350 36) f0-90) [v1: joint-control-channel ] -> [] + lwu a0, 116(s6) ;; [1102] (set! a0-178 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [1103] (set! a0-179 (l.wu (+ a0-178 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 116(a0) ;; [1104] (set! a0-180 (l.wu (+ a0-179 116))) [a0: art-group ] -> [a0: art-element ] + sw a0, 12(v1) ;; [1105] (s.w! (+ v1-350 12) a0-180) [v1: joint-control-channel a0: art-element ] -> [] +B130: +L504: + lwu v1, 120(s6) ;; [1106] (set! v1-351 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [1107] (set! v1-352 (l.wu (+ v1-351 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu v1, v1, 288 ;; [1108] (set! v1-353 (+ v1-352 288)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + swc1 f30, 8(v1) ;; [1109] (s.f! (+ v1-353 8) f30-0) [v1: joint-control-channel ] -> [] + mfc1 v1, f30 ;; [1110] (set! v1-354 (fpr->gpr f30-0)) [] -> [v1: float ] + lwu a0, 120(s6) ;; [1111] (set! a0-181 (l.wu (+ self 120))) [s6: target ] -> [a0: joint-control ] + lwu v1, -4(a0) ;; [1112] (set! v1-355 (l.wu (+ a0-181 -4))) + ;; [a0: joint-control ] -> [v1: ] + lwu t9, 52(v1) ;; [1113] (set! t9-62 (l.wu (+ v1-355 52))) + ;; [v1: ] -> [t9: ] + jalr ra, t9 ;; [1114] (call! a0-181) + ;; [a0: joint-control t9: ] -> [v0: float ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [1115] (set! v1-356 v0-62) [v0: float ] -> [v1: float ] + mtc1 f1, v1 ;; [1116] (set! f1-19 (gpr->fpr v1-356)) [v1: float ] -> [] + lwu v1, 108(s6) ;; [1117] (set! v1-357 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 528(v1) ;; [1118] (set! f0-91 (l.f (+ v1-357 528))) [v1: control-info ] -> [] + lui v1, L789 ;; [1119] (set! v1-358 L789) [] -> [v1: ] + ori v1, v1, L789 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [1120] (set! f2-13 (l.f v1-358)) [v1: ] -> [] + lw v1, *TARGET-bank*(s7) ;; [1121] (set! v1-359 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f3, 204(v1) ;; [1122] (set! f3-9 (l.f (+ v1-359 204))) [v1: target-bank ] -> [] + div.s f1, f1, f3 ;; [1123] (set! f1-20 (/.s f1-19 f3-9)) [] -> [] + mul.s f1, f2, f1 ;; [1124] (set! f1-21 (*.s f2-13 f1-20)) [] -> [] + div.s f0, f0, f1 ;; [1125] (set! f0-92 (/.s f0-91 f1-21)) [] -> [] + lwu v1, 120(s6) ;; [1126] (set! v1-360 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [1127] (set! v1-361 (l.wu (+ v1-360 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [1128] (set! a0-182 (+ v1-361 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + swc1 f0, 24(a0) ;; [1129] (s.f! (+ a0-182 24) f0-92) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [1130] (set! t9-63 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [1131] (set! a1-55 #f) [] -> [a1: '#f ] + lw a2, num-func-loop!(s7) ;; [1132] (set! a2-24 num-func-loop!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [1133] (call! a0-182 a1-55 a2-24) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [1134] (set! v1-362 v0-63) [v0: int ] -> [v1: int ] + lwu v1, 120(s6) ;; [1135] (set! v1-363 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [1136] (set! v1-364 (l.wu (+ v1-363 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu a0, v1, 48 ;; [1137] (set! a0-183 (+ v1-364 48)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + mtc1 f0, r0 ;; [1138] (set! f0-93 0) [] -> [] + swc1 f0, 24(a0) ;; [1139] (s.f! (+ a0-183 24) f0-93) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [1140] (set! t9-64 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [1141] (set! a1-56 #f) [] -> [a1: '#f ] + lw a2, num-func-chan(s7) ;; [1142] (set! a2-25 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [1143] (call! a0-183 a1-56 a2-25) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [1144] (set! v1-365 v0-64) [v0: int ] -> [v1: int ] + lwu v1, 120(s6) ;; [1145] (set! v1-366 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [1146] (set! v1-367 (l.wu (+ v1-366 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu a0, v1, 96 ;; [1147] (set! a0-184 (+ v1-367 96)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + mtc1 f0, r0 ;; [1148] (set! f0-94 0) [] -> [] + swc1 f0, 24(a0) ;; [1149] (s.f! (+ a0-184 24) f0-94) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [1150] (set! t9-65 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [1151] (set! a1-57 #f) [] -> [a1: '#f ] + lw a2, num-func-chan(s7) ;; [1152] (set! a2-26 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [1153] (call! a0-184 a1-57 a2-26) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [1154] (set! v1-368 v0-65) [v0: int ] -> [v1: int ] + lwu v1, 120(s6) ;; [1155] (set! v1-369 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [1156] (set! v1-370 (l.wu (+ v1-369 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu a0, v1, 144 ;; [1157] (set! a0-185 (+ v1-370 144)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + mtc1 f0, r0 ;; [1158] (set! f0-95 0) [] -> [] + swc1 f0, 24(a0) ;; [1159] (s.f! (+ a0-185 24) f0-95) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [1160] (set! t9-66 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [1161] (set! a1-58 #f) [] -> [a1: '#f ] + lw a2, num-func-chan(s7) ;; [1162] (set! a2-27 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [1163] (call! a0-185 a1-58 a2-27) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [1164] (set! v1-371 v0-66) [v0: int ] -> [v1: int ] + lwu v1, 120(s6) ;; [1165] (set! v1-372 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [1166] (set! v1-373 (l.wu (+ v1-372 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu a0, v1, 192 ;; [1167] (set! a0-186 (+ v1-373 192)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + mtc1 f0, r0 ;; [1168] (set! f0-96 0) [] -> [] + swc1 f0, 24(a0) ;; [1169] (s.f! (+ a0-186 24) f0-96) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [1170] (set! t9-67 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [1171] (set! a1-59 #f) [] -> [a1: '#f ] + lw a2, num-func-chan(s7) ;; [1172] (set! a2-28 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [1173] (call! a0-186 a1-59 a2-28) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [1174] (set! v1-374 v0-67) [v0: int ] -> [v1: int ] + lwu v1, 120(s6) ;; [1175] (set! v1-375 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [1176] (set! v1-376 (l.wu (+ v1-375 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu a0, v1, 240 ;; [1177] (set! a0-187 (+ v1-376 240)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + mtc1 f0, r0 ;; [1178] (set! f0-97 0) [] -> [] + swc1 f0, 24(a0) ;; [1179] (s.f! (+ a0-187 24) f0-97) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [1180] (set! t9-68 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [1181] (set! a1-60 #f) [] -> [a1: '#f ] + lw a2, num-func-chan(s7) ;; [1182] (set! a2-29 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [1183] (call! a0-187 a1-60 a2-29) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [1184] (set! v1-377 v0-68) [v0: int ] -> [v1: int ] + beql s7, gp, L505 ;; [1185] (bl! (not gp-0) L505 (no-delay!)) [gp: symbol ] -> [] +B131: + or v1, gp, r0 ;; [1186] (set! v1-378 gp-0) [gp: symbol ] -> [v1: symbol ] + +B132: + lwu v1, 120(s6) ;; [1187] (set! v1-379 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [1188] (set! v1-380 (l.wu (+ v1-379 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu v1, r0, v1 ;; [1189] (set! v1-381 (+ v1-380 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + lwu a0, 120(s6) ;; [1190] (set! a0-188 (l.wu (+ self 120))) [s6: target ] -> [a0: joint-control ] + daddiu a0, a0, 44 ;; [1191] (set! a0-189 (+ a0-188 44)) + ;; [a0: joint-control ] -> [a0: (inline-array joint-control-channel) ] + dsubu a0, v1, a0 ;; [1192] (set! v1-378 (!= v1-381 a0-189)) + ;; [v1: joint-control-channel a0: (inline-array joint-control-channel) ] -> [v1: symbol ] + daddiu v1, s7, 8 + movz v1, s7, a0 +B133: +L505: + beq s7, v1, L506 ;; [1193] (b! (not v1-378) L506 (set! v1-382 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B134: + lw t9, ja-blend-eval(s7) ;; [1194] (set! t9-69 ja-blend-eval) [] -> [t9: (function int :behavior process-drawable) ] + jalr ra, t9 ;; [1195] (call!) [t9: (function int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [1196] (set! v1-383 v0-69) [v0: int ] -> [v1: int ] +B135: +L506: + lwu s6, 44(s6) ;; [1197] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + beq r0, r0, L498 ;; [1198] (b! #t L498 (nop!)) [] -> [] + sll r0, r0, 0 + +B136: + or v0, s7, r0 ;; [1199] (set! v0-70 #f) [] -> [v0: ] + ld ra, 0(sp) + ld fp, 8(sp) + lwc1 f30, 64(sp) + lwc1 f28, 60(sp) + lwc1 f26, 56(sp) + lwc1 f24, 52(sp) + lwc1 f22, 48(sp) + lq gp, 32(sp) + lq s5, 16(sp) + jr ra + daddiu sp, sp, 80 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-walk) + () + (let ((f28-0 0.0) + (f30-0 (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -16384.0 (-> self control unknown-float01)))))) + (gp-0 #f) + ) + (cond + ((ja-group? (-> self draw art-group data 33)) + (set! f30-0 1.0) + (ja-channel-push! 7 (seconds 0.05)) + ) + ((ja-group? (-> self draw art-group data 69)) + (ja-channel-push! 7 (seconds 0.075)) + (set! f30-0 1.0) + ) + ((ja-group? (-> self draw art-group data 51)) + (let ((f30-1 (fmax 0.8 (fmin 1.0 (* 0.000048828126 (-> self control unknown-float01)))))) + (cond + ((and (rand-vu-percent? (the-as float 0.3)) (< 20480.0 (-> self control unknown-float01))) + (ja-no-eval :group! (-> self draw art-group data 53) + :num! (seek! (ja-aframe (the-as float 29.0) 0) f30-1) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 29.0) 0) f30-1)) + ) + (ja-no-eval :group! (-> self draw art-group data 55) :num! (seek! max f30-1) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-1)) + ) + ) + (else + (ja-no-eval :group! (-> self draw art-group data 52) + :num! (seek! (ja-aframe (the-as float 29.0) 0) f30-1) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 29.0) 0) f30-1)) + ) + (ja-no-eval :group! (-> self draw art-group data 54) :num! (seek! max f30-1) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-1)) + ) + ) + ) + ) + (ja-channel-push! 7 (seconds 0.05)) + (set! f30-0 1.0) + (set! f28-0 30.0) + ) + (else + (let ((v1-108 (ja-group))) + (cond + ((or (= v1-108 (-> self draw art-group data 59)) (= v1-108 (-> self draw art-group data 60))) + (set! f30-0 1.0) + (set! f28-0 30.0) + (ja-channel-push! 7 (seconds 0.15)) + ) + ((let ((v1-116 (ja-group))) + (or (= v1-116 (-> self draw art-group data 84)) (= v1-116 (-> self draw art-group data 85))) + ) + (set! f30-0 1.0) + (set! f28-0 26.0) + (ja-channel-push! 7 (seconds 0.1)) + ) + ((and (ja-group? (-> self draw art-group data 23)) (= (-> self skel root-channel 0) (-> self skel channel))) + (set! f28-0 (ja-aframe-num 0)) + ) + ((ja-group? (-> self draw art-group data 102)) + (set! f28-0 (ja-aframe-num 0)) + (ja-channel-push! 7 (seconds 0.1)) + ) + ((ja-group? (-> self draw art-group data 89)) + (set! f28-0 (ja-aframe-num 0)) + (ja-channel-push! 7 (seconds 0.05)) + ) + ((let ((v1-146 (ja-group))) + (and (or (or (= v1-146 (-> self draw art-group data 38)) + (= v1-146 (-> self draw art-group data 71)) + (= v1-146 (-> self draw art-group data 58)) + (= v1-146 (-> self draw art-group data 62)) + (= v1-146 (-> self draw art-group data 65)) + (= v1-146 (-> self draw art-group data 68)) + ) + (and (ja-group? (-> self draw art-group data 34)) (< 30.0 (ja-aframe-num 0))) + ) + (< 12288.0 (-> self control unknown-float01)) + ) + ) + (let ((s5-4 (ja-group)) + (f30-2 (-> self control ground-impact-vel)) + ) + (case (ja-group) + (((-> self draw art-group data 71) (-> self draw art-group data 58)) + (ja-channel-push! 1 (seconds 0.05)) + ) + (else + (ja-channel-set! 1) + ) + ) + (cond + ((< (the-as float (if (= s5-4 (-> self draw art-group data 34)) + 77824.0 + 102400.0 + ) + ) + f30-2 + ) + (ja-no-eval :group! (-> self draw art-group data 28) + :num! (seek! (ja-aframe (the-as float 3.0) 0) 1.00001) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 3.0) 0) 1.00001)) + ) + ) + ((< (the-as float (if (= s5-4 (-> self draw art-group data 34)) + 61440.0 + 102400.0 + ) + ) + f30-2 + ) + (ja-no-eval :group! (-> self draw art-group data 28) + :num! (seek! (ja-aframe (the-as float 3.0) 0) 1.00001) + :frame-num (ja-aframe (the-as float -1.0) 0) + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 3.0) 0) 1.00001)) + ) + ) + (else + (ja-no-eval :group! (-> self draw art-group data 29) + :num! (seek! (ja-aframe (the-as float 4.0) 0) 1.00001) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 4.0) 0) 1.00001)) + ) + ) + ) + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max (/ (* (fmax 20480.0 (-> self control unknown-float01)) (-> *display* seconds-per-frame)) + (/ (-> *TARGET-bank* run-up-cycle-dist) (-> *TARGET-bank* run-cycle-length)) + ) + ) + ) + ) + (set! f28-0 30.0) + (set! f30-0 1.0) + (ja-channel-set! 7) + ) + ((ja-group? (-> self draw art-group data 34)) + (ja-channel-push! 7 (seconds 0.05)) + (set! gp-0 #t) + ) + ((ja-group? (-> self draw art-group data 78)) + (ja-channel-push! 7 (seconds 0.15)) + ) + (else + (ja-channel-push! 7 (seconds 0.05)) + ) + ) + ) + ) + ) + (set! (-> self skel root-channel 3 command) 'push) + (set! (-> self skel root-channel 6 command) 'stack) + (ja :group! (-> self draw art-group data 23)) + (let ((f28-1 (ja-aframe f28-0 0))) + (ja :group! (-> self draw art-group data 23) + :num! (identity f28-1) + :frame-interp 0.0 + :dist (-> *TARGET-bank* walk-cycle-dist) + ) + (ja :chan 1 + :group! (-> self draw art-group data 25) + :num! (identity f28-1) + :frame-interp 0.0 + :dist (-> *TARGET-bank* walk-down-cycle-dist) + ) + (ja :chan 2 + :group! (-> self draw art-group data 27) + :num! (identity f28-1) + :frame-interp 0.0 + :dist (-> *TARGET-bank* walk-side-cycle-dist) + ) + (ja :chan 4 + :group! (-> self draw art-group data 20) + :num! (identity f28-1) + :frame-interp 0.0 + :dist (-> *TARGET-bank* run-down-cycle-dist) + ) + (ja :chan 5 + :group! (-> self draw art-group data 22) + :num! (identity f28-1) + :frame-interp 0.0 + :dist (-> *TARGET-bank* run-side-cycle-dist) + ) + (ja :chan 3 + :group! (-> self draw art-group data 18) + :num! (identity f28-1) + :frame-interp 0.0 + :dist (-> *TARGET-bank* run-cycle-dist) + ) + ) + (let ((f28-2 0.0) + (f26-1 0.0) + ) + (loop + (let ((f22-0 (fmax -1.0 (fmin 1.0 (* 2.0 (-> self control unknown-float61))))) + (f24-0 (fmax -1.0 (fmin 1.0 (* 1.6 (-> self control unknown-float62))))) + ) + (set! f30-0 (seek + f30-0 + (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -16384.0 (-> self control unknown-float01))))) + (* 2.0 (-> *display* seconds-per-frame)) + ) + ) + (let ((v1-317 (-> self skel effect))) + (set! (-> v1-317 channel-offset) (if (< 0.5 f30-0) + 3 + 0 + ) + ) + ) + 0 + (let ((f0-64 (fabs (- f22-0 f28-2)))) + (set! f28-2 (seek f28-2 f22-0 (fmax 0.05 (fmin 0.2 (* 0.25 f0-64))))) + ) + (let ((f0-69 (fabs (- f24-0 f26-1)))) + (set! f26-1 (seek f26-1 f24-0 (fmax 0.05 (fmin 0.2 (* 0.25 f0-69))))) + ) + ) + (cond + ((>= f28-2 0.0) + (ja :chan 1 + :group! (-> self draw art-group data 24) + :frame-interp (fabs f28-2) + :dist (-> *TARGET-bank* walk-up-cycle-dist) + ) + (ja :chan 4 + :group! (-> self draw art-group data 19) + :frame-interp (fabs f28-2) + :dist (-> *TARGET-bank* run-up-cycle-dist) + ) + ) + (else + (ja :chan 1 + :group! (-> self draw art-group data 25) + :frame-interp (fabs f28-2) + :dist (-> *TARGET-bank* walk-down-cycle-dist) + ) + (ja :chan 4 + :group! (-> self draw art-group data 20) + :frame-interp (fabs f28-2) + :dist (-> *TARGET-bank* run-down-cycle-dist) + ) + ) + ) + (cond + ((>= f26-1 0.0) + (ja :chan 2 + :group! (-> self draw art-group data 26) + :frame-interp (fabs f26-1) + :dist (-> *TARGET-bank* walk-side-cycle-dist) + ) + (ja :chan 5 + :group! (-> self draw art-group data 21) + :frame-interp (fabs f26-1) + :dist (-> *TARGET-bank* run-side-cycle-dist) + ) + ) + (else + (ja :chan 2 + :group! (-> self draw art-group data 27) + :frame-interp (fabs f26-1) + :dist (-> *TARGET-bank* walk-side-cycle-dist) + ) + (ja :chan 5 + :group! (-> self draw art-group data 22) + :frame-interp (fabs f26-1) + :dist (-> *TARGET-bank* run-side-cycle-dist) + ) + ) + ) + (set! (-> self skel root-channel 6 frame-interp) f30-0) + (let* ((f1-19 (current-cycle-distance (-> self skel))) + (f0-92 (/ (-> self control unknown-float01) (* 60.0 (/ f1-19 (-> *TARGET-bank* run-cycle-length))))) + ) + (ja :num! (loop! f0-92)) + ) + (ja :chan 1 :num! (chan 0)) + (ja :chan 2 :num! (chan 0)) + (ja :chan 3 :num! (chan 0)) + (ja :chan 4 :num! (chan 0)) + (ja :chan 5 :num! (chan 0)) + (if (and gp-0 (!= (-> self skel root-channel 0) (-> self skel channel))) + (ja-blend-eval) + ) + (suspend) + ) + ) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (trans target-walk) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 1 ra? 1 ep? 1 +;; Warnings: +;; Used lq/sq + +;; s6-0: target +L507: + daddiu sp, sp, -16 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 +B0: + lwu t9, 196(s6) ;; [ 0] (set! t9-0 (l.wu (+ self 196))) + ;; [s6: target ] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 1] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + addiu v1, r0, 1 ;; [ 2] (set! v1-0 1) [] -> [v1: ] + lwu a0, 108(s6) ;; [ 3] (set! a0-0 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 260(a0) ;; [ 4] (set! a0-1 (l.wu (+ a0-0 260))) [a0: control-info ] -> [a0: pat-surface ] + dsll32 a0, a0, 20 ;; [ 5] (set! a0-2 (sll a0-1 52)) [a0: pat-surface ] -> [a0: ( << 52) ] + dsrl32 a0, a0, 26 ;; [ 6] (set! a0-3 (srl a0-2 58)) [a0: ( << 52) ] -> [a0: pat-material ] + bne a0, v1, L508 ;; [ 7] (b! (!= a0-3 v1-0) L508 (set! v1-1 #f)) + ;; [v1: a0: pat-material ] -> [v1: '#f ] + or v1, s7, r0 + +B1: + lw t9, target-effect-exit(s7);; [ 8] (set! t9-1 target-effect-exit) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 9] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, remove-exit(s7) ;; [ 10] (set! t9-2 remove-exit) [] -> [t9: (function stack-frame :behavior process) ] + jalr ra, t9 ;; [ 11] (call!) [t9: (function stack-frame :behavior process) ] -> [v0: stack-frame ] + sll v0, ra, 0 + + lw t9, enter-state(s7) ;; [ 12] (set! t9-3 enter-state) [] -> [t9: ] + lw v1, target-ice-walk(s7);; [ 13] (set! v1-2 target-ice-walk) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 14] (s.w! (+ self 72) v1-2) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 15] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 16] (set! v1-3 v0-3) [v0: object ] -> [v1: object ] +B2: +L508: + lwu v1, 108(s6) ;; [ 17] (set! v1-4 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 18] (set! v1-5 (l.wu (+ v1-4 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 19] (set! v1-6 (l.w (+ v1-5 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 20] (set! v1-7 (sll v1-6 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 21] (set! a0-4 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 22] (set! v1-8 (+ v1-7 a0-4)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 23] (set! v1-9 (l.wu (+ v1-8 4))) [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 24] (set! v1-10 (l.wu (+ v1-9 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 25] (set! a0-5 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 26] (set! a0-6 (l.wu (+ a0-5 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 27] (set! a0-7 (l.w (+ a0-6 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 28] (set! a0-8 (sll a0-7 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 29] (set! a1-0 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 30] (set! a0-9 (+ a0-8 a1-0)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 31] (set! a0-10 (l.wu (+ a0-9 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 60(a0) ;; [ 32] (set! a0-11 (l.wu (+ a0-10 60))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 33] (set! v1-11 (logior v1-10 a0-11)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 34] (set! a0-12 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 35] (set! a0-13 (l.wu (+ a0-12 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 36] (set! a0-14 (l.w (+ a0-13 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 37] (set! a0-15 (sll a0-14 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 38] (set! a1-1 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 39] (set! a0-16 (+ a0-15 a1-1)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 40] (set! a0-17 (l.wu (+ a0-16 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 64(a0) ;; [ 41] (set! a0-18 (l.wu (+ a0-17 64))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 42] (set! v1-12 (logior v1-11 a0-18)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + andi v1, v1, 3072 ;; [ 43] (set! v1-13 (logand v1-12 3072)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L510 ;; [ 44] (bl! (zero? v1-13) L510 (no-delay!)) [v1: pad-buttons ] -> [] +B3: + or v1, s7, r0 ;; [ 45] (set! v1-14 #f) [] -> [v1: '#f ] + +B4: + lw v1, *display*(s7) ;; [ 46] (set! v1-15 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 47] (set! v1-16 (l.d (+ v1-15 780))) [v1: display ] -> [v1: time-frame ] + lw a0, *TARGET-bank*(s7) ;; [ 48] (set! a0-19 *TARGET-bank*) [] -> [a0: target-bank ] + ld a0, 100(a0) ;; [ 49] (set! a0-20 (l.d (+ a0-19 100))) [a0: target-bank ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [ 50] (set! v1-17 (- v1-16 a0-20)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + lwu a0, 108(s6) ;; [ 51] (set! a0-21 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + ld a0, 1660(a0) ;; [ 52] (set! a0-22 (l.d (+ a0-21 1660))) [a0: control-info ] -> [a0: time-frame ] + slt v1, v1, a0 ;; [ 53] (set! a0-23 (>=.si v1-17 a0-22)) [v1: time-frame a0: time-frame ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L510 ;; [ 54] (bl! (not a0-23) L510 (no-delay!)) [a0: symbol ] -> [] +B5: + or v1, a0, r0 ;; [ 55] (set! v1-14 a0-23) [a0: symbol ] -> [v1: symbol ] + +B6: + lwu v1, 108(s6) ;; [ 56] (set! v1-18 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 57] (set! v1-19 (l.wu (+ v1-18 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 58] (set! v1-20 (l.w (+ v1-19 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 59] (set! v1-21 (sll v1-20 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 60] (set! a0-24 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 61] (set! v1-22 (+ v1-21 a0-24)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 62] (set! v1-23 (l.wu (+ v1-22 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwc1 f0, 72(v1) ;; [ 63] (set! f0-0 (l.f (+ v1-23 72))) [v1: cpad-info ] -> [] + mtc1 f1, r0 ;; [ 64] (set! f1-0 0) [] -> [] + c.eq.s f0, f1 ;; [ 65] (b! (!=.s f0-0 f1-0) L509 (set! v1-24 #t)) [] -> [v1: symbol ] + bc1f L509 + daddiu v1, s7, 8 + +B7: + or v1, s7, r0 ;; [ 66] (set! v1-24 #f) [] -> [v1: '#f ] +B8: +L509: + beql s7, v1, L510 ;; [ 67] (bl! (not v1-24) L510 (no-delay!)) [v1: symbol ] -> [] +B9: + or v1, v1, r0 ;; [ 68] (set! v1-14 v1-24) [v1: symbol ] -> [v1: symbol ] + +B10: + lw t9, can-wheel?(s7) ;; [ 69] (set! t9-4 can-wheel?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [ 70] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 71] (set! v1-14 v0-4) [v0: symbol ] -> [v1: symbol ] +B11: +L510: + beq s7, v1, L511 ;; [ 72] (b! (not v1-14) L511 (set! v1-25 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B12: + lw t9, enter-state(s7) ;; [ 73] (set! t9-5 enter-state) [] -> [t9: ] + lw v1, target-wheel(s7) ;; [ 74] (set! v1-26 target-wheel) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 75] (s.w! (+ self 72) v1-26) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 76] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 77] (set! v1-27 v0-5) [v0: object ] -> [v1: object ] +B13: +L511: + lwu v1, 108(s6) ;; [ 78] (set! v1-28 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 79] (set! v1-29 (l.wu (+ v1-28 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 80] (set! v1-30 (l.w (+ v1-29 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 81] (set! v1-31 (sll v1-30 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 82] (set! a0-25 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 83] (set! v1-32 (+ v1-31 a0-25)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 84] (set! v1-33 (l.wu (+ v1-32 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 40(v1) ;; [ 85] (set! v1-34 (l.wu (+ v1-33 40))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 3072 ;; [ 86] (set! v1-35 (logand v1-34 3072)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L512 ;; [ 87] (bl! (zero? v1-35) L512 (no-delay!)) [v1: pad-buttons ] -> [] +B14: + or v1, s7, r0 ;; [ 88] (set! v1-36 #f) [] -> [v1: '#f ] + +B15: + lw t9, can-duck?(s7) ;; [ 89] (set! t9-6 can-duck?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [ 90] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 91] (set! v1-36 v0-6) [v0: symbol ] -> [v1: symbol ] +B16: +L512: + beq s7, v1, L513 ;; [ 92] (b! (not v1-36) L513 (set! v1-37 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B17: + lw t9, target-effect-exit(s7);; [ 93] (set! t9-7 target-effect-exit) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 94] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, remove-exit(s7) ;; [ 95] (set! t9-8 remove-exit) [] -> [t9: (function stack-frame :behavior process) ] + jalr ra, t9 ;; [ 96] (call!) [t9: (function stack-frame :behavior process) ] -> [v0: stack-frame ] + sll v0, ra, 0 + + lw t9, enter-state(s7) ;; [ 97] (set! t9-9 enter-state) [] -> [t9: ] + lw v1, target-duck-walk(s7);; [ 98] (set! v1-38 target-duck-walk) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 99] (s.w! (+ self 72) v1-38) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [100] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [101] (set! v1-39 v0-9) [v0: object ] -> [v1: object ] +B18: +L513: + lw t9, move-legs?(s7) ;; [102] (set! t9-10 move-legs?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [103] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + bne s7, v0, L514 ;; [104] (b! (truthy v0-10) L514 (set! v1-40 #f)) [v0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B19: + lw t9, target-effect-exit(s7);; [105] (set! t9-11 target-effect-exit) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [106] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, remove-exit(s7) ;; [107] (set! t9-12 remove-exit) [] -> [t9: (function stack-frame :behavior process) ] + jalr ra, t9 ;; [108] (call!) [t9: (function stack-frame :behavior process) ] -> [v0: stack-frame ] + sll v0, ra, 0 + + lw t9, enter-state(s7) ;; [109] (set! t9-13 enter-state) [] -> [t9: ] + lw v1, target-stance(s7) ;; [110] (set! v1-41 target-stance) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [111] (s.w! (+ self 72) v1-41) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [112] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [113] (set! v1-42 v0-13) [v0: object ] -> [v1: object ] +B20: +L514: + lwu v1, 108(s6) ;; [114] (set! v1-43 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [115] (set! v1-44 (l.wu (+ v1-43 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [116] (set! v1-45 (l.w (+ v1-44 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [117] (set! v1-46 (sll v1-45 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [118] (set! a0-26 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [119] (set! v1-47 (+ v1-46 a0-26)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [120] (set! v1-48 (l.wu (+ v1-47 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [121] (set! v1-49 (l.wu (+ v1-48 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [122] (set! a0-27 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [123] (set! a0-28 (l.wu (+ a0-27 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [124] (set! a0-29 (l.w (+ a0-28 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [125] (set! a0-30 (sll a0-29 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [126] (set! a1-2 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [127] (set! a0-31 (+ a0-30 a1-2)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [128] (set! a0-32 (l.wu (+ a0-31 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 60(a0) ;; [129] (set! a0-33 (l.wu (+ a0-32 60))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [130] (set! v1-50 (logior v1-49 a0-33)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [131] (set! a0-34 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [132] (set! a0-35 (l.wu (+ a0-34 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [133] (set! a0-36 (l.w (+ a0-35 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [134] (set! a0-37 (sll a0-36 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [135] (set! a1-3 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [136] (set! a0-38 (+ a0-37 a1-3)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [137] (set! a0-39 (l.wu (+ a0-38 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 64(a0) ;; [138] (set! a0-40 (l.wu (+ a0-39 64))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [139] (set! v1-51 (logior v1-50 a0-40)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + andi v1, v1, 16384 ;; [140] (set! v1-52 (logand v1-51 #x4000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L515 ;; [141] (bl! (zero? v1-52) L515 (no-delay!)) [v1: pad-buttons ] -> [] +B21: + or v1, s7, r0 ;; [142] (set! v1-53 #f) [] -> [v1: '#f ] + +B22: + lw t9, can-jump?(s7) ;; [143] (set! t9-14 can-jump?) [] -> [t9: (function symbol symbol :behavior target) ] + or a0, s7, r0 ;; [144] (set! a0-41 #f) [] -> [a0: '#f ] + jalr ra, t9 ;; [145] (call! a0-41) + ;; [a0: '#f t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [146] (set! v1-53 v0-14) [v0: symbol ] -> [v1: symbol ] +B23: +L515: + beq s7, v1, L516 ;; [147] (b! (not v1-53) L516 (set! v1-54 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B24: + lw t9, enter-state(s7) ;; [148] (set! t9-15 enter-state) [] -> [t9: ] + lw v1, *TARGET-bank*(s7) ;; [149] (set! v1-55 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 4(v1) ;; [150] (set! f0-1 (l.f (+ v1-55 4))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [151] (set! a0-42 (fpr->gpr f0-1)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [152] (set! v1-56 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 8(v1) ;; [153] (set! f0-2 (l.f (+ v1-56 8))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [154] (set! a1-4 (fpr->gpr f0-2)) [] -> [a1: meters ] + or a2, s7, r0 ;; [155] (set! a2-0 #f) [] -> [a2: '#f ] + lw v1, target-jump(s7) ;; [156] (set! v1-57 target-jump) [] -> [v1: (state float float surface target) ] + sw v1, 72(s6) ;; [157] (s.w! (+ self 72) v1-57) + ;; [v1: (state float float surface target) s6: target ] -> [] + jalr ra, t9 ;; [158] (call! a0-42 a1-4 a2-0) + ;; [a0: meters a1: meters a2: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [159] (set! v1-58 v0-15) [v0: object ] -> [v1: object ] +B25: +L516: + lwu v1, 108(s6) ;; [160] (set! v1-59 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [161] (set! v1-60 (l.wu (+ v1-59 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [162] (set! v1-61 (l.w (+ v1-60 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [163] (set! v1-62 (sll v1-61 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [164] (set! a0-43 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [165] (set! v1-63 (+ v1-62 a0-43)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [166] (set! v1-64 (l.wu (+ v1-63 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [167] (set! v1-65 (l.wu (+ v1-64 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [168] (set! a0-44 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [169] (set! a0-45 (l.wu (+ a0-44 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [170] (set! a0-46 (l.w (+ a0-45 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [171] (set! a0-47 (sll a0-46 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [172] (set! a1-5 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [173] (set! a0-48 (+ a0-47 a1-5)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [174] (set! a0-49 (l.wu (+ a0-48 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 60(a0) ;; [175] (set! a0-50 (l.wu (+ a0-49 60))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [176] (set! v1-66 (logior v1-65 a0-50)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [177] (set! a0-51 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [178] (set! a0-52 (l.wu (+ a0-51 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [179] (set! a0-53 (l.w (+ a0-52 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [180] (set! a0-54 (sll a0-53 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [181] (set! a1-6 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [182] (set! a0-55 (+ a0-54 a1-6)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [183] (set! a0-56 (l.wu (+ a0-55 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 64(a0) ;; [184] (set! a0-57 (l.wu (+ a0-56 64))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [185] (set! v1-67 (logior v1-66 a0-57)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + andi v1, v1, 8192 ;; [186] (set! v1-68 (logand v1-67 8192)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L517 ;; [187] (bl! (zero? v1-68) L517 (no-delay!)) [v1: pad-buttons ] -> [] +B26: + or v1, s7, r0 ;; [188] (set! v1-69 #f) [] -> [v1: '#f ] + +B27: + lw t9, can-feet?(s7) ;; [189] (set! t9-16 can-feet?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [190] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [191] (set! v1-69 v0-16) [v0: symbol ] -> [v1: symbol ] +B28: +L517: + beq s7, v1, L518 ;; [192] (b! (not v1-69) L518 (set! v1-70 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B29: + lw t9, enter-state(s7) ;; [193] (set! t9-17 enter-state) [] -> [t9: ] + lw v1, target-attack(s7) ;; [194] (set! v1-71 target-attack) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [195] (s.w! (+ self 72) v1-71) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [196] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [197] (set! v1-72 v0-17) [v0: object ] -> [v1: object ] +B30: +L518: + lw t9, can-hands?(s7) ;; [198] (set! t9-18 can-hands?) [] -> [t9: (function symbol symbol :behavior target) ] + daddiu a0, s7, #t ;; [199] (set! a0-58 #t) [] -> [a0: symbol ] + jalr ra, t9 ;; [200] (call! a0-58) + ;; [a0: symbol t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L519 ;; [201] (b! (not v0-18) L519 (set! v1-73 #f)) [v0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B31: + lw t9, enter-state(s7) ;; [202] (set! t9-19 enter-state) [] -> [t9: ] + lw v1, target-running-attack(s7);; [203] (set! v1-74 target-running-attack) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [204] (s.w! (+ self 72) v1-74) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [205] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [206] (set! v1-75 v0-19) [v0: object ] -> [v1: object ] +B32: +L519: + lw t9, turn-around?(s7) ;; [207] (set! t9-20 turn-around?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [208] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + beql s7, v0, L520 ;; [209] (bl! (not v0-20) L520 (no-delay!)) [v0: symbol ] -> [] +B33: + or v1, v0, r0 ;; [210] (set! v1-76 v0-20) [v0: symbol ] -> [v1: symbol ] + +B34: + lw v1, *display*(s7) ;; [211] (set! v1-77 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [212] (set! v1-78 (l.d (+ v1-77 780))) [v1: display ] -> [v1: time-frame ] + ld a0, 164(s6) ;; [213] (set! a0-59 (l.d (+ self 164))) [s6: target ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [214] (set! v1-79 (- v1-78 a0-59)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + slti a0, v1, 90 ;; [215] (set! v1-76 (>=.si v1-79 90)) [v1: time-frame ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 +B35: +L520: + beq s7, v1, L521 ;; [216] (b! (not v1-76) L521 (set! v1-80 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B36: + lwu v1, 108(s6) ;; [217] (set! v1-81 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + daddiu v1, v1, 60 ;; [218] (set! v1-82 (+ v1-81 60)) [v1: control-info ] -> [v1: vector ] + lwu a0, 108(s6) ;; [219] (set! a0-60 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lw a0, 2112(a0) ;; [220] (set! a0-61 (l.w (+ a0-60 2112))) [a0: control-info ] -> [a0: int ] + dsll a0, a0, 4 ;; [221] (set! a0-62 (sll a0-61 4)) [a0: int ] -> [a0: ] + daddiu a0, a0, 1852 ;; [222] (set! a0-63 (+ a0-62 1852)) + ;; [a0: ] -> [a0: ] + lwu a1, 108(s6) ;; [223] (set! a1-7 (l.wu (+ self 108))) [s6: target ] -> [a1: control-info ] + daddu a0, a0, a1 ;; [224] (set! a0-64 (+ a0-63 a1-7)) + ;; [a0: a1: control-info ] -> [a0: vector ] + lq a0, 0(a0) ;; [225] (set! a0-65 (l.q a0-64)) [a0: vector ] -> [a0: uint128 ] + sq a0, 0(v1) ;; [226] (s.q! v1-82 a0-65) [v1: vector a0: uint128 ] -> [] + lui v1, L786 ;; [227] (set! v1-83 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [228] (set! f0-3 (l.f v1-83)) [v1: ] -> [] + lwu v1, 108(s6) ;; [229] (set! v1-84 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 72(v1) ;; [230] (s.f! (+ v1-84 72) f0-3) [v1: control-info ] -> [] + lw t9, enter-state(s7) ;; [231] (set! t9-21 enter-state) [] -> [t9: ] + lw v1, target-turn-around(s7);; [232] (set! v1-85 target-turn-around) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [233] (s.w! (+ self 72) v1-85) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [234] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [235] (set! v1-86 v0-21) [v0: object ] -> [v1: object ] +B37: +L521: + lw t9, slide-down-test(s7);; [236] (set! t9-22 slide-down-test) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [237] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, fall-test(s7) ;; [238] (set! t9-23 fall-test) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [239] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + ld ra, 0(sp) + ld fp, 8(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (trans target-walk) + () + ((-> self state-hook)) + (when (= (-> self control ground-pat material) (pat-material ice)) + (target-effect-exit) + (remove-exit) + (go target-ice-walk) + ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons l1 r1) + ) + (and (>= (- (-> *display* base-frame-counter) (-> *TARGET-bank* wheel-timeout)) (-> self control unknown-dword30)) + (and (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) (can-wheel?)) + ) + ) + (go target-wheel) + ) + (when (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) + (target-effect-exit) + (remove-exit) + (go target-duck-walk) + ) + (when (not (move-legs?)) + (target-effect-exit) + (remove-exit) + (go target-stance) + ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) + ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons circle) + ) + (can-feet?) + ) + (go target-attack) + ) + (if (can-hands? #t) + (go target-running-attack) + ) + (when (and (turn-around?) (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.3))) + (set! (-> self control transv quad) + (-> self control unknown-vector-array10 (-> self control unknown-int10) quad) + ) + (set! (-> self control transv w) 1.0) + (go target-turn-around) + ) + (slide-down-test) + (fall-test) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (exit target-walk) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 + +L522: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lw t9, target-effect-exit(s7);; [ 0] (set! t9-0 target-effect-exit) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 1] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, target-state-hook-exit(s7);; [ 2] (set! t9-1 target-state-hook-exit) + ;; [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 3] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler (exit target-walk) () (target-effect-exit) (target-state-hook-exit) (none)) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-walk) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x00, fp? 0 ra? 0 ep? 1 +;; Warnings: +;; INFO: Return type mismatch surface vs none. + +;; s6-0: target +B0: +L523: + lw v1, *display*(s7) ;; [ 0] (set! v1-0 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 1] (set! v1-1 (l.d (+ v1-0 780))) [v1: display ] -> [v1: time-frame ] + sd v1, 164(s6) ;; [ 2] (s.d! (+ self 164) v1-1) [v1: time-frame s6: target ] -> [] + lw v0, *walk-mods*(s7) ;; [ 3] (set! v0-0 *walk-mods*) [] -> [v0: surface ] + lwu v1, 108(s6) ;; [ 4] (set! v1-2 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + sw v0, 656(v1) ;; [ 5] (s.w! (+ v1-2 656) v0-0) [v0: surface v1: control-info ] -> [] + jr ra + daddu sp, sp, r0 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-walk) + () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self control unknown-surface00) *walk-mods*) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-stance) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x90, fp? 1 ra? 1 ep? 1 + ;stack_vars: 48 bytes at 16 + ;gprs: gp s5 s4 s3 + ;fprs: f30 f28 f26 +;; v1-3: art-joint-anim v1-206: art-joint-anim v1-243: art-joint-anim s4-2: int +;; s5-0: int s6-0: target gp-0: ground-tween-info f0-57: float +;; f30-1: float +L524: + daddiu sp, sp, -144 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s3, 64(sp) + sq s4, 80(sp) + sq s5, 96(sp) + sq gp, 112(sp) + swc1 f26, 128(sp) + swc1 f28, 132(sp) + swc1 f30, 136(sp) +B0: + addiu s5, r0, 22 ;; [ 0] (set! s5-0 22) [] -> [s5: ] + lw v1, ground-tween-info(s7);; [ 1] (set! v1-0 ground-tween-info) [] -> [v1: ] + lwu t9, 16(v1) ;; [ 2] (set! t9-0 (l.wu (+ v1-0 16))) + ;; [v1: ] -> [t9: (function symbol type ground-tween-info) ] + daddiu a0, sp, 16 ;; [ 3] (set! a0-0 (+ sp-0 16)) [sp: ] -> [a0: ground-tween-info ] + lw a1, ground-tween-info(s7);; [ 4] (set! a1-0 ground-tween-info) [] -> [a1: ] + jalr ra, t9 ;; [ 5] (call! a0-0 a1-0) + ;; [a0: ground-tween-info a1: t9: (function symbol type ground-tween-info) ] -> [v0: ground-tween-info ] + sll v0, ra, 0 + + or gp, v0, r0 ;; [ 6] (set! gp-0 v0-0) [v0: ground-tween-info ] -> [gp: ground-tween-info ] + lwu v1, 120(s6) ;; [ 7] (set! v1-1 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 8] (set! v1-2 (l.w (+ v1-1 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 9] (b! (<=0.si v1-2) L525 (set! v1-3 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L525 + or v1, s7, r0 + +B1: + lwu v1, 120(s6) ;; [ 10] (set! v1-4 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 11] (set! v1-5 (l.wu (+ v1-4 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 12] (set! v1-3 (l.wu (+ v1-5 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B2: +L525: + lwu a0, 116(s6) ;; [ 13] (set! a0-1 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 14] (set! a0-2 (l.wu (+ a0-1 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 384(a0) ;; [ 15] (set! a0-3 (l.wu (+ a0-2 384))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [ 16] (set! a1-1 (= v1-3 a0-3)) [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L526 ;; [ 17] (bl! (truthy a1-1) L526 (no-delay!)) [a1: symbol ] -> [] +B3: + or a0, a1, r0 ;; [ 18] (set! a0-4 a1-1) [a1: symbol ] -> [a0: symbol ] + +B4: + lwu a0, 116(s6) ;; [ 19] (set! a0-5 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 20] (set! a0-6 (l.wu (+ a0-5 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 388(a0) ;; [ 21] (set! a0-7 (l.wu (+ a0-6 388))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 22] (set! a0-4 (= v1-3 a0-7)) [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 +B5: +L526: + beq s7, a0, L527 ;; [ 23] (b! (not a0-4) L527 (set! v1-6 #f)) [a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B6: + addiu s5, r0, 45 ;; [ 24] (set! s5-0 45) [] -> [s5: ] + or v1, s5, r0 ;; [ 25] (set! v1-7 s5-0) [s5: ] -> [v1: ] + beq r0, r0, L569 ;; [ 26] (b! #t L569 (nop!)) [] -> [] + sll r0, r0, 0 + +B7: +L527: + lwu v1, 120(s6) ;; [ 27] (set! v1-8 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 28] (set! v1-9 (l.w (+ v1-8 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 29] (b! (<=0.si v1-9) L528 (set! v1-10 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L528 + or v1, s7, r0 + +B8: + lwu v1, 120(s6) ;; [ 30] (set! v1-11 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 31] (set! v1-12 (l.wu (+ v1-11 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 32] (set! v1-10 (l.wu (+ v1-12 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B9: +L528: + lwu a0, 116(s6) ;; [ 33] (set! a0-8 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 34] (set! a0-9 (l.wu (+ a0-8 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 312(a0) ;; [ 35] (set! a0-10 (l.wu (+ a0-9 312))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 36] (set! a0-11 (= v1-10 a0-10)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L530 ;; [ 37] (b! (not a0-11) L530 (set! v1-13 #f)) [a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B10: + lwu v1, 120(s6) ;; [ 38] (set! v1-14 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 39] (set! v1-15 (l.wu (+ v1-14 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 40] (set! a0-12 (+ v1-15 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 41] (set! v1-16 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 42] (set! v1-17 (l.wu (+ v1-16 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 316(v1) ;; [ 43] (set! v1-18 (l.wu (+ v1-17 316))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [ 44] (s.w! (+ a0-12 12) v1-18) [v1: art-element a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [ 45] (set! v1-19 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 46] (set! v1-20 (l.wu (+ v1-19 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 316(v1) ;; [ 47] (set! v1-21 (l.wu (+ v1-20 316))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 48] (set! (the-as art-joint-anim v1-22) (l.wu (+ v1-21 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 49] (set! v1-23 (l.h (+ v1-22 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 50] (set! v1-24 (+ v1-23 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 51] (set! f0-0 (gpr->fpr v1-24)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 52] (set! f0-1 (i2f f0-0)) [] -> [] + swc1 f0, 24(a0) ;; [ 53] (s.f! (+ a0-12 24) f0-1) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [ 54] (set! v1-25 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 55] (set! f0-2 (l.f v1-25)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [ 56] (s.f! (+ a0-12 28) f0-2) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [ 57] (set! f0-3 0) [] -> [] + swc1 f0, 16(a0) ;; [ 58] (s.f! (+ a0-12 16) f0-3) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [ 59] (set! t9-1 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [ 60] (set! v1-26 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 61] (set! v1-27 (l.wu (+ v1-26 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 316(v1) ;; [ 62] (set! a1-2 (l.wu (+ v1-27 316))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [ 63] (set! a2-0 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 64] (call! a0-12 a1-2 a2-0) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 65] (set! v1-28 v0-1) [v0: int ] -> [v1: int ] +B11: +L529: + lwu s6, 44(s6) ;; [ 66] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [ 67] (set! v1-29 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 68] (set! v1-30 (l.wu (+ v1-29 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 69] (set! a0-13 (+ v1-30 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [ 70] (set! v1-31 (l.wu (+ a0-13 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 71] (set! v1-32 (l.wu (+ v1-31 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 72] (set! v1-33 (l.h (+ v1-32 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 73] (set! v1-34 (+ v1-33 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 74] (set! f0-4 (gpr->fpr v1-34)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 75] (set! f0-5 (i2f f0-4)) [] -> [] + swc1 f0, 24(a0) ;; [ 76] (s.f! (+ a0-13 24) f0-5) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [ 77] (set! v1-35 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 78] (set! f0-6 (l.f v1-35)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [ 79] (s.f! (+ a0-13 28) f0-6) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 80] (set! t9-2 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [ 81] (set! a1-3 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [ 82] (set! a2-1 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 83] (call! a0-13 a1-3 a2-1) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 84] (set! v1-36 v0-2) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [ 85] (set! t9-3 ja-done?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 86] (set! a0-14 0) [] -> [a0: ] + jalr ra, t9 ;; [ 87] (call! a0-14) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L529 ;; [ 88] (b! (not v0-3) L529 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B12: + or v1, s7, r0 ;; [ 89] (set! v1-37 #f) [] -> [v1: '#f ] + beq r0, r0, L569 ;; [ 90] (b! #t L569 (nop!)) [] -> [] + sll r0, r0, 0 + +B13: +L530: + lwu v1, 120(s6) ;; [ 91] (set! v1-38 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 92] (set! v1-39 (l.w (+ v1-38 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 93] (b! (<=0.si v1-39) L531 (set! v1-40 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L531 + or v1, s7, r0 + +B14: + lwu v1, 120(s6) ;; [ 94] (set! v1-41 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 95] (set! v1-42 (l.wu (+ v1-41 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 96] (set! v1-40 (l.wu (+ v1-42 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B15: +L531: + lwu a0, 116(s6) ;; [ 97] (set! a0-15 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 98] (set! a0-16 (l.wu (+ a0-15 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 232(a0) ;; [ 99] (set! a0-17 (l.wu (+ a0-16 232))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [100] (set! a0-18 (= v1-40 a0-17)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L536 ;; [101] (b! (not a0-18) L536 (set! v1-43 #f)) [a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B16: + lw t9, rand-vu-percent?(s7);; [102] (set! t9-4 rand-vu-percent?) [] -> [t9: (function float symbol) ] + lui v1, L751 ;; [103] (set! v1-44 L751) [] -> [v1: ] + ori v1, v1, L751 + addu v1, fp, v1 + lw a0, 0(v1) ;; [104] (set! a0-19 (l.w v1-44)) [v1: ] -> [a0: int ] + jalr ra, t9 ;; [105] (call! a0-19) [a0: int t9: (function float symbol) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L533 ;; [106] (b! (not v0-4) L533 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B17: + lwu v1, 120(s6) ;; [107] (set! v1-45 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [108] (set! v1-46 (l.wu (+ v1-45 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [109] (set! a0-20 (+ v1-46 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [110] (set! v1-47 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [111] (set! v1-48 (l.wu (+ v1-47 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 240(v1) ;; [112] (set! v1-49 (l.wu (+ v1-48 240))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [113] (s.w! (+ a0-20 12) v1-49) [v1: art-element a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [114] (set! v1-50 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [115] (set! v1-51 (l.wu (+ v1-50 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 240(v1) ;; [116] (set! v1-52 (l.wu (+ v1-51 240))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [117] (set! (the-as art-joint-anim v1-53) (l.wu (+ v1-52 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [118] (set! v1-54 (l.h (+ v1-53 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [119] (set! v1-55 (+ v1-54 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [120] (set! f0-7 (gpr->fpr v1-55)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [121] (set! f0-8 (i2f f0-7)) [] -> [] + swc1 f0, 24(a0) ;; [122] (s.f! (+ a0-20 24) f0-8) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [123] (set! v1-56 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [124] (set! f0-9 (l.f v1-56)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [125] (s.f! (+ a0-20 28) f0-9) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [126] (set! f0-10 0) [] -> [] + swc1 f0, 16(a0) ;; [127] (s.f! (+ a0-20 16) f0-10) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [128] (set! t9-5 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [129] (set! v1-57 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [130] (set! v1-58 (l.wu (+ v1-57 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 240(v1) ;; [131] (set! a1-4 (l.wu (+ v1-58 240))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [132] (set! a2-2 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [133] (call! a0-20 a1-4 a2-2) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [134] (set! v1-59 v0-5) [v0: int ] -> [v1: int ] +B18: +L532: + lwu s6, 44(s6) ;; [135] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [136] (set! v1-60 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [137] (set! v1-61 (l.wu (+ v1-60 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [138] (set! a0-21 (+ v1-61 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [139] (set! v1-62 (l.wu (+ a0-21 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [140] (set! v1-63 (l.wu (+ v1-62 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [141] (set! v1-64 (l.h (+ v1-63 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [142] (set! v1-65 (+ v1-64 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [143] (set! f0-11 (gpr->fpr v1-65)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [144] (set! f0-12 (i2f f0-11)) [] -> [] + swc1 f0, 24(a0) ;; [145] (s.f! (+ a0-21 24) f0-12) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [146] (set! v1-66 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [147] (set! f0-13 (l.f v1-66)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [148] (s.f! (+ a0-21 28) f0-13) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [149] (set! t9-6 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [150] (set! a1-5 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [151] (set! a2-3 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [152] (call! a0-21 a1-5 a2-3) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [153] (set! v1-67 v0-6) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [154] (set! t9-7 ja-done?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [155] (set! a0-22 0) [] -> [a0: ] + jalr ra, t9 ;; [156] (call! a0-22) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L532 ;; [157] (b! (not v0-7) L532 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B19: + or v1, s7, r0 ;; [158] (set! v1-68 #f) [] -> [v1: '#f ] + beq r0, r0, L535 ;; [159] (b! #t L535 (nop!)) [] -> [] + sll r0, r0, 0 + +B20: +L533: + lwu v1, 120(s6) ;; [160] (set! v1-69 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [161] (set! v1-70 (l.wu (+ v1-69 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [162] (set! a0-23 (+ v1-70 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [163] (set! v1-71 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [164] (set! v1-72 (l.wu (+ v1-71 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 236(v1) ;; [165] (set! v1-73 (l.wu (+ v1-72 236))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [166] (s.w! (+ a0-23 12) v1-73) [v1: art-element a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [167] (set! v1-74 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [168] (set! v1-75 (l.wu (+ v1-74 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 236(v1) ;; [169] (set! v1-76 (l.wu (+ v1-75 236))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [170] (set! (the-as art-joint-anim v1-77) (l.wu (+ v1-76 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [171] (set! v1-78 (l.h (+ v1-77 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [172] (set! v1-79 (+ v1-78 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [173] (set! f0-14 (gpr->fpr v1-79)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [174] (set! f0-15 (i2f f0-14)) [] -> [] + swc1 f0, 24(a0) ;; [175] (s.f! (+ a0-23 24) f0-15) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [176] (set! v1-80 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [177] (set! f0-16 (l.f v1-80)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [178] (s.f! (+ a0-23 28) f0-16) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [179] (set! f0-17 0) [] -> [] + swc1 f0, 16(a0) ;; [180] (s.f! (+ a0-23 16) f0-17) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [181] (set! t9-8 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [182] (set! v1-81 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [183] (set! v1-82 (l.wu (+ v1-81 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 236(v1) ;; [184] (set! a1-6 (l.wu (+ v1-82 236))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [185] (set! a2-4 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [186] (call! a0-23 a1-6 a2-4) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [187] (set! v1-83 v0-8) [v0: int ] -> [v1: int ] +B21: +L534: + lwu s6, 44(s6) ;; [188] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [189] (set! v1-84 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [190] (set! v1-85 (l.wu (+ v1-84 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [191] (set! a0-24 (+ v1-85 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [192] (set! v1-86 (l.wu (+ a0-24 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [193] (set! v1-87 (l.wu (+ v1-86 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [194] (set! v1-88 (l.h (+ v1-87 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [195] (set! v1-89 (+ v1-88 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [196] (set! f0-18 (gpr->fpr v1-89)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [197] (set! f0-19 (i2f f0-18)) [] -> [] + swc1 f0, 24(a0) ;; [198] (s.f! (+ a0-24 24) f0-19) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [199] (set! v1-90 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [200] (set! f0-20 (l.f v1-90)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [201] (s.f! (+ a0-24 28) f0-20) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [202] (set! t9-9 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [203] (set! a1-7 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [204] (set! a2-5 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [205] (call! a0-24 a1-7 a2-5) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [206] (set! v1-91 v0-9) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [207] (set! t9-10 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [208] (set! a0-25 0) [] -> [a0: ] + jalr ra, t9 ;; [209] (call! a0-25) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L534 ;; [210] (b! (not v0-10) L534 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B22: + or v1, s7, r0 ;; [211] (set! v1-92 #f) [] -> [v1: '#f ] +B23: +L535: + beq r0, r0, L569 ;; [212] (b! #t L569 (nop!)) [] -> [] + sll r0, r0, 0 + +B24: +L536: + lwu v1, 120(s6) ;; [213] (set! v1-93 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [214] (set! v1-94 (l.w (+ v1-93 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [215] (b! (<=0.si v1-94) L537 (set! v1-95 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L537 + or v1, s7, r0 + +B25: + lwu v1, 120(s6) ;; [216] (set! v1-96 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [217] (set! v1-97 (l.wu (+ v1-96 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [218] (set! v1-95 (l.wu (+ v1-97 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B26: +L537: + lwu a0, 116(s6) ;; [219] (set! a0-26 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [220] (set! a0-27 (l.wu (+ a0-26 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 340(a0) ;; [221] (set! a0-28 (l.wu (+ a0-27 340))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [222] (set! a0-29 (= v1-95 a0-28)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L539 ;; [223] (b! (not a0-29) L539 (set! v1-98 #f)) [a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B27: + lwu v1, 120(s6) ;; [224] (set! v1-99 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [225] (set! v1-100 (l.wu (+ v1-99 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [226] (set! a0-30 (+ v1-100 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [227] (set! v1-101 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [228] (set! v1-102 (l.wu (+ v1-101 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 344(v1) ;; [229] (set! v1-103 (l.wu (+ v1-102 344))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [230] (s.w! (+ a0-30 12) v1-103) [v1: art-element a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [231] (set! v1-104 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [232] (set! v1-105 (l.wu (+ v1-104 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 344(v1) ;; [233] (set! v1-106 (l.wu (+ v1-105 344))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [234] (set! (the-as art-joint-anim v1-107) (l.wu (+ v1-106 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [235] (set! v1-108 (l.h (+ v1-107 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [236] (set! v1-109 (+ v1-108 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [237] (set! f0-21 (gpr->fpr v1-109)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [238] (set! f0-22 (i2f f0-21)) [] -> [] + swc1 f0, 24(a0) ;; [239] (s.f! (+ a0-30 24) f0-22) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [240] (set! v1-110 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [241] (set! f0-23 (l.f v1-110)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [242] (s.f! (+ a0-30 28) f0-23) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [243] (set! f0-24 0) [] -> [] + swc1 f0, 16(a0) ;; [244] (s.f! (+ a0-30 16) f0-24) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [245] (set! t9-11 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [246] (set! v1-111 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [247] (set! v1-112 (l.wu (+ v1-111 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 344(v1) ;; [248] (set! a1-8 (l.wu (+ v1-112 344))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [249] (set! a2-6 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [250] (call! a0-30 a1-8 a2-6) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [251] (set! v1-113 v0-11) [v0: int ] -> [v1: int ] +B28: +L538: + lwu s6, 44(s6) ;; [252] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [253] (set! v1-114 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [254] (set! v1-115 (l.wu (+ v1-114 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [255] (set! a0-31 (+ v1-115 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [256] (set! v1-116 (l.wu (+ a0-31 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [257] (set! v1-117 (l.wu (+ v1-116 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [258] (set! v1-118 (l.h (+ v1-117 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [259] (set! v1-119 (+ v1-118 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [260] (set! f0-25 (gpr->fpr v1-119)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [261] (set! f0-26 (i2f f0-25)) [] -> [] + swc1 f0, 24(a0) ;; [262] (s.f! (+ a0-31 24) f0-26) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [263] (set! v1-120 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [264] (set! f0-27 (l.f v1-120)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [265] (s.f! (+ a0-31 28) f0-27) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [266] (set! t9-12 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [267] (set! a1-9 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [268] (set! a2-7 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [269] (call! a0-31 a1-9 a2-7) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [270] (set! v1-121 v0-12) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [271] (set! t9-13 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [272] (set! a0-32 0) [] -> [a0: ] + jalr ra, t9 ;; [273] (call! a0-32) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L538 ;; [274] (b! (not v0-13) L538 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B29: + or v1, s7, r0 ;; [275] (set! v1-122 #f) [] -> [v1: '#f ] + beq r0, r0, L569 ;; [276] (b! #t L569 (nop!)) [] -> [] + sll r0, r0, 0 + +B30: +L539: + lwu v1, 120(s6) ;; [277] (set! v1-123 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [278] (set! v1-124 (l.w (+ v1-123 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [279] (b! (<=0.si v1-124) L540 (set! v1-125 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L540 + or v1, s7, r0 + +B31: + lwu v1, 120(s6) ;; [280] (set! v1-126 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [281] (set! v1-127 (l.wu (+ v1-126 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [282] (set! v1-125 (l.wu (+ v1-127 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B32: +L540: + lwu a0, 116(s6) ;; [283] (set! a0-33 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [284] (set! a0-34 (l.wu (+ a0-33 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 364(a0) ;; [285] (set! a0-35 (l.wu (+ a0-34 364))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [286] (set! a0-36 (= v1-125 a0-35)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L542 ;; [287] (b! (not a0-36) L542 (set! v1-128 #f)) [a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B33: + lwu v1, 120(s6) ;; [288] (set! v1-129 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [289] (set! v1-130 (l.wu (+ v1-129 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [290] (set! a0-37 (+ v1-130 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [291] (set! v1-131 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [292] (set! v1-132 (l.wu (+ v1-131 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 368(v1) ;; [293] (set! v1-133 (l.wu (+ v1-132 368))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [294] (s.w! (+ a0-37 12) v1-133) [v1: art-element a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [295] (set! v1-134 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [296] (set! v1-135 (l.wu (+ v1-134 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 368(v1) ;; [297] (set! v1-136 (l.wu (+ v1-135 368))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [298] (set! (the-as art-joint-anim v1-137) (l.wu (+ v1-136 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [299] (set! v1-138 (l.h (+ v1-137 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [300] (set! v1-139 (+ v1-138 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [301] (set! f0-28 (gpr->fpr v1-139)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [302] (set! f0-29 (i2f f0-28)) [] -> [] + swc1 f0, 24(a0) ;; [303] (s.f! (+ a0-37 24) f0-29) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [304] (set! v1-140 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [305] (set! f0-30 (l.f v1-140)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [306] (s.f! (+ a0-37 28) f0-30) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [307] (set! f0-31 0) [] -> [] + swc1 f0, 16(a0) ;; [308] (s.f! (+ a0-37 16) f0-31) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [309] (set! t9-14 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [310] (set! v1-141 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [311] (set! v1-142 (l.wu (+ v1-141 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 368(v1) ;; [312] (set! a1-10 (l.wu (+ v1-142 368))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [313] (set! a2-8 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [314] (call! a0-37 a1-10 a2-8) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [315] (set! v1-143 v0-14) [v0: int ] -> [v1: int ] +B34: +L541: + lwu s6, 44(s6) ;; [316] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [317] (set! v1-144 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [318] (set! v1-145 (l.wu (+ v1-144 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [319] (set! a0-38 (+ v1-145 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [320] (set! v1-146 (l.wu (+ a0-38 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [321] (set! v1-147 (l.wu (+ v1-146 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [322] (set! v1-148 (l.h (+ v1-147 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [323] (set! v1-149 (+ v1-148 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [324] (set! f0-32 (gpr->fpr v1-149)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [325] (set! f0-33 (i2f f0-32)) [] -> [] + swc1 f0, 24(a0) ;; [326] (s.f! (+ a0-38 24) f0-33) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [327] (set! v1-150 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [328] (set! f0-34 (l.f v1-150)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [329] (s.f! (+ a0-38 28) f0-34) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [330] (set! t9-15 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [331] (set! a1-11 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [332] (set! a2-9 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [333] (call! a0-38 a1-11 a2-9) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [334] (set! v1-151 v0-15) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [335] (set! t9-16 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [336] (set! a0-39 0) [] -> [a0: ] + jalr ra, t9 ;; [337] (call! a0-39) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L541 ;; [338] (b! (not v0-16) L541 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B35: + or v1, s7, r0 ;; [339] (set! v1-152 #f) [] -> [v1: '#f ] + addiu s5, r0, 0 ;; [340] (set! s5-0 0) [] -> [s5: ] + or v1, s5, r0 ;; [341] (set! v1-153 s5-0) [s5: ] -> [v1: ] + beq r0, r0, L569 ;; [342] (b! #t L569 (nop!)) [] -> [] + sll r0, r0, 0 + +B36: +L542: + lwu v1, 120(s6) ;; [343] (set! v1-154 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [344] (set! v1-155 (l.w (+ v1-154 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [345] (b! (<=0.si v1-155) L543 (set! v1-156 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L543 + or v1, s7, r0 + +B37: + lwu v1, 120(s6) ;; [346] (set! v1-157 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [347] (set! v1-158 (l.wu (+ v1-157 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [348] (set! v1-156 (l.wu (+ v1-158 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B38: +L543: + lwu a0, 116(s6) ;; [349] (set! a0-40 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [350] (set! a0-41 (l.wu (+ a0-40 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 264(a0) ;; [351] (set! a0-42 (l.wu (+ a0-41 264))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [352] (set! a0-43 (= v1-156 a0-42)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L551 ;; [353] (b! (not a0-43) L551 (set! v1-159 #f)) [a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B39: + lwu v1, 108(s6) ;; [354] (set! v1-160 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 1720(v1) ;; [355] (set! f0-35 (l.f (+ v1-160 1720))) [v1: control-info ] -> [] + lwu v1, 108(s6) ;; [356] (set! v1-161 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 1724(v1) ;; [357] (s.f! (+ v1-161 1724) f0-35) [v1: control-info ] -> [] + lw v1, *walk-no-turn-mods*(s7);; [358] (set! v1-162 *walk-no-turn-mods*) [] -> [v1: surface ] + lwu a0, 108(s6) ;; [359] (set! a0-44 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sw v1, 656(a0) ;; [360] (s.w! (+ a0-44 656) v1-162) [v1: surface a0: control-info ] -> [] + lwu v1, 120(s6) ;; [361] (set! v1-163 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [362] (set! v1-164 (l.wu (+ v1-163 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s4, r0, v1 ;; [363] (set! s4-0 (+ v1-164 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s4: joint-control-channel ] + lw t9, rand-vu-percent?(s7);; [364] (set! t9-17 rand-vu-percent?) [] -> [t9: (function float symbol) ] + lui v1, L751 ;; [365] (set! v1-165 L751) [] -> [v1: ] + ori v1, v1, L751 + addu v1, fp, v1 + lw a0, 0(v1) ;; [366] (set! a0-45 (l.w v1-165)) [v1: ] -> [a0: int ] + jalr ra, t9 ;; [367] (call! a0-45) [a0: int t9: (function float symbol) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L544 ;; [368] (b! (not v0-17) L544 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B40: + lwu v1, 116(s6) ;; [369] (set! v1-166 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [370] (set! v1-167 (l.wu (+ v1-166 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 272(v1) ;; [371] (set! v1-168 (l.wu (+ v1-167 272))) [v1: art-group ] -> [v1: art-element ] + beq r0, r0, L545 ;; [372] (b! #t L545 (nop!)) [] -> [] + sll r0, r0, 0 + +B41: +L544: + lwu v1, 116(s6) ;; [373] (set! v1-169 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [374] (set! v1-170 (l.wu (+ v1-169 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 268(v1) ;; [375] (set! v1-168 (l.wu (+ v1-170 268))) [v1: art-group ] -> [v1: art-element ] +B42: +L545: + sw v1, 12(s4) ;; [376] (s.w! (+ s4-0 12) v1-168) [v1: art-element s4: joint-control-channel ] -> [] + lw t9, rand-vu-percent?(s7);; [377] (set! t9-18 rand-vu-percent?) [] -> [t9: (function float symbol) ] + lui v1, L751 ;; [378] (set! v1-171 L751) [] -> [v1: ] + ori v1, v1, L751 + addu v1, fp, v1 + lw a0, 0(v1) ;; [379] (set! a0-46 (l.w v1-171)) [v1: ] -> [a0: int ] + jalr ra, t9 ;; [380] (call! a0-46) [a0: int t9: (function float symbol) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L546 ;; [381] (b! (not v0-18) L546 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B43: + lwu v1, 116(s6) ;; [382] (set! v1-172 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [383] (set! v1-173 (l.wu (+ v1-172 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 272(v1) ;; [384] (set! v1-174 (l.wu (+ v1-173 272))) [v1: art-group ] -> [v1: art-element ] + beq r0, r0, L547 ;; [385] (b! #t L547 (nop!)) [] -> [] + sll r0, r0, 0 + +B44: +L546: + lwu v1, 116(s6) ;; [386] (set! v1-175 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [387] (set! v1-176 (l.wu (+ v1-175 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 268(v1) ;; [388] (set! v1-174 (l.wu (+ v1-176 268))) [v1: art-group ] -> [v1: art-element ] +B45: +L547: + lwu v1, 44(v1) ;; [389] (set! (the-as art-joint-anim v1-177) (l.wu (+ (the-as art-joint-anim v1-174) 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [390] (set! v1-178 (l.h (+ v1-177 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [391] (set! v1-179 (+ v1-178 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [392] (set! f0-36 (gpr->fpr v1-179)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [393] (set! f0-37 (i2f f0-36)) [] -> [] + swc1 f0, 24(s4) ;; [394] (s.f! (+ s4-0 24) f0-37) [s4: joint-control-channel ] -> [] + lui v1, L786 ;; [395] (set! v1-180 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [396] (set! f0-38 (l.f v1-180)) [v1: ] -> [] + swc1 f0, 28(s4) ;; [397] (s.f! (+ s4-0 28) f0-38) [s4: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [398] (set! f0-39 0) [] -> [] + swc1 f0, 16(s4) ;; [399] (s.f! (+ s4-0 16) f0-39) [s4: joint-control-channel ] -> [] + lw s3, joint-control-channel-group!(s7);; [400] (set! s3-0 joint-control-channel-group!) + ;; [] -> [s3: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lw t9, rand-vu-percent?(s7);; [401] (set! t9-19 rand-vu-percent?) [] -> [t9: (function float symbol) ] + lui v1, L751 ;; [402] (set! v1-181 L751) [] -> [v1: ] + ori v1, v1, L751 + addu v1, fp, v1 + lw a0, 0(v1) ;; [403] (set! a0-47 (l.w v1-181)) [v1: ] -> [a0: int ] + jalr ra, t9 ;; [404] (call! a0-47) [a0: int t9: (function float symbol) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L548 ;; [405] (b! (not v0-19) L548 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B46: + lwu v1, 116(s6) ;; [406] (set! v1-182 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [407] (set! v1-183 (l.wu (+ v1-182 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 272(v1) ;; [408] (set! a1-12 (l.wu (+ v1-183 272))) [v1: art-group ] -> [a1: art-element ] + beq r0, r0, L549 ;; [409] (b! #t L549 (nop!)) [] -> [] + sll r0, r0, 0 + +B47: +L548: + lwu v1, 116(s6) ;; [410] (set! v1-184 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [411] (set! v1-185 (l.wu (+ v1-184 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 268(v1) ;; [412] (set! a1-12 (l.wu (+ v1-185 268))) [v1: art-group ] -> [a1: art-element ] +B48: +L549: + lw a2, num-func-seek!(s7) ;; [413] (set! a2-10 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or t9, s3, r0 ;; [414] (set! t9-20 s3-0) + ;; [s3: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a0, s4, r0 ;; [415] (set! a0-48 s4-0) [s4: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [416] (call! a0-48 a1-12 a2-10) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [417] (set! v1-186 v0-20) [v0: int ] -> [v1: int ] +B49: +L550: + lw t9, seek(s7) ;; [418] (set! t9-21 seek) [] -> [t9: (function float float float float) ] + lwu v1, 108(s6) ;; [419] (set! v1-187 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 1724(v1) ;; [420] (set! f0-40 (l.f (+ v1-187 1724))) [v1: control-info ] -> [] + mfc1 a0, f0 ;; [421] (set! a0-49 (fpr->gpr f0-40)) [] -> [a0: float ] + lui v1, L814 ;; [422] (set! v1-188 L814) [] -> [v1: ] + ori v1, v1, L814 + addu v1, fp, v1 + lw a1, 0(v1) ;; [423] (set! a1-13 (l.w v1-188)) [v1: ] -> [a1: int ] + lw v1, *display*(s7) ;; [424] (set! v1-189 *display*) [] -> [v1: display ] + lwc1 f0, 904(v1) ;; [425] (set! f0-41 (l.f (+ v1-189 904))) [v1: display ] -> [] + mfc1 a2, f0 ;; [426] (set! a2-11 (fpr->gpr f0-41)) [] -> [a2: float ] + jalr ra, t9 ;; [427] (call! a0-49 a1-13 a2-11) + ;; [a0: float a1: int a2: float t9: (function float float float float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [428] (set! f0-42 (gpr->fpr v0-21)) [v0: float ] -> [] + lwu v1, 108(s6) ;; [429] (set! v1-190 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 1724(v1) ;; [430] (s.f! (+ v1-190 1724) f0-42) [v1: control-info ] -> [] + lwu s6, 44(s6) ;; [431] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [432] (set! v1-191 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [433] (set! v1-192 (l.wu (+ v1-191 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [434] (set! a0-50 (+ v1-192 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [435] (set! v1-193 (l.wu (+ a0-50 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [436] (set! v1-194 (l.wu (+ v1-193 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [437] (set! v1-195 (l.h (+ v1-194 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [438] (set! v1-196 (+ v1-195 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [439] (set! f0-43 (gpr->fpr v1-196)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [440] (set! f0-44 (i2f f0-43)) [] -> [] + swc1 f0, 24(a0) ;; [441] (s.f! (+ a0-50 24) f0-44) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [442] (set! v1-197 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [443] (set! f0-45 (l.f v1-197)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [444] (s.f! (+ a0-50 28) f0-45) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [445] (set! t9-22 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [446] (set! a1-14 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [447] (set! a2-12 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [448] (call! a0-50 a1-14 a2-12) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [449] (set! v1-198 v0-22) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [450] (set! t9-23 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [451] (set! a0-51 0) [] -> [a0: ] + jalr ra, t9 ;; [452] (call! a0-51) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L550 ;; [453] (b! (not v0-23) L550 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B50: + or v1, s7, r0 ;; [454] (set! v1-199 #f) [] -> [v1: '#f ] + lw v1, *walk-mods*(s7) ;; [455] (set! v1-200 *walk-mods*) [] -> [v1: surface ] + lwu a0, 108(s6) ;; [456] (set! a0-52 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sw v1, 656(a0) ;; [457] (s.w! (+ a0-52 656) v1-200) [v1: surface a0: control-info ] -> [] + mtc1 f0, r0 ;; [458] (set! f0-46 0) [] -> [] + lwu v1, 108(s6) ;; [459] (set! v1-201 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 1724(v1) ;; [460] (s.f! (+ v1-201 1724) f0-46) [v1: control-info ] -> [] + lwu a0, 108(s6) ;; [461] (set! a0-53 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu v1, -4(a0) ;; [462] (set! v1-202 (l.wu (+ a0-53 -4))) + ;; [a0: control-info ] -> [v1: ] + lwu t9, 100(v1) ;; [463] (set! t9-24 (l.wu (+ v1-202 100))) + ;; [v1: ] -> [t9: ] + jalr ra, t9 ;; [464] (call! a0-53) + ;; [a0: control-info t9: ] -> [v0: quaternion ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [465] (set! v1-203 v0-24) [v0: quaternion ] -> [v1: quaternion ] + beq r0, r0, L569 ;; [466] (b! #t L569 (nop!)) [] -> [] + sll r0, r0, 0 + +B51: +L551: + lwu v1, 120(s6) ;; [467] (set! v1-204 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [468] (set! v1-205 (l.w (+ v1-204 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [469] (b! (<=0.si v1-205) L552 (set! v1-206 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L552 + or v1, s7, r0 + +B52: + lwu v1, 120(s6) ;; [470] (set! v1-207 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [471] (set! v1-208 (l.wu (+ v1-207 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [472] (set! v1-206 (l.wu (+ v1-208 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B53: +L552: + lwu a0, 116(s6) ;; [473] (set! a0-54 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [474] (set! a0-55 (l.wu (+ a0-54 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 152(a0) ;; [475] (set! a0-56 (l.wu (+ a0-55 152))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [476] (set! a1-15 (= v1-206 a0-56)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L553 ;; [477] (bl! (truthy a1-15) L553 (no-delay!)) [a1: symbol ] -> [] +B54: + or a0, a1, r0 ;; [478] (set! a0-57 a1-15) [a1: symbol ] -> [a0: symbol ] + +B55: + lwu a0, 116(s6) ;; [479] (set! a0-58 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [480] (set! a0-59 (l.wu (+ a0-58 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 156(a0) ;; [481] (set! a0-60 (l.wu (+ a0-59 156))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [482] (set! a0-57 (= v1-206 a0-60)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 +B56: +L553: + beq s7, a0, L555 ;; [483] (b! (not a0-57) L555 (set! v1-209 #f)) [a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B57: + lw t9, ja-channel-push!(s7);; [484] (set! t9-25 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [485] (set! a0-61 1) [] -> [a0: ] + addiu a1, r0, 12 ;; [486] (set! a1-16 12) [] -> [a1: ] + jalr ra, t9 ;; [487] (call! a0-61 a1-16) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [488] (set! v1-210 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [489] (set! v1-211 (l.wu (+ v1-210 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [490] (set! a0-62 (+ v1-211 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [491] (set! v1-212 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [492] (set! v1-213 (l.wu (+ v1-212 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 148(v1) ;; [493] (set! v1-214 (l.wu (+ v1-213 148))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [494] (s.w! (+ a0-62 12) v1-214) [v1: art-element a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [495] (set! f0-47 0) [] -> [] + swc1 f0, 24(a0) ;; [496] (s.f! (+ a0-62 24) f0-47) [a0: joint-control-channel ] -> [] + lui v1, L754 ;; [497] (set! v1-215 L754) [] -> [v1: ] + ori v1, v1, L754 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [498] (set! f0-48 (l.f v1-215)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [499] (s.f! (+ a0-62 28) f0-48) [a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [500] (set! v1-216 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [501] (set! v1-217 (l.wu (+ v1-216 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 148(v1) ;; [502] (set! v1-218 (l.wu (+ v1-217 148))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [503] (set! (the-as art-joint-anim v1-219) (l.wu (+ v1-218 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [504] (set! v1-220 (l.h (+ v1-219 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [505] (set! v1-221 (+ v1-220 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [506] (set! f0-49 (gpr->fpr v1-221)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [507] (set! f0-50 (i2f f0-49)) [] -> [] + swc1 f0, 16(a0) ;; [508] (s.f! (+ a0-62 16) f0-50) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [509] (set! t9-26 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [510] (set! v1-222 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [511] (set! v1-223 (l.wu (+ v1-222 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 148(v1) ;; [512] (set! a1-17 (l.wu (+ v1-223 148))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [513] (set! a2-13 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [514] (call! a0-62 a1-17 a2-13) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [515] (set! v1-224 v0-26) [v0: int ] -> [v1: int ] +B58: +L554: + lwu s6, 44(s6) ;; [516] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [517] (set! v1-225 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [518] (set! v1-226 (l.wu (+ v1-225 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [519] (set! a0-63 (+ v1-226 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + mtc1 f0, r0 ;; [520] (set! f0-51 0) [] -> [] + swc1 f0, 24(a0) ;; [521] (s.f! (+ a0-63 24) f0-51) [a0: joint-control-channel ] -> [] + lui v1, L754 ;; [522] (set! v1-227 L754) [] -> [v1: ] + ori v1, v1, L754 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [523] (set! f0-52 (l.f v1-227)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [524] (s.f! (+ a0-63 28) f0-52) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [525] (set! t9-27 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [526] (set! a1-18 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [527] (set! a2-14 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [528] (call! a0-63 a1-18 a2-14) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [529] (set! v1-228 v0-27) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [530] (set! t9-28 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [531] (set! a0-64 0) [] -> [a0: ] + jalr ra, t9 ;; [532] (call! a0-64) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L554 ;; [533] (b! (not v0-28) L554 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B59: + or v1, s7, r0 ;; [534] (set! v1-229 #f) [] -> [v1: '#f ] + addiu s5, r0, 12 ;; [535] (set! s5-0 12) [] -> [s5: ] + or v1, s5, r0 ;; [536] (set! v1-230 s5-0) [s5: ] -> [v1: ] + beq r0, r0, L569 ;; [537] (b! #t L569 (nop!)) [] -> [] + sll r0, r0, 0 + +B60: +L555: + lwu v1, 120(s6) ;; [538] (set! v1-231 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [539] (set! v1-232 (l.w (+ v1-231 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [540] (b! (<=0.si v1-232) L556 (set! v1-233 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L556 + or v1, s7, r0 + +B61: + lwu v1, 120(s6) ;; [541] (set! v1-234 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [542] (set! v1-235 (l.wu (+ v1-234 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [543] (set! v1-233 (l.wu (+ v1-235 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B62: +L556: + lwu a0, 116(s6) ;; [544] (set! a0-65 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [545] (set! a0-66 (l.wu (+ a0-65 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 120(a0) ;; [546] (set! a0-67 (l.wu (+ a0-66 120))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [547] (set! a0-68 (= v1-233 a0-67)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L557 ;; [548] (bl! (not a0-68) L557 (no-delay!)) [a0: symbol ] -> [] +B63: + or v1, a0, r0 ;; [549] (set! v1-236 a0-68) [a0: symbol ] -> [v1: symbol ] + +B64: + addiu s5, r0, 45 ;; [550] (set! s5-0 45) [] -> [s5: ] + lui v1, L752 ;; [551] (set! v1-237 L752) [] -> [v1: ] + ori v1, v1, L752 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [552] (set! f0-53 (l.f v1-237)) [v1: ] -> [] + lwu v1, 120(s6) ;; [553] (set! v1-238 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [554] (set! v1-239 (l.wu (+ v1-238 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwc1 f1, 296(v1) ;; [555] (set! f1-0 (l.f (+ v1-239 296))) [v1: (inline-array joint-control-channel) ] -> [] + c.lt.s f0, f1 ;; [556] (b! (<.s f0-53 f1-0) L557 (set! v1-236 #t)) [] -> [v1: symbol ] + bc1t L557 + daddiu v1, s7, 8 + +B65: + or v1, s7, r0 ;; [557] (set! v1-236 #f) [] -> [v1: '#f ] +B66: +L557: + bnel s7, v1, L559 ;; [558] (bl! (truthy v1-236) L559 (no-delay!)) [v1: symbol ] -> [] +B67: + or v1, v1, r0 ;; [559] (set! v1-240 v1-236) [v1: symbol ] -> [v1: symbol ] + +B68: + lwu v1, 120(s6) ;; [560] (set! v1-241 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [561] (set! v1-242 (l.w (+ v1-241 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [562] (b! (<=0.si v1-242) L558 (set! v1-243 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L558 + or v1, s7, r0 + +B69: + lwu v1, 120(s6) ;; [563] (set! v1-244 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [564] (set! v1-245 (l.wu (+ v1-244 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [565] (set! v1-243 (l.wu (+ v1-245 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B70: +L558: + lwu a0, 116(s6) ;; [566] (set! a0-69 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [567] (set! a0-70 (l.wu (+ a0-69 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 140(a0) ;; [568] (set! a0-71 (l.wu (+ a0-70 140))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [569] (set! a1-19 (= v1-243 a0-71)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L559 ;; [570] (bl! (truthy a1-19) L559 (no-delay!)) [a1: symbol ] -> [] +B71: + or v1, a1, r0 ;; [571] (set! v1-240 a1-19) [a1: symbol ] -> [v1: symbol ] + +B72: + lwu a0, 116(s6) ;; [572] (set! a0-72 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [573] (set! a0-73 (l.wu (+ a0-72 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 144(a0) ;; [574] (set! a0-74 (l.wu (+ a0-73 144))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [575] (set! a1-20 (= v1-243 a0-74)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L559 ;; [576] (bl! (truthy a1-20) L559 (no-delay!)) [a1: symbol ] -> [] +B73: + or v1, a1, r0 ;; [577] (set! v1-240 a1-20) [a1: symbol ] -> [v1: symbol ] + +B74: + lwu a0, 116(s6) ;; [578] (set! a0-75 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [579] (set! a0-76 (l.wu (+ a0-75 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 244(a0) ;; [580] (set! a0-77 (l.wu (+ a0-76 244))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [581] (set! a1-21 (= v1-243 a0-77)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L559 ;; [582] (bl! (truthy a1-21) L559 (no-delay!)) [a1: symbol ] -> [] +B75: + or v1, a1, r0 ;; [583] (set! v1-240 a1-21) [a1: symbol ] -> [v1: symbol ] + +B76: + lwu a0, 116(s6) ;; [584] (set! a0-78 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [585] (set! a0-79 (l.wu (+ a0-78 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 248(a0) ;; [586] (set! a0-80 (l.wu (+ a0-79 248))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [587] (set! v1-240 (= v1-243 a0-80)) + ;; [v1: art-joint-anim a0: art-element ] -> [v1: symbol ] + daddiu v1, s7, 8 + movn v1, s7, a0 +B77: +L559: + beq s7, v1, L566 ;; [588] (b! (not v1-240) L566 (set! v1-246 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B78: + lwu v1, 120(s6) ;; [589] (set! v1-247 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [590] (set! v1-248 (l.w (+ v1-247 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [591] (b! (<=0.si v1-248) L560 (set! v1-249 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L560 + or v1, s7, r0 + +B79: + lwu v1, 120(s6) ;; [592] (set! v1-250 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [593] (set! v1-251 (l.wu (+ v1-250 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [594] (set! v1-249 (l.wu (+ v1-251 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B80: +L560: + lwu a0, 116(s6) ;; [595] (set! a0-81 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [596] (set! a0-82 (l.wu (+ a0-81 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 120(a0) ;; [597] (set! a0-83 (l.wu (+ a0-82 120))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [598] (set! a0-84 (= v1-249 a0-83)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L561 ;; [599] (b! (not a0-84) L561 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B81: + lui v1, L746 ;; [600] (set! v1-252 L746) [] -> [v1: ] + ori v1, v1, L746 + addu v1, fp, v1 + lwc1 f30, 0(v1) ;; [601] (set! f30-0 (l.f v1-252)) [v1: ] -> [] + lui v1, L780 ;; [602] (set! v1-253 L780) [] -> [v1: ] + ori v1, v1, L780 + addu v1, fp, v1 + lwc1 f28, 0(v1) ;; [603] (set! f28-0 (l.f v1-253)) [v1: ] -> [] + lui v1, L781 ;; [604] (set! v1-254 L781) [] -> [v1: ] + ori v1, v1, L781 + addu v1, fp, v1 + lwc1 f26, 0(v1) ;; [605] (set! f26-0 (l.f v1-254)) [v1: ] -> [] + lw t9, ja-aframe-num(s7) ;; [606] (set! t9-29 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [607] (set! a0-85 0) [] -> [a0: ] + jalr ra, t9 ;; [608] (call! a0-85) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [609] (set! f0-54 (gpr->fpr v0-29)) [v0: float ] -> [] + add.s f0, f26, f0 ;; [610] (set! f0-55 (+.s f26-0 f0-54)) [] -> [] + mul.s f0, f28, f0 ;; [611] (set! f0-56 (*.s f28-0 f0-55)) [] -> [] + add.s f0, f30, f0 ;; [612] (set! f0-57 (+.s f30-0 f0-56)) [] -> [] + lui v1, L746 ;; [613] (set! v1-255 L746) [] -> [v1: ] + ori v1, v1, L746 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [614] (set! f1-1 (l.f v1-255)) [v1: ] -> [] + div.s f1, f0, f1 ;; [615] (set! f1-2 (/.s f0-57 f1-1)) [] -> [] + cvt.w.s f1, f1 ;; [616] (set! f1-3 (f2i f1-2)) [] -> [] + cvt.s.w f1, f1 ;; [617] (set! f1-4 (i2f f1-3)) [] -> [] + lui v1, L746 ;; [618] (set! v1-256 L746) [] -> [v1: ] + ori v1, v1, L746 + addu v1, fp, v1 + lwc1 f2, 0(v1) ;; [619] (set! f2-0 (l.f v1-256)) [v1: ] -> [] + mul.s f1, f1, f2 ;; [620] (set! f1-5 (*.s f1-4 f2-0)) [] -> [] + sub.s f0, f0, f1 ;; [621] (set! f0-58 (-.s f0-57 f1-5)) [] -> [] + mfc1 v1, f0 ;; [622] (set! v1-257 (fpr->gpr f0-58)) [] -> [v1: float ] + beq r0, r0, L562 ;; [623] (b! #t L562 (nop!)) [] -> [] + sll r0, r0, 0 + +B82: +L561: + lui v1, L814 ;; [624] (set! v1-258 L814) [] -> [v1: ] + ori v1, v1, L814 + addu v1, fp, v1 + lw v1, 0(v1) ;; [625] (set! v1-257 (l.w v1-258)) [v1: ] -> [v1: int ] +B83: +L562: + mtc1 f30, v1 ;; [626] (set! f30-1 (gpr->fpr (the-as float v1-257))) [v1: float ] -> [] + addiu s5, r0, 45 ;; [627] (set! s5-0 45) [] -> [s5: ] + lw t9, ja-channel-push!(s7);; [628] (set! t9-30 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 3 ;; [629] (set! a0-86 3) [] -> [a0: ] + or a1, s5, r0 ;; [630] (set! a1-22 s5-0) [s5: ] -> [a1: ] + jalr ra, t9 ;; [631] (call! a0-86 a1-22) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lw t9, ground-tween-initialize(s7);; [632] (set! t9-31 ground-tween-initialize) + ;; [] -> [t9: (function ground-tween-info uint uint uint uint uint uint ground-tween-info :behavior target) ] + or a0, gp, r0 ;; [633] (set! a0-87 gp-0) [gp: ground-tween-info ] -> [a0: ground-tween-info ] + addiu a1, r0, 0 ;; [634] (set! a1-23 0) [] -> [a1: ] + lwu v1, 116(s6) ;; [635] (set! v1-259 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [636] (set! v1-260 (l.wu (+ v1-259 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a2, 44(v1) ;; [637] (set! a2-15 (l.wu (+ v1-260 44))) [v1: art-group ] -> [a2: art-element ] + lwu v1, 116(s6) ;; [638] (set! v1-261 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [639] (set! v1-262 (l.wu (+ v1-261 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a3, 80(v1) ;; [640] (set! a3-0 (l.wu (+ v1-262 80))) [v1: art-group ] -> [a3: art-element ] + lwu v1, 116(s6) ;; [641] (set! v1-263 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [642] (set! v1-264 (l.wu (+ v1-263 4))) [v1: draw-control ] -> [v1: art-group ] + lwu t0, 92(v1) ;; [643] (set! t0-0 (l.wu (+ v1-264 92))) [v1: art-group ] -> [t0: art-element ] + lwu v1, 116(s6) ;; [644] (set! v1-265 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [645] (set! v1-266 (l.wu (+ v1-265 4))) [v1: draw-control ] -> [v1: art-group ] + lwu t1, 56(v1) ;; [646] (set! t1-0 (l.wu (+ v1-266 56))) [v1: art-group ] -> [t1: art-element ] + lwu v1, 116(s6) ;; [647] (set! v1-267 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [648] (set! v1-268 (l.wu (+ v1-267 4))) [v1: draw-control ] -> [v1: art-group ] + lwu t2, 68(v1) ;; [649] (set! t2-0 (l.wu (+ v1-268 68))) [v1: art-group ] -> [t2: art-element ] + jalr ra, t9 ;; [650] (call! a0-87 a1-23 a2-15 a3-0 t0-0 t1-0 t2-0) + ;; [a0: ground-tween-info a1: a2: art-element a3: art-element t0: art-element t1: art-element t2: art-element t9: (function ground-tween-info uint uint uint uint uint uint ground-tween-info :behavior target) ] -> [v0: ground-tween-info ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [651] (set! v1-269 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [652] (set! v1-270 (l.wu (+ v1-269 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s4, r0, v1 ;; [653] (set! s4-1 (+ v1-270 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s4: joint-control-channel ] + lw v1, num-func-identity(s7);; [654] (set! v1-271 num-func-identity) + ;; [] -> [v1: (function joint-control-channel float float float) ] + sw v1, 20(s4) ;; [655] (s.w! (+ s4-1 20) v1-271) + ;; [v1: (function joint-control-channel float float float) s4: joint-control-channel ] -> [] + lw t9, ja-aframe(s7) ;; [656] (set! t9-32 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + mfc1 a0, f30 ;; [657] (set! a0-88 (fpr->gpr f30-1)) [] -> [a0: float ] + addiu a1, r0, 0 ;; [658] (set! a1-24 0) [] -> [a1: ] + jalr ra, t9 ;; [659] (call! a0-88 a1-24) + ;; [a0: float a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [660] (set! f0-59 (gpr->fpr v0-32)) [v0: float ] -> [] + swc1 f0, 16(s4) ;; [661] (s.f! (+ s4-1 16) f0-59) [s4: joint-control-channel ] -> [] + mfc1 v1, f0 ;; [662] (set! v1-272 (fpr->gpr f0-59)) [] -> [v1: float ] + lwu v1, 120(s6) ;; [663] (set! v1-273 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [664] (set! v1-274 (l.wu (+ v1-273 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu a0, v1, 48 ;; [665] (set! a0-89 (+ v1-274 48)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + mtc1 f0, r0 ;; [666] (set! f0-60 0) [] -> [] + swc1 f0, 24(a0) ;; [667] (s.f! (+ a0-89 24) f0-60) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [668] (set! t9-33 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [669] (set! a1-25 #f) [] -> [a1: '#f ] + lw a2, num-func-chan(s7) ;; [670] (set! a2-16 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [671] (call! a0-89 a1-25 a2-16) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [672] (set! v1-275 v0-33) [v0: int ] -> [v1: int ] + lwu v1, 120(s6) ;; [673] (set! v1-276 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [674] (set! v1-277 (l.wu (+ v1-276 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu a0, v1, 96 ;; [675] (set! a0-90 (+ v1-277 96)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + mtc1 f0, r0 ;; [676] (set! f0-61 0) [] -> [] + swc1 f0, 24(a0) ;; [677] (s.f! (+ a0-90 24) f0-61) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [678] (set! t9-34 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [679] (set! a1-26 #f) [] -> [a1: '#f ] + lw a2, num-func-chan(s7) ;; [680] (set! a2-17 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [681] (call! a0-90 a1-26 a2-17) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [682] (set! v1-278 v0-34) [v0: int ] -> [v1: int ] + addiu s4, r0, 0 ;; [683] (set! s4-2 0) [] -> [s4: ] + beq r0, r0, L564 ;; [684] (b! #t L564 (nop!)) [] -> [] + sll r0, r0, 0 + +B84: +L563: + lw t9, ground-tween-update(s7);; [685] (set! t9-35 ground-tween-update) + ;; [] -> [t9: (function ground-tween-info float float none :behavior target) ] + or a0, gp, r0 ;; [686] (set! a0-91 gp-0) [gp: ground-tween-info ] -> [a0: ground-tween-info ] + lwu v1, 108(s6) ;; [687] (set! v1-279 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 1300(v1) ;; [688] (set! f0-62 (l.f (+ v1-279 1300))) [v1: control-info ] -> [] + mfc1 a1, f0 ;; [689] (set! a1-27 (fpr->gpr f0-62)) [] -> [a1: float ] + lwu v1, 108(s6) ;; [690] (set! v1-280 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 1304(v1) ;; [691] (set! f0-63 (l.f (+ v1-280 1304))) [v1: control-info ] -> [] + mfc1 a2, f0 ;; [692] (set! a2-18 (fpr->gpr f0-63)) [] -> [a2: float ] + jalr ra, t9 ;; [693] (call! a0-91 a1-27 a2-18) + ;; [a0: ground-tween-info a1: float a2: float t9: (function ground-tween-info float float none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lwu s6, 44(s6) ;; [694] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [695] (set! v1-281 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [696] (set! v1-282 (l.wu (+ v1-281 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [697] (set! a0-92 (+ v1-282 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [698] (set! v1-283 (l.wu (+ a0-92 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [699] (set! v1-284 (l.wu (+ v1-283 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [700] (set! v1-285 (l.h (+ v1-284 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [701] (set! v1-286 (+ v1-285 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [702] (set! f0-64 (gpr->fpr v1-286)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [703] (set! f0-65 (i2f f0-64)) [] -> [] + swc1 f0, 24(a0) ;; [704] (s.f! (+ a0-92 24) f0-65) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [705] (set! v1-287 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [706] (set! f0-66 (l.f v1-287)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [707] (s.f! (+ a0-92 28) f0-66) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [708] (set! t9-36 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [709] (set! a1-28 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [710] (set! a2-19 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [711] (call! a0-92 a1-28 a2-19) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [712] (set! v1-288 v0-36) [v0: int ] -> [v1: int ] + lwu v1, 120(s6) ;; [713] (set! v1-289 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [714] (set! v1-290 (l.wu (+ v1-289 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu a0, v1, 48 ;; [715] (set! a0-93 (+ v1-290 48)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + mtc1 f0, r0 ;; [716] (set! f0-67 0) [] -> [] + swc1 f0, 24(a0) ;; [717] (s.f! (+ a0-93 24) f0-67) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [718] (set! t9-37 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [719] (set! a1-29 #f) [] -> [a1: '#f ] + lw a2, num-func-chan(s7) ;; [720] (set! a2-20 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [721] (call! a0-93 a1-29 a2-20) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [722] (set! v1-291 v0-37) [v0: int ] -> [v1: int ] + lwu v1, 120(s6) ;; [723] (set! v1-292 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [724] (set! v1-293 (l.wu (+ v1-292 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu a0, v1, 96 ;; [725] (set! a0-94 (+ v1-293 96)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + mtc1 f0, r0 ;; [726] (set! f0-68 0) [] -> [] + swc1 f0, 24(a0) ;; [727] (s.f! (+ a0-94 24) f0-68) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [728] (set! t9-38 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [729] (set! a1-30 #f) [] -> [a1: '#f ] + lw a2, num-func-chan(s7) ;; [730] (set! a2-21 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [731] (call! a0-94 a1-30 a2-21) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [732] (set! v1-294 v0-38) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [733] (set! t9-39 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [734] (set! a0-95 0) [] -> [a0: ] + jalr ra, t9 ;; [735] (call! a0-95) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L563 ;; [736] (b! (not v0-39) L563 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B85: + or v1, s7, r0 ;; [737] (set! v1-295 #f) [] -> [v1: '#f ] + lwu v1, 120(s6) ;; [738] (set! v1-296 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [739] (set! v1-297 (l.wu (+ v1-296 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu v1, r0, v1 ;; [740] (set! v1-298 (+ v1-297 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + lw a0, num-func-identity(s7);; [741] (set! a0-96 num-func-identity) + ;; [] -> [a0: (function joint-control-channel float float float) ] + sw a0, 20(v1) ;; [742] (s.w! (+ v1-298 20) a0-96) + ;; [v1: joint-control-channel a0: (function joint-control-channel float float float) ] -> [] + mtc1 f0, r0 ;; [743] (set! f0-69 0) [] -> [] + swc1 f0, 16(v1) ;; [744] (s.f! (+ v1-298 16) f0-69) [v1: joint-control-channel ] -> [] + mfc1 v1, f0 ;; [745] (set! v1-299 (fpr->gpr f0-69)) [] -> [v1: float ] + daddiu s4, s4, 1 ;; [746] (set! s4-2 (+ s4-2 1)) [s4: int ] -> [s4: ] +B86: +L564: + slti v1, s4, 3 ;; [747] (b! (<.si s4-2 3) L563 (nop!)) [s4: int ] -> [] + bne v1, r0, L563 + sll r0, r0, 0 + +B87: + or v1, s7, r0 ;; [748] (set! v1-300 #f) [] -> [v1: '#f ] + or v1, s7, r0 ;; [749] (set! v1-301 #f) [] -> [v1: '#f ] + lw t9, ground-tween-initialize(s7);; [750] (set! t9-40 ground-tween-initialize) + ;; [] -> [t9: (function ground-tween-info uint uint uint uint uint uint ground-tween-info :behavior target) ] + or a0, gp, r0 ;; [751] (set! a0-97 gp-0) [gp: ground-tween-info ] -> [a0: ground-tween-info ] + addiu a1, r0, 0 ;; [752] (set! a1-31 0) [] -> [a1: ] + lwu v1, 116(s6) ;; [753] (set! v1-302 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [754] (set! v1-303 (l.wu (+ v1-302 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a2, 40(v1) ;; [755] (set! a2-22 (l.wu (+ v1-303 40))) [v1: art-group ] -> [a2: art-element ] + lwu v1, 116(s6) ;; [756] (set! v1-304 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [757] (set! v1-305 (l.wu (+ v1-304 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a3, 76(v1) ;; [758] (set! a3-1 (l.wu (+ v1-305 76))) [v1: art-group ] -> [a3: art-element ] + lwu v1, 116(s6) ;; [759] (set! v1-306 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [760] (set! v1-307 (l.wu (+ v1-306 4))) [v1: draw-control ] -> [v1: art-group ] + lwu t0, 88(v1) ;; [761] (set! t0-1 (l.wu (+ v1-307 88))) [v1: art-group ] -> [t0: art-element ] + lwu v1, 116(s6) ;; [762] (set! v1-308 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [763] (set! v1-309 (l.wu (+ v1-308 4))) [v1: draw-control ] -> [v1: art-group ] + lwu t1, 52(v1) ;; [764] (set! t1-1 (l.wu (+ v1-309 52))) [v1: art-group ] -> [t1: art-element ] + lwu v1, 116(s6) ;; [765] (set! v1-310 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [766] (set! v1-311 (l.wu (+ v1-310 4))) [v1: draw-control ] -> [v1: art-group ] + lwu t2, 64(v1) ;; [767] (set! t2-1 (l.wu (+ v1-311 64))) [v1: art-group ] -> [t2: art-element ] + jalr ra, t9 ;; [768] (call! a0-97 a1-31 a2-22 a3-1 t0-1 t1-1 t2-1) + ;; [a0: ground-tween-info a1: a2: art-element a3: art-element t0: art-element t1: art-element t2: art-element t9: (function ground-tween-info uint uint uint uint uint uint ground-tween-info :behavior target) ] -> [v0: ground-tween-info ] + sll v0, ra, 0 + +B88: +L565: + lw t9, ground-tween-update(s7);; [769] (set! t9-41 ground-tween-update) + ;; [] -> [t9: (function ground-tween-info float float none :behavior target) ] + or a0, gp, r0 ;; [770] (set! a0-98 gp-0) [gp: ground-tween-info ] -> [a0: ground-tween-info ] + lwu v1, 108(s6) ;; [771] (set! v1-312 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 1300(v1) ;; [772] (set! f0-70 (l.f (+ v1-312 1300))) [v1: control-info ] -> [] + mfc1 a1, f0 ;; [773] (set! a1-32 (fpr->gpr f0-70)) [] -> [a1: float ] + lwu v1, 108(s6) ;; [774] (set! v1-313 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 1304(v1) ;; [775] (set! f0-71 (l.f (+ v1-313 1304))) [v1: control-info ] -> [] + mfc1 a2, f0 ;; [776] (set! a2-23 (fpr->gpr f0-71)) [] -> [a2: float ] + jalr ra, t9 ;; [777] (call! a0-98 a1-32 a2-23) + ;; [a0: ground-tween-info a1: float a2: float t9: (function ground-tween-info float float none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lwu s6, 44(s6) ;; [778] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [779] (set! v1-314 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [780] (set! v1-315 (l.wu (+ v1-314 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [781] (set! a0-99 (+ v1-315 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [782] (set! v1-316 (l.wu (+ a0-99 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [783] (set! v1-317 (l.wu (+ v1-316 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [784] (set! v1-318 (l.h (+ v1-317 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [785] (set! v1-319 (+ v1-318 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [786] (set! f0-72 (gpr->fpr v1-319)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [787] (set! f0-73 (i2f f0-72)) [] -> [] + swc1 f0, 24(a0) ;; [788] (s.f! (+ a0-99 24) f0-73) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [789] (set! v1-320 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [790] (set! f0-74 (l.f v1-320)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [791] (s.f! (+ a0-99 28) f0-74) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [792] (set! t9-42 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [793] (set! a1-33 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [794] (set! a2-24 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [795] (call! a0-99 a1-33 a2-24) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [796] (set! v1-321 v0-42) [v0: int ] -> [v1: int ] + lwu v1, 120(s6) ;; [797] (set! v1-322 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [798] (set! v1-323 (l.wu (+ v1-322 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu a0, v1, 48 ;; [799] (set! a0-100 (+ v1-323 48)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + mtc1 f0, r0 ;; [800] (set! f0-75 0) [] -> [] + swc1 f0, 24(a0) ;; [801] (s.f! (+ a0-100 24) f0-75) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [802] (set! t9-43 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [803] (set! a1-34 #f) [] -> [a1: '#f ] + lw a2, num-func-chan(s7) ;; [804] (set! a2-25 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [805] (call! a0-100 a1-34 a2-25) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [806] (set! v1-324 v0-43) [v0: int ] -> [v1: int ] + lwu v1, 120(s6) ;; [807] (set! v1-325 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [808] (set! v1-326 (l.wu (+ v1-325 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu a0, v1, 96 ;; [809] (set! a0-101 (+ v1-326 96)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + mtc1 f0, r0 ;; [810] (set! f0-76 0) [] -> [] + swc1 f0, 24(a0) ;; [811] (s.f! (+ a0-101 24) f0-76) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [812] (set! t9-44 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [813] (set! a1-35 #f) [] -> [a1: '#f ] + lw a2, num-func-chan(s7) ;; [814] (set! a2-26 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [815] (call! a0-101 a1-35 a2-26) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [816] (set! v1-327 v0-44) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [817] (set! t9-45 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [818] (set! a0-102 0) [] -> [a0: ] + jalr ra, t9 ;; [819] (call! a0-102) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L565 ;; [820] (b! (not v0-45) L565 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B89: + or v1, s7, r0 ;; [821] (set! v1-328 #f) [] -> [v1: '#f ] + beq r0, r0, L569 ;; [822] (b! #t L569 (nop!)) [] -> [] + sll r0, r0, 0 + +B90: +L566: + lwu v1, 120(s6) ;; [823] (set! v1-329 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [824] (set! v1-330 (l.w (+ v1-329 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [825] (b! (<=0.si v1-330) L567 (set! v1-331 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L567 + or v1, s7, r0 + +B91: + lwu v1, 120(s6) ;; [826] (set! v1-332 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [827] (set! v1-333 (l.wu (+ v1-332 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [828] (set! v1-331 (l.wu (+ v1-333 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B92: +L567: + lwu a0, 116(s6) ;; [829] (set! a0-103 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [830] (set! a0-104 (l.wu (+ a0-103 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 120(a0) ;; [831] (set! a0-105 (l.wu (+ a0-104 120))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [832] (set! a0-106 (= v1-331 a0-105)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L568 ;; [833] (bl! (not a0-106) L568 (no-delay!)) [a0: symbol ] -> [] +B93: + or v1, a0, r0 ;; [834] (set! v1-334 a0-106) [a0: symbol ] -> [v1: symbol ] + +B94: + lwu v1, 108(s6) ;; [835] (set! v1-335 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 528(v1) ;; [836] (set! f0-77 (l.f (+ v1-335 528))) [v1: control-info ] -> [] + lui v1, L775 ;; [837] (set! v1-336 L775) [] -> [v1: ] + ori v1, v1, L775 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [838] (set! f1-6 (l.f v1-336)) [v1: ] -> [] + c.lt.s f0, f1 ;; [839] (b! (>=.s f0-77 f1-6) L568 (set! v1-334 #t)) [] -> [v1: symbol ] + bc1f L568 + daddiu v1, s7, 8 + +B95: + or v1, s7, r0 ;; [840] (set! v1-334 #f) [] -> [v1: '#f ] +B96: +L568: + beq s7, v1, L569 ;; [841] (b! (not v1-334) L569 (set! v1-337 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B97: + addiu s5, r0, 45 ;; [842] (set! s5-0 45) [] -> [s5: ] + or v1, s5, r0 ;; [843] (set! v1-338 s5-0) [s5: ] -> [v1: ] +B98: +L569: + lwu v1, 120(s6) ;; [844] (set! v1-339 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [845] (set! v1-340 (l.w (+ v1-339 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [846] (b! (<=0.si v1-340) L570 (set! v1-341 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L570 + or v1, s7, r0 + +B99: + lwu v1, 120(s6) ;; [847] (set! v1-342 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [848] (set! v1-343 (l.wu (+ v1-342 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [849] (set! v1-341 (l.wu (+ v1-343 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B100: +L570: + lwu a0, 116(s6) ;; [850] (set! a0-107 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [851] (set! a0-108 (l.wu (+ a0-107 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 48(a0) ;; [852] (set! a0-109 (l.wu (+ a0-108 48))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [853] (set! a0-110 (= v1-341 a0-109)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L571 ;; [854] (bl! (not a0-110) L571 (no-delay!)) [a0: symbol ] -> [] +B101: + or v1, a0, r0 ;; [855] (set! v1-344 a0-110) [a0: symbol ] -> [v1: symbol ] + +B102: + lw t9, ja-group-size(s7) ;; [856] (set! t9-46 ja-group-size) [] -> [t9: (function int :behavior process-drawable) ] + jalr ra, t9 ;; [857] (call!) [t9: (function int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + daddiu a0, v0, -3 ;; [858] (set! a0-111 (+ v0-46 -3)) [v0: int ] -> [a0: ] + daddiu v1, s7, 8 ;; [859] (set! v1-344 (zero? a0-111)) [a0: ] -> [v1: symbol ] + movn v1, s7, a0 +B103: +L571: + bne s7, v1, L572 ;; [860] (b! (truthy v1-344) L572 (set! v1-345 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B104: + lw t9, ja-channel-push!(s7);; [861] (set! t9-47 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 3 ;; [862] (set! a0-112 3) [] -> [a0: ] + or a1, s5, r0 ;; [863] (set! a1-36 s5-0) [s5: int ] -> [a1: int ] + jalr ra, t9 ;; [864] (call! a0-112 a1-36) + ;; [a0: a1: int t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [865] (set! v1-346 v0-47) [v0: int ] -> [v1: int ] +B105: +L572: + lw t9, ground-tween-initialize(s7);; [866] (set! t9-48 ground-tween-initialize) + ;; [] -> [t9: (function ground-tween-info uint uint uint uint uint uint ground-tween-info :behavior target) ] + or a0, gp, r0 ;; [867] (set! a0-113 gp-0) [gp: ground-tween-info ] -> [a0: ground-tween-info ] + addiu a1, r0, 0 ;; [868] (set! a1-37 0) [] -> [a1: ] + lwu v1, 116(s6) ;; [869] (set! v1-347 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [870] (set! v1-348 (l.wu (+ v1-347 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a2, 48(v1) ;; [871] (set! a2-27 (l.wu (+ v1-348 48))) [v1: art-group ] -> [a2: art-element ] + lwu v1, 116(s6) ;; [872] (set! v1-349 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [873] (set! v1-350 (l.wu (+ v1-349 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a3, 84(v1) ;; [874] (set! a3-2 (l.wu (+ v1-350 84))) [v1: art-group ] -> [a3: art-element ] + lwu v1, 116(s6) ;; [875] (set! v1-351 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [876] (set! v1-352 (l.wu (+ v1-351 4))) [v1: draw-control ] -> [v1: art-group ] + lwu t0, 96(v1) ;; [877] (set! t0-2 (l.wu (+ v1-352 96))) [v1: art-group ] -> [t0: art-element ] + lwu v1, 116(s6) ;; [878] (set! v1-353 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [879] (set! v1-354 (l.wu (+ v1-353 4))) [v1: draw-control ] -> [v1: art-group ] + lwu t1, 60(v1) ;; [880] (set! t1-2 (l.wu (+ v1-354 60))) [v1: art-group ] -> [t1: art-element ] + lwu v1, 116(s6) ;; [881] (set! v1-355 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [882] (set! v1-356 (l.wu (+ v1-355 4))) [v1: draw-control ] -> [v1: art-group ] + lwu t2, 72(v1) ;; [883] (set! t2-2 (l.wu (+ v1-356 72))) [v1: art-group ] -> [t2: art-element ] + jalr ra, t9 ;; [884] (call! a0-113 a1-37 a2-27 a3-2 t0-2 t1-2 t2-2) + ;; [a0: ground-tween-info a1: a2: art-element a3: art-element t0: art-element t1: art-element t2: art-element t9: (function ground-tween-info uint uint uint uint uint uint ground-tween-info :behavior target) ] -> [v0: ground-tween-info ] + sll v0, ra, 0 + +B106: +L573: + lw t9, ground-tween-update(s7);; [885] (set! t9-49 ground-tween-update) + ;; [] -> [t9: (function ground-tween-info float float none :behavior target) ] + or a0, gp, r0 ;; [886] (set! a0-114 gp-0) [gp: ground-tween-info ] -> [a0: ground-tween-info ] + lwu v1, 108(s6) ;; [887] (set! v1-357 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 1300(v1) ;; [888] (set! f0-78 (l.f (+ v1-357 1300))) [v1: control-info ] -> [] + mfc1 a1, f0 ;; [889] (set! a1-38 (fpr->gpr f0-78)) [] -> [a1: float ] + lwu v1, 108(s6) ;; [890] (set! v1-358 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 1304(v1) ;; [891] (set! f0-79 (l.f (+ v1-358 1304))) [v1: control-info ] -> [] + mfc1 a2, f0 ;; [892] (set! a2-28 (fpr->gpr f0-79)) [] -> [a2: float ] + jalr ra, t9 ;; [893] (call! a0-114 a1-38 a2-28) + ;; [a0: ground-tween-info a1: float a2: float t9: (function ground-tween-info float float none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lwu s6, 44(s6) ;; [894] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [895] (set! v1-359 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [896] (set! v1-360 (l.wu (+ v1-359 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [897] (set! a0-115 (+ v1-360 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lui v1, L786 ;; [898] (set! v1-361 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [899] (set! f0-80 (l.f v1-361)) [v1: ] -> [] + swc1 f0, 24(a0) ;; [900] (s.f! (+ a0-115 24) f0-80) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [901] (set! t9-50 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [902] (set! a1-39 #f) [] -> [a1: '#f ] + lw a2, num-func-loop!(s7) ;; [903] (set! a2-29 num-func-loop!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [904] (call! a0-115 a1-39 a2-29) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [905] (set! v1-362 v0-50) [v0: int ] -> [v1: int ] + lwu v1, 120(s6) ;; [906] (set! v1-363 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [907] (set! v1-364 (l.wu (+ v1-363 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu a0, v1, 48 ;; [908] (set! a0-116 (+ v1-364 48)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + mtc1 f0, r0 ;; [909] (set! f0-81 0) [] -> [] + swc1 f0, 24(a0) ;; [910] (s.f! (+ a0-116 24) f0-81) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [911] (set! t9-51 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [912] (set! a1-40 #f) [] -> [a1: '#f ] + lw a2, num-func-chan(s7) ;; [913] (set! a2-30 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [914] (call! a0-116 a1-40 a2-30) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [915] (set! v1-365 v0-51) [v0: int ] -> [v1: int ] + lwu v1, 120(s6) ;; [916] (set! v1-366 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [917] (set! v1-367 (l.wu (+ v1-366 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddiu a0, v1, 96 ;; [918] (set! a0-117 (+ v1-367 96)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + mtc1 f0, r0 ;; [919] (set! f0-82 0) [] -> [] + swc1 f0, 24(a0) ;; [920] (s.f! (+ a0-117 24) f0-82) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [921] (set! t9-52 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [922] (set! a1-41 #f) [] -> [a1: '#f ] + lw a2, num-func-chan(s7) ;; [923] (set! a2-31 num-func-chan) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [924] (call! a0-117 a1-41 a2-31) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [925] (set! v1-368 v0-52) [v0: int ] -> [v1: int ] + lw t9, can-play-stance-amibent?(s7);; [926] (set! t9-53 can-play-stance-amibent?) + ;; [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [927] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L574 ;; [928] (b! (not v0-53) L574 (set! v1-369 #f)) [v0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B107: + lw t9, enter-state(s7) ;; [929] (set! t9-54 enter-state) [] -> [t9: ] + lw v1, target-stance-ambient(s7);; [930] (set! v1-370 target-stance-ambient) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [931] (s.w! (+ self 72) v1-370) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [932] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [933] (set! v1-371 v0-54) [v0: object ] -> [v1: object ] +B108: +L574: + beq r0, r0, L573 ;; [934] (b! #t L573 (nop!)) [] -> [] + sll r0, r0, 0 + +B109: + or v0, s7, r0 ;; [935] (set! v0-55 #f) [] -> [v0: ] + ld ra, 0(sp) + ld fp, 8(sp) + lwc1 f30, 136(sp) + lwc1 f28, 132(sp) + lwc1 f26, 128(sp) + lq gp, 112(sp) + lq s5, 96(sp) + lq s4, 80(sp) + lq s3, 64(sp) + jr ra + daddiu sp, sp, 144 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (code target-stance) + () + (let ((s5-0 22) + (gp-0 (new 'stack 'ground-tween-info)) + ) + (let ((v1-3 (ja-group))) + (cond + ((or (= v1-3 (-> self draw art-group data 89)) (= v1-3 (-> self draw art-group data 90))) + (set! s5-0 45) + ) + ((ja-group? (-> self draw art-group data 71)) + (ja-no-eval :group! (-> self draw art-group data 72) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + ((ja-group? (-> self draw art-group data 51)) + (cond + ((rand-vu-percent? (the-as float 0.3)) + (ja-no-eval :group! (-> self draw art-group data 53) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + (else + (ja-no-eval :group! (-> self draw art-group data 52) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + ) + ) + ((ja-group? (-> self draw art-group data 78)) + (ja-no-eval :group! (-> self draw art-group data 79) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + ((ja-group? (-> self draw art-group data 84)) + (ja-no-eval :group! (-> self draw art-group data 85) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + (set! s5-0 0) + ) + ((ja-group? (-> self draw art-group data 59)) + (set! (-> self control unknown-float81) (-> self control unknown-float80)) + (set! (-> self control unknown-surface00) *walk-no-turn-mods*) + (ja-no-eval :group! (if (rand-vu-percent? (the-as float 0.3)) + (-> self draw art-group data 61) + (-> self draw art-group data 60) + ) + :num! (seek!) + :frame-num 0.0 + ) + (until (ja-done? 0) + (seek! (-> self control unknown-float81) (the-as float 0.0) (-> *display* seconds-per-frame)) + (suspend) + (ja :num! (seek!)) + ) + (set! (-> self control unknown-surface00) *walk-mods*) + (set! (-> self control unknown-float81) 0.0) + (rot->dir-targ! (-> self control)) + ) + ((let ((v1-206 (ja-group))) + (or (= v1-206 (-> self draw art-group data 31)) (= v1-206 (-> self draw art-group data 32))) + ) + (ja-channel-push! 1 (seconds 0.04)) + (ja-no-eval :group! (-> self draw art-group data 30) :num! (seek! 0.0 1.2) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0 1.2)) + ) + (set! s5-0 12) + ) + ((or (and (ja-group? (-> self draw art-group data 23)) + (begin (set! s5-0 45) (< 0.5 (-> self skel root-channel 6 frame-interp))) + ) + (let ((v1-243 (ja-group))) + (or (= v1-243 (-> self draw art-group data 28)) + (= v1-243 (-> self draw art-group data 29)) + (= v1-243 (-> self draw art-group data 54)) + (= v1-243 (-> self draw art-group data 55)) + ) + ) + ) + (let ((f30-1 (the-as float (cond + ((ja-group? (-> self draw art-group data 23)) + (let ((f0-57 (+ 50.0 (* 0.8333333 (+ -25.0 (ja-aframe-num 0)))))) + (- f0-57 (* (the float (the int (/ f0-57 50.0))) 50.0)) + ) + ) + (else + 0.0 + ) + ) + ) + ) + ) + (set! s5-0 45) + (ja-channel-push! 3 (the-as time-frame s5-0)) + (ground-tween-initialize + gp-0 + (the-as uint 0) + (the-as uint (-> self draw art-group data 4)) + (the-as uint (-> self draw art-group data 13)) + (the-as uint (-> self draw art-group data 16)) + (the-as uint (-> self draw art-group data 7)) + (the-as uint (-> self draw art-group data 10)) + ) + (ja :num-func num-func-identity :frame-num (ja-aframe f30-1 0)) + ) + (ja :chan 1 :num! (chan 0)) + (ja :chan 2 :num! (chan 0)) + (dotimes (s4-2 3) + (until (ja-done? 0) + (ground-tween-update gp-0 (-> self control unknown-float61) (-> self control unknown-float62)) + (suspend) + (ja :num! (seek!)) + (ja :chan 1 :num! (chan 0)) + (ja :chan 2 :num! (chan 0)) + ) + (ja :num-func num-func-identity :frame-num 0.0) + ) + (ground-tween-initialize + gp-0 + (the-as uint 0) + (the-as uint (-> self draw art-group data 3)) + (the-as uint (-> self draw art-group data 12)) + (the-as uint (-> self draw art-group data 15)) + (the-as uint (-> self draw art-group data 6)) + (the-as uint (-> self draw art-group data 9)) + ) + (until (ja-done? 0) + (ground-tween-update gp-0 (-> self control unknown-float61) (-> self control unknown-float62)) + (suspend) + (ja :num! (seek!)) + (ja :chan 1 :num! (chan 0)) + (ja :chan 2 :num! (chan 0)) + ) + ) + ((and (ja-group? (-> self draw art-group data 23)) (>= (-> self control unknown-float01) 5734.4)) + (set! s5-0 45) + ) + ) + ) + (if (not (and (ja-group? (-> self draw art-group data 5)) (= (ja-group-size) 3))) + (ja-channel-push! 3 (the-as time-frame s5-0)) + ) + (ground-tween-initialize + gp-0 + (the-as uint 0) + (the-as uint (-> self draw art-group data 5)) + (the-as uint (-> self draw art-group data 14)) + (the-as uint (-> self draw art-group data 17)) + (the-as uint (-> self draw art-group data 8)) + (the-as uint (-> self draw art-group data 11)) + ) + (loop + (ground-tween-update gp-0 (-> self control unknown-float61) (-> self control unknown-float62)) + (suspend) + (ja :num! (loop!)) + (ja :chan 1 :num! (chan 0)) + (ja :chan 2 :num! (chan 0)) + (if (can-play-stance-amibent?) + (go target-stance-ambient) + ) + ) + ) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (trans target-stance) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; s6-0: target +L575: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lwu t9, 196(s6) ;; [ 0] (set! t9-0 (l.wu (+ self 196))) + ;; [s6: target ] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 1] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lwu v1, 152(s6) ;; [ 2] (set! v1-0 (l.wu (+ self 152))) [s6: target ] -> [v1: water-control ] + lwu v1, 0(v1) ;; [ 3] (set! v1-1 (l.wu v1-0)) [v1: water-control ] -> [v1: water-flags ] + andi v1, v1, 1024 ;; [ 4] (set! v1-2 (logand v1-1 1024)) [v1: water-flags ] -> [v1: water-flags ] + beq v1, r0, L576 ;; [ 5] (b! (zero? v1-2) L576 (set! v1-3 #f)) [v1: water-flags ] -> [v1: '#f ] + or v1, s7, r0 + +B1: + lw t9, enter-state(s7) ;; [ 6] (set! t9-1 enter-state) [] -> [t9: ] + lw v1, target-wade-stance(s7);; [ 7] (set! v1-4 target-wade-stance) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 8] (s.w! (+ self 72) v1-4) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 9] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 10] (set! v1-5 v0-1) [v0: object ] -> [v1: object ] +B2: +L576: + addiu v1, r0, 1 ;; [ 11] (set! v1-6 1) [] -> [v1: ] + lwu a0, 108(s6) ;; [ 12] (set! a0-0 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 260(a0) ;; [ 13] (set! a0-1 (l.wu (+ a0-0 260))) [a0: control-info ] -> [a0: pat-surface ] + dsll32 a0, a0, 20 ;; [ 14] (set! a0-2 (sll a0-1 52)) [a0: pat-surface ] -> [a0: ( << 52) ] + dsrl32 a0, a0, 26 ;; [ 15] (set! a0-3 (srl a0-2 58)) [a0: ( << 52) ] -> [a0: pat-material ] + bne a0, v1, L577 ;; [ 16] (b! (!= a0-3 v1-6) L577 (set! v1-7 #f)) + ;; [v1: a0: pat-material ] -> [v1: '#f ] + or v1, s7, r0 + +B3: + mtc1 f0, r0 ;; [ 17] (set! f0-0 0) [] -> [] + lwu v1, 108(s6) ;; [ 18] (set! v1-8 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 1724(v1) ;; [ 19] (s.f! (+ v1-8 1724) f0-0) [v1: control-info ] -> [] + lw t9, remove-exit(s7) ;; [ 20] (set! t9-2 remove-exit) [] -> [t9: (function stack-frame :behavior process) ] + jalr ra, t9 ;; [ 21] (call!) [t9: (function stack-frame :behavior process) ] -> [v0: stack-frame ] + sll v0, ra, 0 + + lw t9, enter-state(s7) ;; [ 22] (set! t9-3 enter-state) [] -> [t9: ] + lw v1, target-ice-stance(s7);; [ 23] (set! v1-9 target-ice-stance) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 24] (s.w! (+ self 72) v1-9) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 25] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 26] (set! v1-10 v0-3) [v0: object ] -> [v1: object ] +B4: +L577: + lw t9, move-legs?(s7) ;; [ 27] (set! t9-4 move-legs?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [ 28] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L578 ;; [ 29] (b! (not v0-4) L578 (set! v1-11 #f)) [v0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B5: + mtc1 f0, r0 ;; [ 30] (set! f0-1 0) [] -> [] + lwu v1, 108(s6) ;; [ 31] (set! v1-12 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 1724(v1) ;; [ 32] (s.f! (+ v1-12 1724) f0-1) [v1: control-info ] -> [] + lw t9, remove-exit(s7) ;; [ 33] (set! t9-5 remove-exit) [] -> [t9: (function stack-frame :behavior process) ] + jalr ra, t9 ;; [ 34] (call!) [t9: (function stack-frame :behavior process) ] -> [v0: stack-frame ] + sll v0, ra, 0 + + lw t9, enter-state(s7) ;; [ 35] (set! t9-6 enter-state) [] -> [t9: ] + lw v1, target-walk(s7) ;; [ 36] (set! v1-13 target-walk) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 37] (s.w! (+ self 72) v1-13) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 38] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 39] (set! v1-14 v0-6) [v0: object ] -> [v1: object ] +B6: +L578: + lwu v1, 108(s6) ;; [ 40] (set! v1-15 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 41] (set! v1-16 (l.wu (+ v1-15 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 42] (set! v1-17 (l.w (+ v1-16 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 43] (set! v1-18 (sll v1-17 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 44] (set! a0-4 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 45] (set! v1-19 (+ v1-18 a0-4)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 46] (set! v1-20 (l.wu (+ v1-19 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 40(v1) ;; [ 47] (set! v1-21 (l.wu (+ v1-20 40))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 3072 ;; [ 48] (set! v1-22 (logand v1-21 3072)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L579 ;; [ 49] (bl! (zero? v1-22) L579 (no-delay!)) [v1: pad-buttons ] -> [] +B7: + or v1, s7, r0 ;; [ 50] (set! v1-23 #f) [] -> [v1: '#f ] + +B8: + lw t9, can-duck?(s7) ;; [ 51] (set! t9-7 can-duck?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [ 52] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 53] (set! v1-23 v0-7) [v0: symbol ] -> [v1: symbol ] +B9: +L579: + beq s7, v1, L580 ;; [ 54] (b! (not v1-23) L580 (set! v1-24 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B10: + mtc1 f0, r0 ;; [ 55] (set! f0-2 0) [] -> [] + lwu v1, 108(s6) ;; [ 56] (set! v1-25 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 1724(v1) ;; [ 57] (s.f! (+ v1-25 1724) f0-2) [v1: control-info ] -> [] + lw t9, remove-exit(s7) ;; [ 58] (set! t9-8 remove-exit) [] -> [t9: (function stack-frame :behavior process) ] + jalr ra, t9 ;; [ 59] (call!) [t9: (function stack-frame :behavior process) ] -> [v0: stack-frame ] + sll v0, ra, 0 + + lw t9, enter-state(s7) ;; [ 60] (set! t9-9 enter-state) [] -> [t9: ] + lw v1, target-duck-stance(s7);; [ 61] (set! v1-26 target-duck-stance) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 62] (s.w! (+ self 72) v1-26) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 63] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 64] (set! v1-27 v0-9) [v0: object ] -> [v1: object ] +B11: +L580: + lwu v1, 108(s6) ;; [ 65] (set! v1-28 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 66] (set! v1-29 (l.wu (+ v1-28 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 67] (set! v1-30 (l.w (+ v1-29 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 68] (set! v1-31 (sll v1-30 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 69] (set! a0-5 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 70] (set! v1-32 (+ v1-31 a0-5)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 71] (set! v1-33 (l.wu (+ v1-32 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 72] (set! v1-34 (l.wu (+ v1-33 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 73] (set! a0-6 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 74] (set! a0-7 (l.wu (+ a0-6 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 75] (set! a0-8 (l.w (+ a0-7 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 76] (set! a0-9 (sll a0-8 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 77] (set! a1-0 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 78] (set! a0-10 (+ a0-9 a1-0)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 79] (set! a0-11 (l.wu (+ a0-10 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 60(a0) ;; [ 80] (set! a0-12 (l.wu (+ a0-11 60))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 81] (set! v1-35 (logior v1-34 a0-12)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 82] (set! a0-13 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 83] (set! a0-14 (l.wu (+ a0-13 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 84] (set! a0-15 (l.w (+ a0-14 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 85] (set! a0-16 (sll a0-15 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 86] (set! a1-1 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 87] (set! a0-17 (+ a0-16 a1-1)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 88] (set! a0-18 (l.wu (+ a0-17 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 64(a0) ;; [ 89] (set! a0-19 (l.wu (+ a0-18 64))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 90] (set! v1-36 (logior v1-35 a0-19)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + andi v1, v1, 16384 ;; [ 91] (set! v1-37 (logand v1-36 #x4000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L581 ;; [ 92] (bl! (zero? v1-37) L581 (no-delay!)) [v1: pad-buttons ] -> [] +B12: + or v1, s7, r0 ;; [ 93] (set! v1-38 #f) [] -> [v1: '#f ] + +B13: + lw t9, can-jump?(s7) ;; [ 94] (set! t9-10 can-jump?) [] -> [t9: (function symbol symbol :behavior target) ] + or a0, s7, r0 ;; [ 95] (set! a0-20 #f) [] -> [a0: '#f ] + jalr ra, t9 ;; [ 96] (call! a0-20) + ;; [a0: '#f t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 97] (set! v1-38 v0-10) [v0: symbol ] -> [v1: symbol ] +B14: +L581: + beq s7, v1, L582 ;; [ 98] (b! (not v1-38) L582 (set! v1-39 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B15: + lw t9, enter-state(s7) ;; [ 99] (set! t9-11 enter-state) [] -> [t9: ] + lw v1, *TARGET-bank*(s7) ;; [100] (set! v1-40 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 4(v1) ;; [101] (set! f0-3 (l.f (+ v1-40 4))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [102] (set! a0-21 (fpr->gpr f0-3)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [103] (set! v1-41 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 8(v1) ;; [104] (set! f0-4 (l.f (+ v1-41 8))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [105] (set! a1-2 (fpr->gpr f0-4)) [] -> [a1: meters ] + or a2, s7, r0 ;; [106] (set! a2-0 #f) [] -> [a2: '#f ] + lw v1, target-jump(s7) ;; [107] (set! v1-42 target-jump) [] -> [v1: (state float float surface target) ] + sw v1, 72(s6) ;; [108] (s.w! (+ self 72) v1-42) + ;; [v1: (state float float surface target) s6: target ] -> [] + jalr ra, t9 ;; [109] (call! a0-21 a1-2 a2-0) + ;; [a0: meters a1: meters a2: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [110] (set! v1-43 v0-11) [v0: object ] -> [v1: object ] +B16: +L582: + lwu v1, 108(s6) ;; [111] (set! v1-44 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [112] (set! v1-45 (l.wu (+ v1-44 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [113] (set! v1-46 (l.w (+ v1-45 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [114] (set! v1-47 (sll v1-46 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [115] (set! a0-22 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [116] (set! v1-48 (+ v1-47 a0-22)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [117] (set! v1-49 (l.wu (+ v1-48 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [118] (set! v1-50 (l.wu (+ v1-49 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [119] (set! a0-23 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [120] (set! a0-24 (l.wu (+ a0-23 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [121] (set! a0-25 (l.w (+ a0-24 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [122] (set! a0-26 (sll a0-25 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [123] (set! a1-3 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [124] (set! a0-27 (+ a0-26 a1-3)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [125] (set! a0-28 (l.wu (+ a0-27 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 60(a0) ;; [126] (set! a0-29 (l.wu (+ a0-28 60))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [127] (set! v1-51 (logior v1-50 a0-29)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [128] (set! a0-30 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [129] (set! a0-31 (l.wu (+ a0-30 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [130] (set! a0-32 (l.w (+ a0-31 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [131] (set! a0-33 (sll a0-32 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [132] (set! a1-4 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [133] (set! a0-34 (+ a0-33 a1-4)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [134] (set! a0-35 (l.wu (+ a0-34 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 64(a0) ;; [135] (set! a0-36 (l.wu (+ a0-35 64))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [136] (set! v1-52 (logior v1-51 a0-36)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + andi v1, v1, 8192 ;; [137] (set! v1-53 (logand v1-52 8192)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L583 ;; [138] (bl! (zero? v1-53) L583 (no-delay!)) [v1: pad-buttons ] -> [] +B17: + or v1, s7, r0 ;; [139] (set! v1-54 #f) [] -> [v1: '#f ] + +B18: + lw t9, can-feet?(s7) ;; [140] (set! t9-12 can-feet?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [141] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [142] (set! v1-54 v0-12) [v0: symbol ] -> [v1: symbol ] +B19: +L583: + beq s7, v1, L584 ;; [143] (b! (not v1-54) L584 (set! v1-55 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B20: + lw t9, enter-state(s7) ;; [144] (set! t9-13 enter-state) [] -> [t9: ] + lw v1, target-attack(s7) ;; [145] (set! v1-56 target-attack) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [146] (s.w! (+ self 72) v1-56) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [147] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [148] (set! v1-57 v0-13) [v0: object ] -> [v1: object ] +B21: +L584: + lw t9, can-hands?(s7) ;; [149] (set! t9-14 can-hands?) [] -> [t9: (function symbol symbol :behavior target) ] + daddiu a0, s7, #t ;; [150] (set! a0-37 #t) [] -> [a0: symbol ] + jalr ra, t9 ;; [151] (call! a0-37) + ;; [a0: symbol t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L585 ;; [152] (b! (not v0-14) L585 (set! v1-58 #f)) [v0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B22: + lw t9, enter-state(s7) ;; [153] (set! t9-15 enter-state) [] -> [t9: ] + lw v1, target-running-attack(s7);; [154] (set! v1-59 target-running-attack) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [155] (s.w! (+ self 72) v1-59) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [156] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [157] (set! v1-60 v0-15) [v0: object ] -> [v1: object ] +B23: +L585: + lw t9, slide-down-test(s7);; [158] (set! t9-16 slide-down-test) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [159] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + lw t9, fall-test(s7) ;; [160] (set! t9-17 fall-test) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [161] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (trans target-stance) + () + ((-> self state-hook)) + (if (logtest? (-> self water flags) (water-flags wt10)) + (go target-wade-stance) + ) + (when (= (-> self control ground-pat material) (pat-material ice)) + (set! (-> self control unknown-float81) 0.0) + (remove-exit) + (go target-ice-stance) + ) + (when (move-legs?) + (set! (-> self control unknown-float81) 0.0) + (remove-exit) + (go target-walk) + ) + (when (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) + (set! (-> self control unknown-float81) 0.0) + (remove-exit) + (go target-duck-stance) + ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) + ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons circle) + ) + (can-feet?) + ) + (go target-attack) + ) + (if (can-hands? #t) + (go target-running-attack) + ) + (slide-down-test) + (fall-test) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (exit target-stance) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; s6-0: target +L586: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + mtc1 f0, r0 ;; [ 0] (set! f0-0 0) [] -> [] + lwu v1, 108(s6) ;; [ 1] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + swc1 f0, 1724(v1) ;; [ 2] (s.f! (+ v1-0 1724) f0-0) [v1: control-info ] -> [] + lw t9, target-state-hook-exit(s7);; [ 3] (set! t9-0 target-state-hook-exit) + ;; [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [ 4] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (exit target-stance) + () + (set! (-> self control unknown-float81) 0.0) + (target-state-hook-exit) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (enter target-stance) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x00, fp? 0 ra? 0 ep? 1 +;; Warnings: +;; INFO: Return type mismatch time-frame vs none. + +;; s6-0: target +B0: +L587: + lw v1, *walk-mods*(s7) ;; [ 0] (set! v1-0 *walk-mods*) [] -> [v1: surface ] + lwu a0, 108(s6) ;; [ 1] (set! a0-0 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sw v1, 656(a0) ;; [ 2] (s.w! (+ a0-0 656) v1-0) [v1: surface a0: control-info ] -> [] + lw v1, *display*(s7) ;; [ 3] (set! v1-1 *display*) [] -> [v1: display ] + ld v0, 780(v1) ;; [ 4] (set! v0-0 (l.d (+ v1-1 780))) [v1: display ] -> [v0: time-frame ] + sd v0, 164(s6) ;; [ 5] (s.d! (+ self 164) v0-0) [v0: time-frame s6: target ] -> [] + jr ra + daddu sp, sp, r0 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler + (enter target-stance) + () + (set! (-> self control unknown-surface00) *walk-mods*) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function (code target-startup) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 +;; Warnings: +;; INFO: Return type mismatch object vs none. + + +L588: + daddiu sp, sp, -16 + sd ra, 0(sp) +B0: + lwu s6, 44(s6) ;; [ 0] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu s6, 44(s6) ;; [ 1] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lw t9, enter-state(s7) ;; [ 2] (set! t9-0 enter-state) [] -> [t9: ] + lw v1, target-stance(s7) ;; [ 3] (set! v1-0 target-stance) [] -> [v1: (state target) ] + sw v1, 72(s6) ;; [ 4] (s.w! (+ self 72) v1-0) [v1: (state target) s6: target ] -> [] + jalr ra, t9 ;; [ 5] (call!) [t9: ] -> [v0: object ] + sll v0, ra, 0 + + ld ra, 0(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(state-handler (code target-startup) () (suspend) (suspend) (go target-stance) (none)) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function target-hit-ground-anim +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x40, fp? 1 ra? 1 ep? 1 + ;gprs: gp s5 + ;fprs: f30 f28 +;; v1-2: art-joint-anim v1-95: art-joint-anim v1-187: art-joint-anim +;; v1-242: art-joint-anim v1-305: art-joint-anim a0-0: symbol +;; s5-0: joint-control-channel s5-1: joint-control-channel s6-0: target +;; gp-0: symbol f30-0: float f30-1: float +;; f30-2: float +L589: + daddiu sp, sp, -64 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s5, 16(sp) + sq gp, 32(sp) + swc1 f28, 48(sp) + swc1 f30, 52(sp) +B0: + lwu v1, 120(s6) ;; [ 0] (set! v1-0 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 1] (set! v1-1 (l.w (+ v1-0 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 2] (b! (<=0.si v1-1) L590 (set! v1-2 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L590 + or v1, s7, r0 + +B1: + lwu v1, 120(s6) ;; [ 3] (set! v1-3 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 4] (set! v1-4 (l.wu (+ v1-3 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 5] (set! v1-2 (l.wu (+ v1-4 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B2: +L590: + lwu a1, 116(s6) ;; [ 6] (set! a1-0 (l.wu (+ self 116))) [s6: target ] -> [a1: draw-control ] + lwu a1, 4(a1) ;; [ 7] (set! a1-1 (l.wu (+ a1-0 4))) [a1: draw-control ] -> [a1: art-group ] + lwu a1, 280(a1) ;; [ 8] (set! a1-2 (l.wu (+ a1-1 280))) [a1: art-group ] -> [a1: art-element ] + dsubu a1, v1, a1 ;; [ 9] (set! a2-0 (= v1-2 a1-2)) [v1: art-joint-anim a1: art-element ] -> [a2: symbol ] + daddiu a2, s7, 8 + movn a2, s7, a1 + bnel s7, a2, L591 ;; [ 10] (bl! (truthy a2-0) L591 (no-delay!)) [a2: symbol ] -> [] +B3: + or a1, a2, r0 ;; [ 11] (set! a1-3 a2-0) [a2: symbol ] -> [a1: symbol ] + +B4: + lwu a1, 116(s6) ;; [ 12] (set! a1-4 (l.wu (+ self 116))) [s6: target ] -> [a1: draw-control ] + lwu a1, 4(a1) ;; [ 13] (set! a1-5 (l.wu (+ a1-4 4))) [a1: draw-control ] -> [a1: art-group ] + lwu a1, 284(a1) ;; [ 14] (set! a1-6 (l.wu (+ a1-5 284))) [a1: art-group ] -> [a1: art-element ] + dsubu a1, v1, a1 ;; [ 15] (set! a2-1 (= v1-2 a1-6)) [v1: art-joint-anim a1: art-element ] -> [a2: symbol ] + daddiu a2, s7, 8 + movn a2, s7, a1 + bnel s7, a2, L591 ;; [ 16] (bl! (truthy a2-1) L591 (no-delay!)) [a2: symbol ] -> [] +B5: + or a1, a2, r0 ;; [ 17] (set! a1-3 a2-1) [a2: symbol ] -> [a1: symbol ] + +B6: + lwu a1, 116(s6) ;; [ 18] (set! a1-7 (l.wu (+ self 116))) [s6: target ] -> [a1: draw-control ] + lwu a1, 4(a1) ;; [ 19] (set! a1-8 (l.wu (+ a1-7 4))) [a1: draw-control ] -> [a1: art-group ] + lwu a1, 292(a1) ;; [ 20] (set! a1-9 (l.wu (+ a1-8 292))) [a1: art-group ] -> [a1: art-element ] + dsubu a1, v1, a1 ;; [ 21] (set! a2-2 (= v1-2 a1-9)) [v1: art-joint-anim a1: art-element ] -> [a2: symbol ] + daddiu a2, s7, 8 + movn a2, s7, a1 + bnel s7, a2, L591 ;; [ 22] (bl! (truthy a2-2) L591 (no-delay!)) [a2: symbol ] -> [] +B7: + or a1, a2, r0 ;; [ 23] (set! a1-3 a2-2) [a2: symbol ] -> [a1: symbol ] + +B8: + lwu a1, 116(s6) ;; [ 24] (set! a1-10 (l.wu (+ self 116))) [s6: target ] -> [a1: draw-control ] + lwu a1, 4(a1) ;; [ 25] (set! a1-11 (l.wu (+ a1-10 4))) [a1: draw-control ] -> [a1: art-group ] + lwu a1, 296(a1) ;; [ 26] (set! a1-12 (l.wu (+ a1-11 296))) [a1: art-group ] -> [a1: art-element ] + dsubu v1, v1, a1 ;; [ 27] (set! a1-3 (= v1-2 a1-12)) [v1: art-joint-anim a1: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, v1 +B9: +L591: + beq s7, a1, L612 ;; [ 28] (b! (not a1-3) L612 (set! v1-5 #f)) [a1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B10: + lwu v1, 108(s6) ;; [ 29] (set! v1-6 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 30] (set! v1-7 (l.wu (+ v1-6 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 31] (set! v1-8 (l.w (+ v1-7 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 32] (set! v1-9 (sll v1-8 2)) [v1: int ] -> [v1: ] + lw a1, *cpad-list*(s7) ;; [ 33] (set! a1-13 *cpad-list*) [] -> [a1: cpad-list ] + daddu v1, v1, a1 ;; [ 34] (set! v1-10 (+ v1-9 a1-13)) + ;; [v1: a1: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 35] (set! v1-11 (l.wu (+ v1-10 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwc1 f0, 72(v1) ;; [ 36] (set! f0-0 (l.f (+ v1-11 72))) [v1: cpad-info ] -> [] + mtc1 f1, r0 ;; [ 37] (set! f1-0 0) [] -> [] + c.eq.s f0, f1 ;; [ 38] (b! (=.s f0-0 f1-0) L592 (set! v1-12 #t)) [] -> [v1: symbol ] + bc1t L592 + daddiu v1, s7, 8 + +B11: + or v1, s7, r0 ;; [ 39] (set! v1-12 #f) [] -> [v1: '#f ] +B12: +L592: + bnel s7, v1, L593 ;; [ 40] (bl! (truthy v1-12) L593 (no-delay!)) [v1: symbol ] -> [] +B13: + or gp, v1, r0 ;; [ 41] (set! gp-0 v1-12) [v1: symbol ] -> [gp: symbol ] + +B14: + lwu v1, 108(s6) ;; [ 42] (set! v1-13 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f0, 528(v1) ;; [ 43] (set! f0-1 (l.f (+ v1-13 528))) [v1: control-info ] -> [] + lui v1, L736 ;; [ 44] (set! v1-14 L736) [] -> [v1: ] + ori v1, v1, L736 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [ 45] (set! f1-1 (l.f v1-14)) [v1: ] -> [] + c.lt.s f0, f1 ;; [ 46] (b! (<.s f0-1 f1-1) L593 (set! gp-0 #t)) [] -> [gp: symbol ] + bc1t L593 + daddiu gp, s7, 8 + +B15: + or gp, s7, r0 ;; [ 47] (set! gp-0 #f) [] -> [gp: '#f ] +B16: +L593: + daddiu v1, s7, swim ;; [ 48] (set! v1-15 'swim) [] -> [v1: symbol ] + bne a0, v1, L594 ;; [ 49] (b! (!= arg0 v1-15) L594 (nop!)) [v1: symbol a0: symbol ] -> [] + sll r0, r0, 0 + +B17: + lui v1, L767 ;; [ 50] (set! v1-16 L767) [] -> [v1: ] + ori v1, v1, L767 + addu v1, fp, v1 + lw v1, 0(v1) ;; [ 51] (set! v1-17 (l.w v1-16)) [v1: ] -> [v1: int ] + beq r0, r0, L595 ;; [ 52] (b! #t L595 (nop!)) [] -> [] + sll r0, r0, 0 + +B18: +L594: + lui v1, L786 ;; [ 53] (set! v1-18 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw v1, 0(v1) ;; [ 54] (set! v1-17 (l.w v1-18)) [v1: ] -> [v1: int ] +B19: +L595: + mtc1 f30, v1 ;; [ 55] (set! f30-0 (gpr->fpr (the-as float v1-17))) [v1: float ] -> [] + lw t9, ja-channel-set!(s7);; [ 56] (set! t9-0 ja-channel-set!) + ;; [] -> [t9: (function int int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [ 57] (set! a0-1 1) [] -> [a0: ] + jalr ra, t9 ;; [ 58] (call! a0-1) + ;; [a0: t9: (function int int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [ 59] (set! v1-19 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 60] (set! v1-20 (l.wu (+ v1-19 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s5, r0, v1 ;; [ 61] (set! s5-0 (+ v1-20 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + beq s7, gp, L596 ;; [ 62] (b! (not gp-0) L596 (nop!)) [gp: symbol ] -> [] + sll r0, r0, 0 + +B20: + lwu v1, 116(s6) ;; [ 63] (set! v1-21 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 64] (set! v1-22 (l.wu (+ v1-21 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 288(v1) ;; [ 65] (set! v1-23 (l.wu (+ v1-22 288))) [v1: art-group ] -> [v1: art-element ] + beq r0, r0, L597 ;; [ 66] (b! #t L597 (nop!)) [] -> [] + sll r0, r0, 0 + +B21: +L596: + lwu v1, 116(s6) ;; [ 67] (set! v1-24 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 68] (set! v1-25 (l.wu (+ v1-24 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 300(v1) ;; [ 69] (set! v1-23 (l.wu (+ v1-25 300))) [v1: art-group ] -> [v1: art-element ] +B22: +L597: + sw v1, 12(s5) ;; [ 70] (s.w! (+ s5-0 12) v1-23) [v1: art-element s5: joint-control-channel ] -> [] + beq s7, gp, L598 ;; [ 71] (b! (not gp-0) L598 (nop!)) [gp: symbol ] -> [] + sll r0, r0, 0 + +B23: + lwu v1, 116(s6) ;; [ 72] (set! v1-26 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 73] (set! v1-27 (l.wu (+ v1-26 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 288(v1) ;; [ 74] (set! v1-28 (l.wu (+ v1-27 288))) [v1: art-group ] -> [v1: art-element ] + beq r0, r0, L599 ;; [ 75] (b! #t L599 (nop!)) [] -> [] + sll r0, r0, 0 + +B24: +L598: + lwu v1, 116(s6) ;; [ 76] (set! v1-29 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 77] (set! v1-30 (l.wu (+ v1-29 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 300(v1) ;; [ 78] (set! v1-28 (l.wu (+ v1-30 300))) [v1: art-group ] -> [v1: art-element ] +B25: +L599: + lwu v1, 44(v1) ;; [ 79] (set! (the-as art-joint-anim v1-31) (l.wu (+ (the-as art-joint-anim v1-28) 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 80] (set! v1-32 (l.h (+ v1-31 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 81] (set! v1-33 (+ v1-32 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 82] (set! f0-2 (gpr->fpr v1-33)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 83] (set! f0-3 (i2f f0-2)) [] -> [] + swc1 f0, 24(s5) ;; [ 84] (s.f! (+ s5-0 24) f0-3) [s5: joint-control-channel ] -> [] + lw t9, seek(s7) ;; [ 85] (set! t9-1 seek) [] -> [t9: (function float float float float) ] + mfc1 a0, f30 ;; [ 86] (set! a0-2 (fpr->gpr f30-0)) [] -> [a0: float ] + lui v1, L786 ;; [ 87] (set! v1-34 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw a1, 0(v1) ;; [ 88] (set! a1-14 (l.w v1-34)) [v1: ] -> [a1: int ] + lui v1, L752 ;; [ 89] (set! v1-35 L752) [] -> [v1: ] + ori v1, v1, L752 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 90] (set! f0-4 (l.f v1-35)) [v1: ] -> [] + lw v1, *display*(s7) ;; [ 91] (set! v1-36 *display*) [] -> [v1: display ] + lwc1 f1, 904(v1) ;; [ 92] (set! f1-2 (l.f (+ v1-36 904))) [v1: display ] -> [] + mul.s f0, f0, f1 ;; [ 93] (set! f0-5 (*.s f0-4 f1-2)) [] -> [] + mfc1 a2, f0 ;; [ 94] (set! a2-3 (fpr->gpr f0-5)) [] -> [a2: float ] + jalr ra, t9 ;; [ 95] (call! a0-2 a1-14 a2-3) + ;; [a0: float a1: int a2: float t9: (function float float float float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f30, v0 ;; [ 96] (set! f30-1 (gpr->fpr v0-1)) [v0: float ] -> [] + swc1 f30, 28(s5) ;; [ 97] (s.f! (+ s5-0 28) f30-1) [s5: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [ 98] (set! f0-6 0) [] -> [] + swc1 f0, 16(s5) ;; [ 99] (s.f! (+ s5-0 16) f0-6) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [100] (set! t9-2 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + beq s7, gp, L600 ;; [101] (b! (not gp-0) L600 (nop!)) [gp: symbol ] -> [] + sll r0, r0, 0 + +B26: + lwu v1, 116(s6) ;; [102] (set! v1-37 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [103] (set! v1-38 (l.wu (+ v1-37 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 288(v1) ;; [104] (set! a1-15 (l.wu (+ v1-38 288))) [v1: art-group ] -> [a1: art-element ] + beq r0, r0, L601 ;; [105] (b! #t L601 (nop!)) [] -> [] + sll r0, r0, 0 + +B27: +L600: + lwu v1, 116(s6) ;; [106] (set! v1-39 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [107] (set! v1-40 (l.wu (+ v1-39 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 300(v1) ;; [108] (set! a1-15 (l.wu (+ v1-40 300))) [v1: art-group ] -> [a1: art-element ] +B28: +L601: + lw a2, num-func-seek!(s7) ;; [109] (set! a2-4 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s5, r0 ;; [110] (set! a0-3 s5-0) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [111] (call! a0-3 a1-15 a2-4) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [112] (set! v1-41 v0-2) [v0: int ] -> [v1: int ] +B29: +L602: + lwu a0, 128(s6) ;; [113] (set! a0-4 (l.wu (+ self 128))) [s6: target ] -> [a0: align-control ] + lwu v1, -4(a0) ;; [114] (set! v1-42 (l.wu (+ a0-4 -4))) + ;; [a0: align-control ] -> [v1: ] + lwu t9, 52(v1) ;; [115] (set! t9-3 (l.wu (+ v1-42 52))) + ;; [v1: ] -> [t9: ] + jalr ra, t9 ;; [116] (call! a0-4) + ;; [a0: align-control t9: ] -> [v0: transformq ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [117] (set! v1-43 v0-3) [v0: transformq ] -> [v1: transformq ] + lwu a0, 128(s6) ;; [118] (set! a0-5 (l.wu (+ self 128))) [s6: target ] -> [a0: align-control ] + lwu v1, -4(a0) ;; [119] (set! v1-44 (l.wu (+ a0-5 -4))) + ;; [a0: align-control ] -> [v1: ] + lwu t9, 56(v1) ;; [120] (set! t9-4 (l.wu (+ v1-44 56))) + ;; [v1: ] -> [t9: ] + beq s7, gp, L603 ;; [121] (b! (not gp-0) L603 (nop!)) [gp: symbol ] -> [] + sll r0, r0, 0 + +B30: + addiu a1, r0, 2 ;; [122] (set! a1-16 2) [] -> [a1: ] + beq r0, r0, L604 ;; [123] (b! #t L604 (nop!)) [] -> [] + sll r0, r0, 0 + +B31: +L603: + addiu a1, r0, 6 ;; [124] (set! a1-16 6) [] -> [a1: ] +B32: +L604: + lui v1, L786 ;; [125] (set! v1-45 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw a2, 0(v1) ;; [126] (set! a2-5 (l.w v1-45)) [v1: ] -> [a2: int ] + lui v1, L786 ;; [127] (set! v1-46 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw a3, 0(v1) ;; [128] (set! a3-0 (l.w v1-46)) [v1: ] -> [a3: int ] + lui v1, L785 ;; [129] (set! v1-47 L785) [] -> [v1: ] + ori v1, v1, L785 + addu v1, fp, v1 + lw t0, 0(v1) ;; [130] (set! t0-0 (l.w v1-47)) [v1: ] -> [t0: int ] + jalr ra, t9 ;; [131] (call! a0-5 a1-16 a2-5 a3-0 t0-0) + ;; [a0: align-control a1: int a2: int a3: int t0: int t9: ] -> [v0: trsqv ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [132] (set! v1-48 v0-4) [v0: trsqv ] -> [v1: trsqv ] + lui v1, L779 ;; [133] (set! v1-49 L779) [] -> [v1: ] + ori v1, v1, L779 + addu v1, fp, v1 + lwc1 f28, 0(v1) ;; [134] (set! f28-0 (l.f v1-49)) [v1: ] -> [] + lw t9, ja-aframe-num(s7) ;; [135] (set! t9-5 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [136] (set! a0-6 0) [] -> [a0: ] + jalr ra, t9 ;; [137] (call! a0-6) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [138] (set! f0-7 (gpr->fpr v0-5)) [v0: float ] -> [] + c.lt.s f28, f0 ;; [139] (b! (>=.s f28-0 f0-7) L605 (set! v1-50 #t)) [] -> [v1: symbol ] + bc1f L605 + daddiu v1, s7, 8 + +B33: + or v1, s7, r0 ;; [140] (set! v1-50 #f) [] -> [v1: '#f ] +B34: +L605: + beql s7, v1, L607 ;; [141] (bl! (not v1-50) L607 (no-delay!)) [v1: symbol ] -> [] +B35: + or v1, v1, r0 ;; [142] (set! v1-51 v1-50) [v1: symbol ] -> [v1: symbol ] + +B36: + lw t9, ja-aframe-num(s7) ;; [143] (set! t9-6 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [144] (set! a0-7 0) [] -> [a0: ] + jalr ra, t9 ;; [145] (call! a0-7) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [146] (set! f0-8 (gpr->fpr v0-6)) [v0: float ] -> [] + lui v1, L778 ;; [147] (set! v1-52 L778) [] -> [v1: ] + ori v1, v1, L778 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [148] (set! f1-3 (l.f v1-52)) [v1: ] -> [] + c.lt.s f0, f1 ;; [149] (b! (>=.s f0-8 f1-3) L606 (set! v1-53 #t)) [] -> [v1: symbol ] + bc1f L606 + daddiu v1, s7, 8 + +B37: + or v1, s7, r0 ;; [150] (set! v1-53 #f) [] -> [v1: '#f ] +B38: +L606: + beql s7, v1, L607 ;; [151] (bl! (not v1-53) L607 (no-delay!)) [v1: symbol ] -> [] +B39: + or v1, v1, r0 ;; [152] (set! v1-51 v1-53) [v1: symbol ] -> [v1: symbol ] + +B40: + lwu v1, 72(s6) ;; [153] (set! v1-54 (l.wu (+ self 72))) [s6: target ] -> [v1: state ] + lwu v1, 0(v1) ;; [154] (set! v1-55 (l.wu v1-54)) [v1: state ] -> [v1: symbol ] + daddiu a0, s7, target-flop-hit-ground;; [155] (set! a0-8 'target-flop-hit-ground) [] -> [a0: symbol ] + dsubu v1, v1, a0 ;; [156] (set! a0-9 (= v1-55 a0-8)) [v1: symbol a0: symbol ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L607 ;; [157] (bl! (not a0-9) L607 (no-delay!)) [a0: symbol ] -> [] +B41: + or v1, a0, r0 ;; [158] (set! v1-51 a0-9) [a0: symbol ] -> [v1: symbol ] + +B42: + lwu v1, 108(s6) ;; [159] (set! v1-56 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lw v1, 2180(v1) ;; [160] (set! v1-57 (l.w (+ v1-56 2180))) [v1: control-info ] -> [v1: spool-anim ] + daddiu a0, s7, stuck ;; [161] (set! a0-10 'stuck) [] -> [a0: symbol ] + dsubu a0, v1, a0 ;; [162] (set! v1-51 (!= v1-57 a0-10)) [v1: spool-anim a0: symbol ] -> [v1: symbol ] + daddiu v1, s7, 8 + movz v1, s7, a0 +B43: +L607: + beq s7, v1, L611 ;; [163] (b! (not v1-51) L611 (set! v1-58 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B44: + lw v1, target-jump-event-handler(s7);; [164] (set! v1-59 target-jump-event-handler) + ;; [] -> [v1: (function process int symbol event-message-block object :behavior target) ] + sw v1, 64(s6) ;; [165] (s.w! (+ self 64) v1-59) + ;; [v1: (function process int symbol event-message-block object :behavior target) s6: target ] -> [] + lwu v1, 108(s6) ;; [166] (set! v1-60 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [167] (set! v1-61 (l.wu (+ v1-60 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [168] (set! v1-62 (l.w (+ v1-61 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [169] (set! v1-63 (sll v1-62 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [170] (set! a0-11 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [171] (set! v1-64 (+ v1-63 a0-11)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [172] (set! v1-65 (l.wu (+ v1-64 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 40(v1) ;; [173] (set! v1-66 (l.wu (+ v1-65 40))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 16384 ;; [174] (set! v1-67 (logand v1-66 #x4000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L608 ;; [175] (bl! (zero? v1-67) L608 (no-delay!)) [v1: pad-buttons ] -> [] +B45: + or v1, s7, r0 ;; [176] (set! v1-68 #f) [] -> [v1: '#f ] + +B46: + lw t9, can-jump?(s7) ;; [177] (set! t9-7 can-jump?) [] -> [t9: (function symbol symbol :behavior target) ] + or a0, s7, r0 ;; [178] (set! a0-12 #f) [] -> [a0: '#f ] + jalr ra, t9 ;; [179] (call! a0-12) + ;; [a0: '#f t9: (function symbol symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [180] (set! v1-68 v0-7) [v0: symbol ] -> [v1: symbol ] +B47: +L608: + beq s7, v1, L611 ;; [181] (b! (not v1-68) L611 (set! v1-69 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B48: + lw t9, ja-channel-set!(s7);; [182] (set! t9-8 ja-channel-set!) + ;; [] -> [t9: (function int int :behavior process-drawable) ] + addiu a0, r0, 0 ;; [183] (set! a0-13 0) [] -> [a0: ] + jalr ra, t9 ;; [184] (call! a0-13) + ;; [a0: t9: (function int int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lw t9, enter-state(s7) ;; [185] (set! t9-9 enter-state) [] -> [t9: ] + lw v1, *TARGET-bank*(s7) ;; [186] (set! v1-70 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 36(v1) ;; [187] (set! f0-9 (l.f (+ v1-70 36))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [188] (set! a0-14 (fpr->gpr f0-9)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [189] (set! v1-71 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 40(v1) ;; [190] (set! f0-10 (l.f (+ v1-71 40))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [191] (set! a1-17 (fpr->gpr f0-10)) [] -> [a1: meters ] + beq s7, gp, L609 ;; [192] (b! (not gp-0) L609 (nop!)) [gp: symbol ] -> [] + sll r0, r0, 0 + +B49: + daddiu a2, s7, flop ;; [193] (set! a2-6 'flop) [] -> [a2: symbol ] + beq r0, r0, L610 ;; [194] (b! #t L610 (nop!)) [] -> [] + sll r0, r0, 0 + +B50: +L609: + daddiu a2, s7, flop-forward;; [195] (set! a2-6 'flop-forward) [] -> [a2: symbol ] +B51: +L610: + lw v1, target-high-jump(s7);; [196] (set! v1-72 target-high-jump) [] -> [v1: (state float float basic target) ] + sw v1, 72(s6) ;; [197] (s.w! (+ self 72) v1-72) [v1: (state float float basic target) s6: target ] -> [] + jalr ra, t9 ;; [198] (call! a0-14 a1-17 a2-6) + ;; [a0: meters a1: meters a2: symbol t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [199] (set! v1-73 v0-9) [v0: object ] -> [v1: object ] +B52: +L611: + lwu s6, 44(s6) ;; [200] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [201] (set! v1-74 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [202] (set! v1-75 (l.wu (+ v1-74 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s5, r0, v1 ;; [203] (set! s5-1 (+ v1-75 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + lwu v1, 12(s5) ;; [204] (set! v1-76 (l.wu (+ s5-1 12))) + ;; [s5: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [205] (set! v1-77 (l.wu (+ v1-76 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [206] (set! v1-78 (l.h (+ v1-77 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [207] (set! v1-79 (+ v1-78 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [208] (set! f0-11 (gpr->fpr v1-79)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [209] (set! f0-12 (i2f f0-11)) [] -> [] + swc1 f0, 24(s5) ;; [210] (s.f! (+ s5-1 24) f0-12) [s5: joint-control-channel ] -> [] + lw t9, seek(s7) ;; [211] (set! t9-10 seek) [] -> [t9: (function float float float float) ] + mfc1 a0, f30 ;; [212] (set! a0-15 (fpr->gpr f30-1)) [] -> [a0: float ] + lui v1, L786 ;; [213] (set! v1-80 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lw a1, 0(v1) ;; [214] (set! a1-18 (l.w v1-80)) [v1: ] -> [a1: int ] + lui v1, L752 ;; [215] (set! v1-81 L752) [] -> [v1: ] + ori v1, v1, L752 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [216] (set! f0-13 (l.f v1-81)) [v1: ] -> [] + lw v1, *display*(s7) ;; [217] (set! v1-82 *display*) [] -> [v1: display ] + lwc1 f1, 904(v1) ;; [218] (set! f1-4 (l.f (+ v1-82 904))) [v1: display ] -> [] + mul.s f0, f0, f1 ;; [219] (set! f0-14 (*.s f0-13 f1-4)) [] -> [] + mfc1 a2, f0 ;; [220] (set! a2-7 (fpr->gpr f0-14)) [] -> [a2: float ] + jalr ra, t9 ;; [221] (call! a0-15 a1-18 a2-7) + ;; [a0: float a1: int a2: float t9: (function float float float float) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f30, v0 ;; [222] (set! f30-1 (gpr->fpr v0-10)) [v0: float ] -> [] + swc1 f30, 28(s5) ;; [223] (s.f! (+ s5-1 28) f30-1) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [224] (set! t9-11 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [225] (set! a1-19 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [226] (set! a2-8 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s5, r0 ;; [227] (set! a0-16 s5-1) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [228] (call! a0-16 a1-19 a2-8) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [229] (set! v1-83 v0-11) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [230] (set! t9-12 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [231] (set! a0-17 0) [] -> [a0: ] + jalr ra, t9 ;; [232] (call! a0-17) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L602 ;; [233] (b! (not v0-12) L602 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B53: + or v0, s7, r0 ;; [234] (set! v0-13 #f) [] -> [v0: '#f ] + beq r0, r0, L646 ;; [235] (b! #t L646 (nop!)) [] -> [] + sll r0, r0, 0 + +B54: +L612: + lwu v1, 108(s6) ;; [236] (set! v1-84 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 260(v1) ;; [237] (set! v1-85 (l.wu (+ v1-84 260))) [v1: control-info ] -> [v1: pat-surface ] + dsll32 v1, v1, 20 ;; [238] (set! v1-86 (sll v1-85 52)) [v1: pat-surface ] -> [v1: ( << 52) ] + dsrl32 v1, v1, 26 ;; [239] (set! v1-87 (srl v1-86 58)) [v1: ( << 52) ] -> [v1: pat-material ] + daddiu v1, v1, -1 ;; [240] (set! v1-88 (+ v1-87 -1)) + ;; [v1: pat-material ] -> [v1: ] + daddiu a0, s7, 8 ;; [241] (set! a0-18 (zero? v1-88)) [v1: ] -> [a0: symbol ] + movn a0, s7, v1 + beql s7, a0, L613 ;; [242] (bl! (not a0-18) L613 (no-delay!)) [a0: symbol ] -> [] +B55: + or v1, a0, r0 ;; [243] (set! v1-89 a0-18) [a0: symbol ] -> [v1: symbol ] + +B56: + lui v1, L777 ;; [244] (set! v1-90 L777) [] -> [v1: ] + ori v1, v1, L777 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [245] (set! f0-15 (l.f v1-90)) [v1: ] -> [] + lwu v1, 108(s6) ;; [246] (set! v1-91 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwc1 f1, 528(v1) ;; [247] (set! f1-5 (l.f (+ v1-91 528))) [v1: control-info ] -> [] + c.lt.s f0, f1 ;; [248] (b! (<.s f0-15 f1-5) L613 (set! v1-89 #t)) [] -> [v1: symbol ] + bc1t L613 + daddiu v1, s7, 8 + +B57: + or v1, s7, r0 ;; [249] (set! v1-89 #f) [] -> [v1: '#f ] +B58: +L613: + beq s7, v1, L614 ;; [250] (b! (not v1-89) L614 (set! v1-92 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B59: + or v0, s7, r0 ;; [251] (set! v0-13 #f) [] -> [v0: '#f ] + beq r0, r0, L646 ;; [252] (b! #t L646 (nop!)) [] -> [] + sll r0, r0, 0 + +B60: +L614: + lwu v1, 120(s6) ;; [253] (set! v1-93 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [254] (set! v1-94 (l.w (+ v1-93 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [255] (b! (<=0.si v1-94) L615 (set! v1-95 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L615 + or v1, s7, r0 + +B61: + lwu v1, 120(s6) ;; [256] (set! v1-96 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [257] (set! v1-97 (l.wu (+ v1-96 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [258] (set! v1-95 (l.wu (+ v1-97 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B62: +L615: + lwu a0, 116(s6) ;; [259] (set! a0-19 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [260] (set! a0-20 (l.wu (+ a0-19 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 180(a0) ;; [261] (set! a0-21 (l.wu (+ a0-20 180))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [262] (set! a1-20 (= v1-95 a0-21)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L616 ;; [263] (bl! (truthy a1-20) L616 (no-delay!)) [a1: symbol ] -> [] +B63: + or a0, a1, r0 ;; [264] (set! a0-22 a1-20) [a1: symbol ] -> [a0: symbol ] + +B64: + lwu a0, 116(s6) ;; [265] (set! a0-23 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [266] (set! a0-24 (l.wu (+ a0-23 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 196(a0) ;; [267] (set! a0-25 (l.wu (+ a0-24 196))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [268] (set! a1-21 (= v1-95 a0-25)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L616 ;; [269] (bl! (truthy a1-21) L616 (no-delay!)) [a1: symbol ] -> [] +B65: + or a0, a1, r0 ;; [270] (set! a0-22 a1-21) [a1: symbol ] -> [a0: symbol ] + +B66: + lwu a0, 116(s6) ;; [271] (set! a0-26 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [272] (set! a0-27 (l.wu (+ a0-26 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 200(a0) ;; [273] (set! a0-28 (l.wu (+ a0-27 200))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [274] (set! a0-22 (= v1-95 a0-28)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 +B67: +L616: + bnel s7, a0, L618 ;; [275] (bl! (truthy a0-22) L618 (no-delay!)) [a0: symbol ] -> [] +B68: + or v1, a0, r0 ;; [276] (set! v1-98 a0-22) [a0: symbol ] -> [v1: symbol ] + +B69: + lwu v1, 120(s6) ;; [277] (set! v1-99 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [278] (set! v1-100 (l.w (+ v1-99 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [279] (b! (<=0.si v1-100) L617 (set! v1-101 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L617 + or v1, s7, r0 + +B70: + lwu v1, 120(s6) ;; [280] (set! v1-102 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [281] (set! v1-103 (l.wu (+ v1-102 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [282] (set! v1-101 (l.wu (+ v1-103 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B71: +L617: + lwu a0, 116(s6) ;; [283] (set! a0-29 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [284] (set! a0-30 (l.wu (+ a0-29 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 164(a0) ;; [285] (set! a0-31 (l.wu (+ a0-30 164))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [286] (set! a0-32 (= v1-101 a0-31)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L618 ;; [287] (bl! (not a0-32) L618 (no-delay!)) [a0: symbol ] -> [] +B72: + or v1, a0, r0 ;; [288] (set! v1-98 a0-32) [a0: symbol ] -> [v1: symbol ] + +B73: + lw t9, ja-aframe-num(s7) ;; [289] (set! t9-13 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [290] (set! a0-33 0) [] -> [a0: ] + jalr ra, t9 ;; [291] (call! a0-33) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [292] (set! f0-16 (gpr->fpr v0-14)) [v0: float ] -> [] + lui v1, L745 ;; [293] (set! v1-104 L745) [] -> [v1: ] + ori v1, v1, L745 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [294] (set! f1-6 (l.f v1-104)) [v1: ] -> [] + c.lt.s f0, f1 ;; [295] (b! (>=.s f0-16 f1-6) L618 (set! v1-98 #t)) [] -> [v1: symbol ] + bc1f L618 + daddiu v1, s7, 8 + +B74: + or v1, s7, r0 ;; [296] (set! v1-98 #f) [] -> [v1: '#f ] +B75: +L618: + beq s7, v1, L620 ;; [297] (b! (not v1-98) L620 (set! v1-105 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B76: + lw t9, ja-channel-push!(s7);; [298] (set! t9-14 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [299] (set! a0-34 1) [] -> [a0: ] + addiu a1, r0, 6 ;; [300] (set! a1-22 6) [] -> [a1: ] + jalr ra, t9 ;; [301] (call! a0-34 a1-22) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [302] (set! v1-106 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [303] (set! v1-107 (l.wu (+ v1-106 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [304] (set! a0-35 (+ v1-107 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [305] (set! v1-108 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [306] (set! v1-109 (l.wu (+ v1-108 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 168(v1) ;; [307] (set! v1-110 (l.wu (+ v1-109 168))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [308] (s.w! (+ a0-35 12) v1-110) [v1: art-element a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [309] (set! v1-111 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [310] (set! v1-112 (l.wu (+ v1-111 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 168(v1) ;; [311] (set! v1-113 (l.wu (+ v1-112 168))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [312] (set! (the-as art-joint-anim v1-114) (l.wu (+ v1-113 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [313] (set! v1-115 (l.h (+ v1-114 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [314] (set! v1-116 (+ v1-115 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [315] (set! f0-17 (gpr->fpr v1-116)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [316] (set! f0-18 (i2f f0-17)) [] -> [] + swc1 f0, 24(a0) ;; [317] (s.f! (+ a0-35 24) f0-18) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [318] (set! v1-117 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [319] (set! f0-19 (l.f v1-117)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [320] (s.f! (+ a0-35 28) f0-19) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [321] (set! f0-20 0) [] -> [] + swc1 f0, 16(a0) ;; [322] (s.f! (+ a0-35 16) f0-20) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [323] (set! t9-15 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [324] (set! v1-118 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [325] (set! v1-119 (l.wu (+ v1-118 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 168(v1) ;; [326] (set! a1-23 (l.wu (+ v1-119 168))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [327] (set! a2-9 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [328] (call! a0-35 a1-23 a2-9) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [329] (set! v1-120 v0-16) [v0: int ] -> [v1: int ] +B77: +L619: + lwu s6, 44(s6) ;; [330] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [331] (set! v1-121 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [332] (set! v1-122 (l.wu (+ v1-121 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [333] (set! a0-36 (+ v1-122 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [334] (set! v1-123 (l.wu (+ a0-36 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [335] (set! v1-124 (l.wu (+ v1-123 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [336] (set! v1-125 (l.h (+ v1-124 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [337] (set! v1-126 (+ v1-125 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [338] (set! f0-21 (gpr->fpr v1-126)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [339] (set! f0-22 (i2f f0-21)) [] -> [] + swc1 f0, 24(a0) ;; [340] (s.f! (+ a0-36 24) f0-22) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [341] (set! v1-127 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [342] (set! f0-23 (l.f v1-127)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [343] (s.f! (+ a0-36 28) f0-23) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [344] (set! t9-16 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [345] (set! a1-24 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [346] (set! a2-10 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [347] (call! a0-36 a1-24 a2-10) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [348] (set! v1-128 v0-17) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [349] (set! t9-17 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [350] (set! a0-37 0) [] -> [a0: ] + jalr ra, t9 ;; [351] (call! a0-37) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L619 ;; [352] (b! (not v0-18) L619 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B78: + or v0, s7, r0 ;; [353] (set! v0-13 #f) [] -> [v0: '#f ] + beq r0, r0, L646 ;; [354] (b! #t L646 (nop!)) [] -> [] + sll r0, r0, 0 + +B79: +L620: + lwu v1, 120(s6) ;; [355] (set! v1-129 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [356] (set! v1-130 (l.w (+ v1-129 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [357] (b! (<=0.si v1-130) L621 (set! v1-131 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L621 + or v1, s7, r0 + +B80: + lwu v1, 120(s6) ;; [358] (set! v1-132 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [359] (set! v1-133 (l.wu (+ v1-132 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [360] (set! v1-131 (l.wu (+ v1-133 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B81: +L621: + lwu a0, 116(s6) ;; [361] (set! a0-38 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [362] (set! a0-39 (l.wu (+ a0-38 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 164(a0) ;; [363] (set! a0-40 (l.wu (+ a0-39 164))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [364] (set! a0-41 (= v1-131 a0-40)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L622 ;; [365] (bl! (not a0-41) L622 (no-delay!)) [a0: symbol ] -> [] +B82: + or v1, a0, r0 ;; [366] (set! v1-134 a0-41) [a0: symbol ] -> [v1: symbol ] + +B83: + lw t9, ja-aframe-num(s7) ;; [367] (set! t9-18 ja-aframe-num) + ;; [] -> [t9: (function int float :behavior process-drawable) ] + addiu a0, r0, 0 ;; [368] (set! a0-42 0) [] -> [a0: ] + jalr ra, t9 ;; [369] (call! a0-42) + ;; [a0: t9: (function int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [370] (set! f0-24 (gpr->fpr v0-19)) [v0: float ] -> [] + lui v1, L727 ;; [371] (set! v1-135 L727) [] -> [v1: ] + ori v1, v1, L727 + addu v1, fp, v1 + lwc1 f1, 0(v1) ;; [372] (set! f1-7 (l.f v1-135)) [v1: ] -> [] + c.lt.s f0, f1 ;; [373] (b! (>=.s f0-24 f1-7) L622 (set! v1-134 #t)) [] -> [v1: symbol ] + bc1f L622 + daddiu v1, s7, 8 + +B84: + or v1, s7, r0 ;; [374] (set! v1-134 #f) [] -> [v1: '#f ] +B85: +L622: + beq s7, v1, L625 ;; [375] (b! (not v1-134) L625 (set! v1-136 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B86: + lw t9, ja-channel-set!(s7);; [376] (set! t9-19 ja-channel-set!) + ;; [] -> [t9: (function int int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [377] (set! a0-43 1) [] -> [a0: ] + jalr ra, t9 ;; [378] (call! a0-43) + ;; [a0: t9: (function int int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [379] (set! v1-137 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [380] (set! v1-138 (l.wu (+ v1-137 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [381] (set! a0-44 (+ v1-138 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [382] (set! v1-139 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [383] (set! v1-140 (l.wu (+ v1-139 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 184(v1) ;; [384] (set! v1-141 (l.wu (+ v1-140 184))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [385] (s.w! (+ a0-44 12) v1-141) [v1: art-element a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [386] (set! v1-142 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [387] (set! v1-143 (l.wu (+ v1-142 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 184(v1) ;; [388] (set! v1-144 (l.wu (+ v1-143 184))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [389] (set! (the-as art-joint-anim v1-145) (l.wu (+ v1-144 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [390] (set! v1-146 (l.h (+ v1-145 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [391] (set! v1-147 (+ v1-146 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [392] (set! f0-25 (gpr->fpr v1-147)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [393] (set! f0-26 (i2f f0-25)) [] -> [] + swc1 f0, 24(a0) ;; [394] (s.f! (+ a0-44 24) f0-26) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [395] (set! v1-148 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [396] (set! f0-27 (l.f v1-148)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [397] (s.f! (+ a0-44 28) f0-27) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [398] (set! f0-28 0) [] -> [] + swc1 f0, 16(a0) ;; [399] (s.f! (+ a0-44 16) f0-28) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [400] (set! t9-20 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [401] (set! v1-149 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [402] (set! v1-150 (l.wu (+ v1-149 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 184(v1) ;; [403] (set! a1-25 (l.wu (+ v1-150 184))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [404] (set! a2-11 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [405] (call! a0-44 a1-25 a2-11) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [406] (set! v1-151 v0-21) [v0: int ] -> [v1: int ] +B87: +L623: + lwu s6, 44(s6) ;; [407] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [408] (set! v1-152 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [409] (set! v1-153 (l.wu (+ v1-152 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [410] (set! a0-45 (+ v1-153 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [411] (set! v1-154 (l.wu (+ a0-45 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [412] (set! v1-155 (l.wu (+ v1-154 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [413] (set! v1-156 (l.h (+ v1-155 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [414] (set! v1-157 (+ v1-156 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [415] (set! f0-29 (gpr->fpr v1-157)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [416] (set! f0-30 (i2f f0-29)) [] -> [] + swc1 f0, 24(a0) ;; [417] (s.f! (+ a0-45 24) f0-30) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [418] (set! v1-158 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [419] (set! f0-31 (l.f v1-158)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [420] (s.f! (+ a0-45 28) f0-31) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [421] (set! t9-21 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [422] (set! a1-26 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [423] (set! a2-12 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [424] (call! a0-45 a1-26 a2-12) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [425] (set! v1-159 v0-22) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [426] (set! t9-22 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [427] (set! a0-46 0) [] -> [a0: ] + jalr ra, t9 ;; [428] (call! a0-46) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L623 ;; [429] (b! (not v0-23) L623 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B88: + or v1, s7, r0 ;; [430] (set! v1-160 #f) [] -> [v1: '#f ] + lwu v1, 120(s6) ;; [431] (set! v1-161 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [432] (set! v1-162 (l.wu (+ v1-161 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu gp, r0, v1 ;; [433] (set! gp-1 (+ v1-162 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lwu v1, 116(s6) ;; [434] (set! v1-163 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [435] (set! v1-164 (l.wu (+ v1-163 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 168(v1) ;; [436] (set! v1-165 (l.wu (+ v1-164 168))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(gp) ;; [437] (s.w! (+ gp-1 12) v1-165) [v1: art-element gp: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [438] (set! v1-166 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [439] (set! v1-167 (l.wu (+ v1-166 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 168(v1) ;; [440] (set! v1-168 (l.wu (+ v1-167 168))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [441] (set! (the-as art-joint-anim v1-169) (l.wu (+ v1-168 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [442] (set! v1-170 (l.h (+ v1-169 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [443] (set! v1-171 (+ v1-170 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [444] (set! f0-32 (gpr->fpr v1-171)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [445] (set! f0-33 (i2f f0-32)) [] -> [] + swc1 f0, 24(gp) ;; [446] (s.f! (+ gp-1 24) f0-33) [gp: joint-control-channel ] -> [] + lui v1, L786 ;; [447] (set! v1-172 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [448] (set! f0-34 (l.f v1-172)) [v1: ] -> [] + swc1 f0, 28(gp) ;; [449] (s.f! (+ gp-1 28) f0-34) [gp: joint-control-channel ] -> [] + lw t9, ja-aframe(s7) ;; [450] (set! t9-23 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L746 ;; [451] (set! v1-173 L746) [] -> [v1: ] + ori v1, v1, L746 + addu v1, fp, v1 + lw a0, 0(v1) ;; [452] (set! a0-47 (l.w v1-173)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [453] (set! a1-27 0) [] -> [a1: ] + jalr ra, t9 ;; [454] (call! a0-47 a1-27) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [455] (set! f0-35 (gpr->fpr v0-24)) [v0: float ] -> [] + swc1 f0, 16(gp) ;; [456] (s.f! (+ gp-1 16) f0-35) [gp: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [457] (set! t9-24 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [458] (set! v1-174 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [459] (set! v1-175 (l.wu (+ v1-174 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 168(v1) ;; [460] (set! a1-28 (l.wu (+ v1-175 168))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [461] (set! a2-13 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, gp, r0 ;; [462] (set! a0-48 gp-1) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [463] (call! a0-48 a1-28 a2-13) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [464] (set! v1-176 v0-25) [v0: int ] -> [v1: int ] +B89: +L624: + lwu s6, 44(s6) ;; [465] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [466] (set! v1-177 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [467] (set! v1-178 (l.wu (+ v1-177 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [468] (set! a0-49 (+ v1-178 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [469] (set! v1-179 (l.wu (+ a0-49 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [470] (set! v1-180 (l.wu (+ v1-179 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [471] (set! v1-181 (l.h (+ v1-180 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [472] (set! v1-182 (+ v1-181 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [473] (set! f0-36 (gpr->fpr v1-182)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [474] (set! f0-37 (i2f f0-36)) [] -> [] + swc1 f0, 24(a0) ;; [475] (s.f! (+ a0-49 24) f0-37) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [476] (set! v1-183 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [477] (set! f0-38 (l.f v1-183)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [478] (s.f! (+ a0-49 28) f0-38) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [479] (set! t9-25 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [480] (set! a1-29 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [481] (set! a2-14 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [482] (call! a0-49 a1-29 a2-14) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [483] (set! v1-184 v0-26) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [484] (set! t9-26 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [485] (set! a0-50 0) [] -> [a0: ] + jalr ra, t9 ;; [486] (call! a0-50) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L624 ;; [487] (b! (not v0-27) L624 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B90: + or v0, s7, r0 ;; [488] (set! v0-13 #f) [] -> [v0: '#f ] + beq r0, r0, L646 ;; [489] (b! #t L646 (nop!)) [] -> [] + sll r0, r0, 0 + +B91: +L625: + lwu v1, 120(s6) ;; [490] (set! v1-185 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [491] (set! v1-186 (l.w (+ v1-185 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [492] (b! (<=0.si v1-186) L626 (set! v1-187 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L626 + or v1, s7, r0 + +B92: + lwu v1, 120(s6) ;; [493] (set! v1-188 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [494] (set! v1-189 (l.wu (+ v1-188 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [495] (set! v1-187 (l.wu (+ v1-189 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B93: +L626: + lwu a0, 116(s6) ;; [496] (set! a0-51 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [497] (set! a0-52 (l.wu (+ a0-51 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 164(a0) ;; [498] (set! a0-53 (l.wu (+ a0-52 164))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [499] (set! a1-30 (= v1-187 a0-53)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L627 ;; [500] (bl! (truthy a1-30) L627 (no-delay!)) [a1: symbol ] -> [] +B94: + or a0, a1, r0 ;; [501] (set! a0-54 a1-30) [a1: symbol ] -> [a0: symbol ] + +B95: + lwu a0, 116(s6) ;; [502] (set! a0-55 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [503] (set! a0-56 (l.wu (+ a0-55 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 192(a0) ;; [504] (set! a0-57 (l.wu (+ a0-56 192))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [505] (set! a0-54 (= v1-187 a0-57)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 +B96: +L627: + beq s7, a0, L630 ;; [506] (b! (not a0-54) L630 (set! v1-190 #f)) [a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B97: + lw t9, ja-channel-set!(s7);; [507] (set! t9-27 ja-channel-set!) + ;; [] -> [t9: (function int int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [508] (set! a0-58 1) [] -> [a0: ] + jalr ra, t9 ;; [509] (call! a0-58) + ;; [a0: t9: (function int int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [510] (set! v1-191 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [511] (set! v1-192 (l.wu (+ v1-191 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu gp, r0, v1 ;; [512] (set! gp-2 (+ v1-192 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lwu v1, 116(s6) ;; [513] (set! v1-193 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [514] (set! v1-194 (l.wu (+ v1-193 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 184(v1) ;; [515] (set! v1-195 (l.wu (+ v1-194 184))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(gp) ;; [516] (s.w! (+ gp-2 12) v1-195) [v1: art-element gp: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [517] (set! v1-196 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [518] (set! v1-197 (l.wu (+ v1-196 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 184(v1) ;; [519] (set! v1-198 (l.wu (+ v1-197 184))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [520] (set! (the-as art-joint-anim v1-199) (l.wu (+ v1-198 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [521] (set! v1-200 (l.h (+ v1-199 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [522] (set! v1-201 (+ v1-200 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [523] (set! f0-39 (gpr->fpr v1-201)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [524] (set! f0-40 (i2f f0-39)) [] -> [] + swc1 f0, 24(gp) ;; [525] (s.f! (+ gp-2 24) f0-40) [gp: joint-control-channel ] -> [] + lui v1, L786 ;; [526] (set! v1-202 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [527] (set! f0-41 (l.f v1-202)) [v1: ] -> [] + swc1 f0, 28(gp) ;; [528] (s.f! (+ gp-2 28) f0-41) [gp: joint-control-channel ] -> [] + lw t9, ja-aframe(s7) ;; [529] (set! t9-28 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L745 ;; [530] (set! v1-203 L745) [] -> [v1: ] + ori v1, v1, L745 + addu v1, fp, v1 + lw a0, 0(v1) ;; [531] (set! a0-59 (l.w v1-203)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [532] (set! a1-31 0) [] -> [a1: ] + jalr ra, t9 ;; [533] (call! a0-59 a1-31) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [534] (set! f0-42 (gpr->fpr v0-29)) [v0: float ] -> [] + swc1 f0, 16(gp) ;; [535] (s.f! (+ gp-2 16) f0-42) [gp: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [536] (set! t9-29 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [537] (set! v1-204 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [538] (set! v1-205 (l.wu (+ v1-204 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 184(v1) ;; [539] (set! a1-32 (l.wu (+ v1-205 184))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [540] (set! a2-15 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, gp, r0 ;; [541] (set! a0-60 gp-2) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [542] (call! a0-60 a1-32 a2-15) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [543] (set! v1-206 v0-30) [v0: int ] -> [v1: int ] +B98: +L628: + lwu s6, 44(s6) ;; [544] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [545] (set! v1-207 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [546] (set! v1-208 (l.wu (+ v1-207 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [547] (set! a0-61 (+ v1-208 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [548] (set! v1-209 (l.wu (+ a0-61 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [549] (set! v1-210 (l.wu (+ v1-209 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [550] (set! v1-211 (l.h (+ v1-210 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [551] (set! v1-212 (+ v1-211 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [552] (set! f0-43 (gpr->fpr v1-212)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [553] (set! f0-44 (i2f f0-43)) [] -> [] + swc1 f0, 24(a0) ;; [554] (s.f! (+ a0-61 24) f0-44) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [555] (set! v1-213 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [556] (set! f0-45 (l.f v1-213)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [557] (s.f! (+ a0-61 28) f0-45) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [558] (set! t9-30 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [559] (set! a1-33 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [560] (set! a2-16 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [561] (call! a0-61 a1-33 a2-16) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [562] (set! v1-214 v0-31) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [563] (set! t9-31 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [564] (set! a0-62 0) [] -> [a0: ] + jalr ra, t9 ;; [565] (call! a0-62) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L628 ;; [566] (b! (not v0-32) L628 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B99: + or v1, s7, r0 ;; [567] (set! v1-215 #f) [] -> [v1: '#f ] + lwu v1, 120(s6) ;; [568] (set! v1-216 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [569] (set! v1-217 (l.wu (+ v1-216 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu gp, r0, v1 ;; [570] (set! gp-3 (+ v1-217 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lwu v1, 116(s6) ;; [571] (set! v1-218 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [572] (set! v1-219 (l.wu (+ v1-218 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 168(v1) ;; [573] (set! v1-220 (l.wu (+ v1-219 168))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(gp) ;; [574] (s.w! (+ gp-3 12) v1-220) [v1: art-element gp: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [575] (set! v1-221 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [576] (set! v1-222 (l.wu (+ v1-221 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 168(v1) ;; [577] (set! v1-223 (l.wu (+ v1-222 168))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [578] (set! (the-as art-joint-anim v1-224) (l.wu (+ v1-223 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [579] (set! v1-225 (l.h (+ v1-224 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [580] (set! v1-226 (+ v1-225 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [581] (set! f0-46 (gpr->fpr v1-226)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [582] (set! f0-47 (i2f f0-46)) [] -> [] + swc1 f0, 24(gp) ;; [583] (s.f! (+ gp-3 24) f0-47) [gp: joint-control-channel ] -> [] + lui v1, L786 ;; [584] (set! v1-227 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [585] (set! f0-48 (l.f v1-227)) [v1: ] -> [] + swc1 f0, 28(gp) ;; [586] (s.f! (+ gp-3 28) f0-48) [gp: joint-control-channel ] -> [] + lw t9, ja-aframe(s7) ;; [587] (set! t9-32 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L746 ;; [588] (set! v1-228 L746) [] -> [v1: ] + ori v1, v1, L746 + addu v1, fp, v1 + lw a0, 0(v1) ;; [589] (set! a0-63 (l.w v1-228)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [590] (set! a1-34 0) [] -> [a1: ] + jalr ra, t9 ;; [591] (call! a0-63 a1-34) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [592] (set! f0-49 (gpr->fpr v0-33)) [v0: float ] -> [] + swc1 f0, 16(gp) ;; [593] (s.f! (+ gp-3 16) f0-49) [gp: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [594] (set! t9-33 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [595] (set! v1-229 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [596] (set! v1-230 (l.wu (+ v1-229 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 168(v1) ;; [597] (set! a1-35 (l.wu (+ v1-230 168))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [598] (set! a2-17 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, gp, r0 ;; [599] (set! a0-64 gp-3) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [600] (call! a0-64 a1-35 a2-17) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [601] (set! v1-231 v0-34) [v0: int ] -> [v1: int ] +B100: +L629: + lwu s6, 44(s6) ;; [602] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [603] (set! v1-232 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [604] (set! v1-233 (l.wu (+ v1-232 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [605] (set! a0-65 (+ v1-233 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [606] (set! v1-234 (l.wu (+ a0-65 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [607] (set! v1-235 (l.wu (+ v1-234 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [608] (set! v1-236 (l.h (+ v1-235 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [609] (set! v1-237 (+ v1-236 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [610] (set! f0-50 (gpr->fpr v1-237)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [611] (set! f0-51 (i2f f0-50)) [] -> [] + swc1 f0, 24(a0) ;; [612] (s.f! (+ a0-65 24) f0-51) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [613] (set! v1-238 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [614] (set! f0-52 (l.f v1-238)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [615] (s.f! (+ a0-65 28) f0-52) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [616] (set! t9-34 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [617] (set! a1-36 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [618] (set! a2-18 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [619] (call! a0-65 a1-36 a2-18) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [620] (set! v1-239 v0-35) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [621] (set! t9-35 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [622] (set! a0-66 0) [] -> [a0: ] + jalr ra, t9 ;; [623] (call! a0-66) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L629 ;; [624] (b! (not v0-36) L629 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B101: + or v0, s7, r0 ;; [625] (set! v0-13 #f) [] -> [v0: '#f ] + beq r0, r0, L646 ;; [626] (b! #t L646 (nop!)) [] -> [] + sll r0, r0, 0 + +B102: +L630: + lwu v1, 120(s6) ;; [627] (set! v1-240 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [628] (set! v1-241 (l.w (+ v1-240 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [629] (b! (<=0.si v1-241) L631 (set! v1-242 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L631 + or v1, s7, r0 + +B103: + lwu v1, 120(s6) ;; [630] (set! v1-243 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [631] (set! v1-244 (l.wu (+ v1-243 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [632] (set! v1-242 (l.wu (+ v1-244 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B104: +L631: + lwu a0, 116(s6) ;; [633] (set! a0-67 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [634] (set! a0-68 (l.wu (+ a0-67 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 320(a0) ;; [635] (set! a0-69 (l.wu (+ a0-68 320))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [636] (set! a1-37 (= v1-242 a0-69)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L632 ;; [637] (bl! (truthy a1-37) L632 (no-delay!)) [a1: symbol ] -> [] +B105: + or a0, a1, r0 ;; [638] (set! a0-70 a1-37) [a1: symbol ] -> [a0: symbol ] + +B106: + lwu a0, 116(s6) ;; [639] (set! a0-71 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [640] (set! a0-72 (l.wu (+ a0-71 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 324(a0) ;; [641] (set! a0-73 (l.wu (+ a0-72 324))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [642] (set! a0-70 (= v1-242 a0-73)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 +B107: +L632: + beq s7, a0, L638 ;; [643] (b! (not a0-70) L638 (set! v1-245 #f)) [a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B108: + lwu v1, 120(s6) ;; [644] (set! v1-246 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [645] (set! v1-247 (l.w (+ v1-246 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [646] (b! (<=0.si v1-247) L633 (set! v1-248 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L633 + or v1, s7, r0 + +B109: + lwu v1, 120(s6) ;; [647] (set! v1-249 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [648] (set! v1-250 (l.wu (+ v1-249 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [649] (set! v1-248 (l.wu (+ v1-250 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B110: +L633: + lwu a0, 116(s6) ;; [650] (set! a0-74 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [651] (set! a0-75 (l.wu (+ a0-74 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 324(a0) ;; [652] (set! a0-76 (l.wu (+ a0-75 324))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [653] (set! a0-77 (= v1-248 a0-76)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L634 ;; [654] (b! (not a0-77) L634 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B111: + lui v1, L737 ;; [655] (set! v1-251 L737) [] -> [v1: ] + ori v1, v1, L737 + addu v1, fp, v1 + lw v1, 0(v1) ;; [656] (set! v1-252 (l.w v1-251)) [v1: ] -> [v1: int ] + beq r0, r0, L635 ;; [657] (b! #t L635 (nop!)) [] -> [] + sll r0, r0, 0 + +B112: +L634: + lui v1, L738 ;; [658] (set! v1-253 L738) [] -> [v1: ] + ori v1, v1, L738 + addu v1, fp, v1 + lw v1, 0(v1) ;; [659] (set! v1-252 (l.w v1-253)) [v1: ] -> [v1: int ] +B113: +L635: + mtc1 f30, v1 ;; [660] (set! f30-2 (gpr->fpr (the-as float v1-252))) [v1: float ] -> [] + lw t9, ja-channel-push!(s7);; [661] (set! t9-36 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [662] (set! a0-78 1) [] -> [a0: ] + addiu a1, r0, 12 ;; [663] (set! a1-38 12) [] -> [a1: ] + jalr ra, t9 ;; [664] (call! a0-78 a1-38) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [665] (set! v1-254 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [666] (set! v1-255 (l.wu (+ v1-254 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu gp, r0, v1 ;; [667] (set! gp-4 (+ v1-255 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lwu v1, 116(s6) ;; [668] (set! v1-256 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [669] (set! v1-257 (l.wu (+ v1-256 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 184(v1) ;; [670] (set! v1-258 (l.wu (+ v1-257 184))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(gp) ;; [671] (s.w! (+ gp-4 12) v1-258) [v1: art-element gp: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [672] (set! v1-259 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [673] (set! v1-260 (l.wu (+ v1-259 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 184(v1) ;; [674] (set! v1-261 (l.wu (+ v1-260 184))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [675] (set! (the-as art-joint-anim v1-262) (l.wu (+ v1-261 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [676] (set! v1-263 (l.h (+ v1-262 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [677] (set! v1-264 (+ v1-263 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [678] (set! f0-53 (gpr->fpr v1-264)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [679] (set! f0-54 (i2f f0-53)) [] -> [] + swc1 f0, 24(gp) ;; [680] (s.f! (+ gp-4 24) f0-54) [gp: joint-control-channel ] -> [] + lui v1, L786 ;; [681] (set! v1-265 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [682] (set! f0-55 (l.f v1-265)) [v1: ] -> [] + swc1 f0, 28(gp) ;; [683] (s.f! (+ gp-4 28) f0-55) [gp: joint-control-channel ] -> [] + lw t9, ja-aframe(s7) ;; [684] (set! t9-37 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L745 ;; [685] (set! v1-266 L745) [] -> [v1: ] + ori v1, v1, L745 + addu v1, fp, v1 + lw a0, 0(v1) ;; [686] (set! a0-79 (l.w v1-266)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [687] (set! a1-39 0) [] -> [a1: ] + jalr ra, t9 ;; [688] (call! a0-79 a1-39) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [689] (set! f0-56 (gpr->fpr v0-38)) [v0: float ] -> [] + swc1 f0, 16(gp) ;; [690] (s.f! (+ gp-4 16) f0-56) [gp: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [691] (set! t9-38 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [692] (set! v1-267 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [693] (set! v1-268 (l.wu (+ v1-267 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 184(v1) ;; [694] (set! a1-40 (l.wu (+ v1-268 184))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [695] (set! a2-19 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, gp, r0 ;; [696] (set! a0-80 gp-4) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [697] (call! a0-80 a1-40 a2-19) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [698] (set! v1-269 v0-39) [v0: int ] -> [v1: int ] +B114: +L636: + lw t9, set-forward-vel(s7);; [699] (set! t9-39 set-forward-vel) [] -> [t9: (function float vector :behavior target) ] + mfc1 a0, f30 ;; [700] (set! a0-81 (fpr->gpr f30-2)) [] -> [a0: float ] + jalr ra, t9 ;; [701] (call! a0-81) + ;; [a0: float t9: (function float vector :behavior target) ] -> [v0: vector ] + sll v0, ra, 0 + + lwu s6, 44(s6) ;; [702] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [703] (set! v1-270 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [704] (set! v1-271 (l.wu (+ v1-270 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [705] (set! a0-82 (+ v1-271 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [706] (set! v1-272 (l.wu (+ a0-82 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [707] (set! v1-273 (l.wu (+ v1-272 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [708] (set! v1-274 (l.h (+ v1-273 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [709] (set! v1-275 (+ v1-274 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [710] (set! f0-57 (gpr->fpr v1-275)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [711] (set! f0-58 (i2f f0-57)) [] -> [] + swc1 f0, 24(a0) ;; [712] (s.f! (+ a0-82 24) f0-58) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [713] (set! v1-276 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [714] (set! f0-59 (l.f v1-276)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [715] (s.f! (+ a0-82 28) f0-59) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [716] (set! t9-40 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [717] (set! a1-41 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [718] (set! a2-20 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [719] (call! a0-82 a1-41 a2-20) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [720] (set! v1-277 v0-41) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [721] (set! t9-41 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [722] (set! a0-83 0) [] -> [a0: ] + jalr ra, t9 ;; [723] (call! a0-83) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L636 ;; [724] (b! (not v0-42) L636 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B115: + or v1, s7, r0 ;; [725] (set! v1-278 #f) [] -> [v1: '#f ] + lwu v1, 120(s6) ;; [726] (set! v1-279 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [727] (set! v1-280 (l.wu (+ v1-279 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu gp, r0, v1 ;; [728] (set! gp-5 (+ v1-280 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lwu v1, 116(s6) ;; [729] (set! v1-281 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [730] (set! v1-282 (l.wu (+ v1-281 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 168(v1) ;; [731] (set! v1-283 (l.wu (+ v1-282 168))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(gp) ;; [732] (s.w! (+ gp-5 12) v1-283) [v1: art-element gp: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [733] (set! v1-284 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [734] (set! v1-285 (l.wu (+ v1-284 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 168(v1) ;; [735] (set! v1-286 (l.wu (+ v1-285 168))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [736] (set! (the-as art-joint-anim v1-287) (l.wu (+ v1-286 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [737] (set! v1-288 (l.h (+ v1-287 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [738] (set! v1-289 (+ v1-288 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [739] (set! f0-60 (gpr->fpr v1-289)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [740] (set! f0-61 (i2f f0-60)) [] -> [] + swc1 f0, 24(gp) ;; [741] (s.f! (+ gp-5 24) f0-61) [gp: joint-control-channel ] -> [] + lui v1, L786 ;; [742] (set! v1-290 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [743] (set! f0-62 (l.f v1-290)) [v1: ] -> [] + swc1 f0, 28(gp) ;; [744] (s.f! (+ gp-5 28) f0-62) [gp: joint-control-channel ] -> [] + lw t9, ja-aframe(s7) ;; [745] (set! t9-42 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L746 ;; [746] (set! v1-291 L746) [] -> [v1: ] + ori v1, v1, L746 + addu v1, fp, v1 + lw a0, 0(v1) ;; [747] (set! a0-84 (l.w v1-291)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [748] (set! a1-42 0) [] -> [a1: ] + jalr ra, t9 ;; [749] (call! a0-84 a1-42) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [750] (set! f0-63 (gpr->fpr v0-43)) [v0: float ] -> [] + swc1 f0, 16(gp) ;; [751] (s.f! (+ gp-5 16) f0-63) [gp: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [752] (set! t9-43 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [753] (set! v1-292 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [754] (set! v1-293 (l.wu (+ v1-292 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 168(v1) ;; [755] (set! a1-43 (l.wu (+ v1-293 168))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [756] (set! a2-21 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, gp, r0 ;; [757] (set! a0-85 gp-5) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [758] (call! a0-85 a1-43 a2-21) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [759] (set! v1-294 v0-44) [v0: int ] -> [v1: int ] +B116: +L637: + lwu s6, 44(s6) ;; [760] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [761] (set! v1-295 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [762] (set! v1-296 (l.wu (+ v1-295 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [763] (set! a0-86 (+ v1-296 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [764] (set! v1-297 (l.wu (+ a0-86 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [765] (set! v1-298 (l.wu (+ v1-297 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [766] (set! v1-299 (l.h (+ v1-298 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [767] (set! v1-300 (+ v1-299 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [768] (set! f0-64 (gpr->fpr v1-300)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [769] (set! f0-65 (i2f f0-64)) [] -> [] + swc1 f0, 24(a0) ;; [770] (s.f! (+ a0-86 24) f0-65) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [771] (set! v1-301 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [772] (set! f0-66 (l.f v1-301)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [773] (s.f! (+ a0-86 28) f0-66) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [774] (set! t9-44 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [775] (set! a1-44 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [776] (set! a2-22 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [777] (call! a0-86 a1-44 a2-22) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [778] (set! v1-302 v0-45) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [779] (set! t9-45 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [780] (set! a0-87 0) [] -> [a0: ] + jalr ra, t9 ;; [781] (call! a0-87) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L637 ;; [782] (b! (not v0-46) L637 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B117: + or v0, s7, r0 ;; [783] (set! v0-13 #f) [] -> [v0: '#f ] + beq r0, r0, L646 ;; [784] (b! #t L646 (nop!)) [] -> [] + sll r0, r0, 0 + +B118: +L638: + lwu v1, 120(s6) ;; [785] (set! v1-303 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [786] (set! v1-304 (l.w (+ v1-303 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [787] (b! (<=0.si v1-304) L639 (set! v1-305 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L639 + or v1, s7, r0 + +B119: + lwu v1, 120(s6) ;; [788] (set! v1-306 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [789] (set! v1-307 (l.wu (+ v1-306 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [790] (set! v1-305 (l.wu (+ v1-307 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B120: +L639: + lwu a0, 116(s6) ;; [791] (set! a0-88 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [792] (set! a0-89 (l.wu (+ a0-88 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 164(a0) ;; [793] (set! a0-90 (l.wu (+ a0-89 164))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [794] (set! a1-45 (= v1-305 a0-90)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L640 ;; [795] (bl! (truthy a1-45) L640 (no-delay!)) [a1: symbol ] -> [] +B121: + or a0, a1, r0 ;; [796] (set! a0-91 a1-45) [a1: symbol ] -> [a0: symbol ] + +B122: + lwu a0, 116(s6) ;; [797] (set! a0-92 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [798] (set! a0-93 (l.wu (+ a0-92 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 252(a0) ;; [799] (set! a0-94 (l.wu (+ a0-93 252))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [800] (set! a1-46 (= v1-305 a0-94)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L640 ;; [801] (bl! (truthy a1-46) L640 (no-delay!)) [a1: symbol ] -> [] +B123: + or a0, a1, r0 ;; [802] (set! a0-91 a1-46) [a1: symbol ] -> [a0: symbol ] + +B124: + lwu a0, 116(s6) ;; [803] (set! a0-95 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [804] (set! a0-96 (l.wu (+ a0-95 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 256(a0) ;; [805] (set! a0-97 (l.wu (+ a0-96 256))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [806] (set! a1-47 (= v1-305 a0-97)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L640 ;; [807] (bl! (truthy a1-47) L640 (no-delay!)) [a1: symbol ] -> [] +B125: + or a0, a1, r0 ;; [808] (set! a0-91 a1-47) [a1: symbol ] -> [a0: symbol ] + +B126: + lwu a0, 116(s6) ;; [809] (set! a0-98 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [810] (set! a0-99 (l.wu (+ a0-98 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 260(a0) ;; [811] (set! a0-100 (l.wu (+ a0-99 260))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [812] (set! a1-48 (= v1-305 a0-100)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L640 ;; [813] (bl! (truthy a1-48) L640 (no-delay!)) [a1: symbol ] -> [] +B127: + or a0, a1, r0 ;; [814] (set! a0-91 a1-48) [a1: symbol ] -> [a0: symbol ] + +B128: + lwu a0, 116(s6) ;; [815] (set! a0-101 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [816] (set! a0-102 (l.wu (+ a0-101 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 300(a0) ;; [817] (set! a0-103 (l.wu (+ a0-102 300))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [818] (set! a1-49 (= v1-305 a0-103)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L640 ;; [819] (bl! (truthy a1-49) L640 (no-delay!)) [a1: symbol ] -> [] +B129: + or a0, a1, r0 ;; [820] (set! a0-91 a1-49) [a1: symbol ] -> [a0: symbol ] + +B130: + lwu a0, 116(s6) ;; [821] (set! a0-104 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [822] (set! a0-105 (l.wu (+ a0-104 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 288(a0) ;; [823] (set! a0-106 (l.wu (+ a0-105 288))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [824] (set! a1-50 (= v1-305 a0-106)) + ;; [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L640 ;; [825] (bl! (truthy a1-50) L640 (no-delay!)) [a1: symbol ] -> [] +B131: + or a0, a1, r0 ;; [826] (set! a0-91 a1-50) [a1: symbol ] -> [a0: symbol ] + +B132: + lwu a0, 116(s6) ;; [827] (set! a0-107 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [828] (set! a0-108 (l.wu (+ a0-107 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 276(a0) ;; [829] (set! a0-109 (l.wu (+ a0-108 276))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [830] (set! a0-91 (= v1-305 a0-109)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 +B133: +L640: + beq s7, a0, L642 ;; [831] (b! (not a0-91) L642 (set! v1-308 #f)) [a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B134: + lw t9, ja-channel-push!(s7);; [832] (set! t9-46 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [833] (set! a0-110 1) [] -> [a0: ] + addiu a1, r0, 12 ;; [834] (set! a1-51 12) [] -> [a1: ] + jalr ra, t9 ;; [835] (call! a0-110 a1-51) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [836] (set! v1-309 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [837] (set! v1-310 (l.wu (+ v1-309 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu gp, r0, v1 ;; [838] (set! gp-6 (+ v1-310 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [gp: joint-control-channel ] + lwu v1, 116(s6) ;; [839] (set! v1-311 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [840] (set! v1-312 (l.wu (+ v1-311 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 168(v1) ;; [841] (set! v1-313 (l.wu (+ v1-312 168))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(gp) ;; [842] (s.w! (+ gp-6 12) v1-313) [v1: art-element gp: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [843] (set! v1-314 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [844] (set! v1-315 (l.wu (+ v1-314 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 168(v1) ;; [845] (set! v1-316 (l.wu (+ v1-315 168))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [846] (set! (the-as art-joint-anim v1-317) (l.wu (+ v1-316 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [847] (set! v1-318 (l.h (+ v1-317 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [848] (set! v1-319 (+ v1-318 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [849] (set! f0-67 (gpr->fpr v1-319)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [850] (set! f0-68 (i2f f0-67)) [] -> [] + swc1 f0, 24(gp) ;; [851] (s.f! (+ gp-6 24) f0-68) [gp: joint-control-channel ] -> [] + lui v1, L786 ;; [852] (set! v1-320 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [853] (set! f0-69 (l.f v1-320)) [v1: ] -> [] + swc1 f0, 28(gp) ;; [854] (s.f! (+ gp-6 28) f0-69) [gp: joint-control-channel ] -> [] + lw t9, ja-aframe(s7) ;; [855] (set! t9-47 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L744 ;; [856] (set! v1-321 L744) [] -> [v1: ] + ori v1, v1, L744 + addu v1, fp, v1 + lw a0, 0(v1) ;; [857] (set! a0-111 (l.w v1-321)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [858] (set! a1-52 0) [] -> [a1: ] + jalr ra, t9 ;; [859] (call! a0-111 a1-52) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [860] (set! f0-70 (gpr->fpr v0-48)) [v0: float ] -> [] + swc1 f0, 16(gp) ;; [861] (s.f! (+ gp-6 16) f0-70) [gp: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [862] (set! t9-48 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [863] (set! v1-322 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [864] (set! v1-323 (l.wu (+ v1-322 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 168(v1) ;; [865] (set! a1-53 (l.wu (+ v1-323 168))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [866] (set! a2-23 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, gp, r0 ;; [867] (set! a0-112 gp-6) [gp: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [868] (call! a0-112 a1-53 a2-23) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [869] (set! v1-324 v0-49) [v0: int ] -> [v1: int ] +B135: +L641: + lwu s6, 44(s6) ;; [870] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [871] (set! v1-325 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [872] (set! v1-326 (l.wu (+ v1-325 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [873] (set! a0-113 (+ v1-326 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [874] (set! v1-327 (l.wu (+ a0-113 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [875] (set! v1-328 (l.wu (+ v1-327 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [876] (set! v1-329 (l.h (+ v1-328 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [877] (set! v1-330 (+ v1-329 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [878] (set! f0-71 (gpr->fpr v1-330)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [879] (set! f0-72 (i2f f0-71)) [] -> [] + swc1 f0, 24(a0) ;; [880] (s.f! (+ a0-113 24) f0-72) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [881] (set! v1-331 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [882] (set! f0-73 (l.f v1-331)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [883] (s.f! (+ a0-113 28) f0-73) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [884] (set! t9-49 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [885] (set! a1-54 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [886] (set! a2-24 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [887] (call! a0-113 a1-54 a2-24) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [888] (set! v1-332 v0-50) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [889] (set! t9-50 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [890] (set! a0-114 0) [] -> [a0: ] + jalr ra, t9 ;; [891] (call! a0-114) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L641 ;; [892] (b! (not v0-51) L641 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B136: + or v0, s7, r0 ;; [893] (set! v0-13 #f) [] -> [v0: '#f ] + beq r0, r0, L646 ;; [894] (b! #t L646 (nop!)) [] -> [] + sll r0, r0, 0 + +B137: +L642: + lwu v1, 120(s6) ;; [895] (set! v1-333 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [896] (set! v1-334 (l.w (+ v1-333 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [897] (b! (<=0.si v1-334) L643 (set! v1-335 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L643 + or v1, s7, r0 + +B138: + lwu v1, 120(s6) ;; [898] (set! v1-336 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [899] (set! v1-337 (l.wu (+ v1-336 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [900] (set! v1-335 (l.wu (+ v1-337 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B139: +L643: + lwu a0, 116(s6) ;; [901] (set! a0-115 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [902] (set! a0-116 (l.wu (+ a0-115 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 168(a0) ;; [903] (set! a0-117 (l.wu (+ a0-116 168))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [904] (set! a0-118 (= v1-335 a0-117)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L646 ;; [905] (b! (not a0-118) L646 (set! v0-13 #f)) [a0: symbol ] -> [v0: '#f ] + or v0, s7, r0 + +B140: + lwu v1, 120(s6) ;; [906] (set! v1-338 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [907] (set! v1-339 (l.wu (+ v1-338 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [908] (set! a0-119 (+ v1-339 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [909] (set! v1-340 (l.wu (+ a0-119 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [910] (set! v1-341 (l.wu (+ v1-340 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [911] (set! v1-342 (l.h (+ v1-341 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [912] (set! v1-343 (+ v1-342 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [913] (set! f0-74 (gpr->fpr v1-343)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [914] (set! f0-75 (i2f f0-74)) [] -> [] + swc1 f0, 24(a0) ;; [915] (s.f! (+ a0-119 24) f0-75) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [916] (set! v1-344 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [917] (set! f0-76 (l.f v1-344)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [918] (s.f! (+ a0-119 28) f0-76) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [919] (set! t9-51 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [920] (set! a1-55 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [921] (set! a2-25 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [922] (call! a0-119 a1-55 a2-25) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [923] (set! v1-345 v0-52) [v0: int ] -> [v1: int ] + beq r0, r0, L645 ;; [924] (b! #t L645 (nop!)) [] -> [] + sll r0, r0, 0 + +B141: +L644: + lwu s6, 44(s6) ;; [925] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lw t9, ja-eval(s7) ;; [926] (set! t9-52 ja-eval) [] -> [t9: (function int :behavior process-drawable) ] + jalr ra, t9 ;; [927] (call!) [t9: (function int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + +B142: +L645: + lw t9, ja-done?(s7) ;; [928] (set! t9-53 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [929] (set! a0-120 0) [] -> [a0: ] + jalr ra, t9 ;; [930] (call! a0-120) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L644 ;; [931] (b! (not v0-54) L644 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B143: + or v0, s7, r0 ;; [932] (set! v0-13 #f) [] -> [v0: '#f ] +B144: +L646: + ld ra, 0(sp) + ld fp, 8(sp) + lwc1 f30, 52(sp) + lwc1 f28, 48(sp) + lq gp, 32(sp) + lq s5, 16(sp) + jr ra + daddiu sp, sp, 64 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(defbehavior target-hit-ground-anim target ((arg0 symbol)) + (let ((v1-2 (ja-group))) + (cond + ((or (= v1-2 (-> self draw art-group data 63)) + (= v1-2 (-> self draw art-group data 64)) + (= v1-2 (-> self draw art-group data 66)) + (= v1-2 (-> self draw art-group data 67)) + ) + (let ((gp-0 (or (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (< (-> self control unknown-float01) 61440.0) + ) + ) + (f30-0 (the-as float (if (= arg0 'swim) + 0.4 + 1.0 + ) + ) + ) + ) + (ja-channel-set! 1) + (let ((s5-0 (-> self skel root-channel 0))) + (set! (-> s5-0 frame-group) (the-as art-joint-anim (if gp-0 + (-> self draw art-group data 65) + (-> self draw art-group data 68) + ) + ) + ) + (set! (-> s5-0 param 0) (the float (+ (-> (the-as art-joint-anim (if gp-0 + (-> self draw art-group data 65) + (-> self draw art-group data 68) + ) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (let ((f30-1 (seek f30-0 (the-as float 1.0) (* 0.5 (-> *display* seconds-per-frame))))) + (set! (-> s5-0 param 1) f30-1) + (set! (-> s5-0 frame-num) 0.0) + (joint-control-channel-group! + s5-0 + (the-as art-joint-anim (if gp-0 + (-> self draw art-group data 65) + (-> self draw art-group data 68) + ) + ) + num-func-seek! + ) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (align! + (-> self align) + (the-as align-opts (if gp-0 + 2 + 6 + ) + ) + (the-as float 1.0) + (the-as float 1.0) + (the-as float 1.5) + ) + (when (and (>= 25.0 (ja-aframe-num 0)) (and (>= (ja-aframe-num 0) 21.0) + (= (-> self next-state name) 'target-flop-hit-ground) + (!= (-> self control unknown-spoolanim00) 'stuck) + ) + ) + (set! (-> self event-hook) target-jump-event-handler) + (when (and (cpad-hold? (-> self control unknown-cpad-info00 number) x) (can-jump? #f)) + (ja-channel-set! 0) + (go + target-high-jump + (-> *TARGET-bank* flop-jump-height-min) + (-> *TARGET-bank* flop-jump-height-max) + (if gp-0 + 'flop + 'flop-forward + ) + ) + ) + ) + (suspend) + (let ((s5-1 (-> self skel root-channel 0))) + (set! (-> s5-1 param 0) (the float (+ (-> s5-1 frame-group data 0 length) -1))) + (set! f30-1 (seek f30-1 (the-as float 1.0) (* 0.5 (-> *display* seconds-per-frame)))) + (set! (-> s5-1 param 1) f30-1) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + ) + ) + #f + ) + ((and (= (-> self control ground-pat material) (pat-material ice)) + (< 16384.0 (-> self control unknown-float01)) + ) + #f + ) + ((let ((v1-95 (ja-group))) + (or (or (= v1-95 (-> self draw art-group data 38)) + (= v1-95 (-> self draw art-group data 42)) + (= v1-95 (-> self draw art-group data 43)) + ) + (and (ja-group? (-> self draw art-group data 34)) (>= (ja-aframe-num 0) 38.0)) + ) + ) + (ja-channel-push! 1 (seconds 0.02)) + (ja-no-eval :group! (-> self draw art-group data 35) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + #f + ) + ((and (ja-group? (-> self draw art-group data 34)) (>= (ja-aframe-num 0) 35.0)) + (ja-channel-set! 1) + (ja-no-eval :group! (-> self draw art-group data 39) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + (ja-no-eval :group! (-> self draw art-group data 35) + :num! (seek!) + :frame-num (ja-aframe (the-as float 50.0) 0) + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + #f + ) + ((let ((v1-187 (ja-group))) + (or (= v1-187 (-> self draw art-group data 34)) (= v1-187 (-> self draw art-group data 41))) + ) + (ja-channel-set! 1) + (ja-no-eval :group! (-> self draw art-group data 39) + :num! (seek!) + :frame-num (ja-aframe (the-as float 38.0) 0) + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + (ja-no-eval :group! (-> self draw art-group data 35) + :num! (seek!) + :frame-num (ja-aframe (the-as float 50.0) 0) + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + #f + ) + ((let ((v1-242 (ja-group))) + (or (= v1-242 (-> self draw art-group data 73)) (= v1-242 (-> self draw art-group data 74))) + ) + (let ((f30-2 (the-as float (if (ja-group? (-> self draw art-group data 74)) + 24576.0 + -24576.0 + ) + ) + ) + ) + (ja-channel-push! 1 (seconds 0.04)) + (ja-no-eval :group! (-> self draw art-group data 39) + :num! (seek!) + :frame-num (ja-aframe (the-as float 38.0) 0) + ) + (until (ja-done? 0) + (set-forward-vel f30-2) + (suspend) + (ja :num! (seek!)) + ) + ) + (ja-no-eval :group! (-> self draw art-group data 35) + :num! (seek!) + :frame-num (ja-aframe (the-as float 50.0) 0) + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + #f + ) + ((let ((v1-305 (ja-group))) + (or (= v1-305 (-> self draw art-group data 34)) + (= v1-305 (-> self draw art-group data 56)) + (= v1-305 (-> self draw art-group data 57)) + (= v1-305 (-> self draw art-group data 58)) + (= v1-305 (-> self draw art-group data 68)) + (= v1-305 (-> self draw art-group data 65)) + (= v1-305 (-> self draw art-group data 62)) + ) + ) + (ja-channel-push! 1 (seconds 0.04)) + (ja-no-eval :group! (-> self draw art-group data 35) + :num! (seek!) + :frame-num (ja-aframe (the-as float 42.0) 0) + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + #f + ) + ((ja-group? (-> self draw art-group data 35)) + (ja-no-eval :num! (seek!)) + (while (not (ja-done? 0)) + (suspend) + (ja-eval) + ) + #f + ) + ) + ) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function target-falling-trans +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x30, fp? 0 ra? 1 ep? 1 + ;stack_vars: 8 bytes at 8 + ;gprs: gp s5 +;; Warnings: +;; INFO: Return type mismatch int vs none. + +;; a0-0: basic a1-0: time-frame s6-0: target +L647: + daddiu sp, sp, -48 + sd ra, 0(sp) + sq s5, 16(sp) + sq gp, 32(sp) +B0: + or s5, a0, r0 ;; [ 0] (set! arg0 arg0) [a0: basic ] -> [s5: basic ] + or gp, a1, r0 ;; [ 1] (set! arg1 arg1) [a1: time-frame ] -> [gp: time-frame ] + lwu v1, 108(s6) ;; [ 2] (set! v1-0 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 3] (set! v1-1 (l.wu (+ v1-0 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 4] (set! v1-2 (l.w (+ v1-1 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 5] (set! v1-3 (sll v1-2 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 6] (set! a0-1 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 7] (set! v1-4 (+ v1-3 a0-1)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 8] (set! v1-5 (l.wu (+ v1-4 4))) [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 9] (set! v1-6 (l.wu (+ v1-5 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + andi v1, v1, 8192 ;; [ 10] (set! v1-7 (logand v1-6 8192)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L648 ;; [ 11] (bl! (zero? v1-7) L648 (no-delay!)) [v1: pad-buttons ] -> [] +B1: + or v1, s7, r0 ;; [ 12] (set! v1-8 #f) [] -> [v1: '#f ] + +B2: + lw t9, can-feet?(s7) ;; [ 13] (set! t9-0 can-feet?) [] -> [t9: (function symbol :behavior target) ] + jalr ra, t9 ;; [ 14] (call!) [t9: (function symbol :behavior target) ] -> [v0: symbol ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 15] (set! v1-8 v0-0) [v0: symbol ] -> [v1: symbol ] +B3: +L648: + beq s7, v1, L649 ;; [ 16] (b! (not v1-8) L649 (set! v1-9 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B4: + lw t9, enter-state(s7) ;; [ 17] (set! t9-1 enter-state) [] -> [t9: ] + or a0, s7, r0 ;; [ 18] (set! a0-2 #f) [] -> [a0: '#f ] + lw v1, target-attack-air(s7);; [ 19] (set! v1-10 target-attack-air) [] -> [v1: (state symbol target) ] + sw v1, 72(s6) ;; [ 20] (s.w! (+ self 72) v1-10) [v1: (state symbol target) s6: target ] -> [] + jalr ra, t9 ;; [ 21] (call! a0-2) [a0: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 22] (set! v1-11 v0-1) [v0: object ] -> [v1: object ] +B5: +L649: + daddiu v1, s7, target-eco-powerup;; [ 23] (set! v1-12 'target-eco-powerup) [] -> [v1: symbol ] + bne s5, v1, L651 ;; [ 24] (b! (!= arg0 v1-12) L651 (set! v1-13 #f)) [v1: symbol s5: basic ] -> [v1: '#f ] + or v1, s7, r0 + +B6: + lwu v1, 108(s6) ;; [ 25] (set! v1-14 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + lwu v1, 664(v1) ;; [ 26] (set! v1-15 (l.wu (+ v1-14 664))) [v1: control-info ] -> [v1: cpad-info ] + lw v1, 32(v1) ;; [ 27] (set! v1-16 (l.w (+ v1-15 32))) [v1: cpad-info ] -> [v1: int ] + dsll v1, v1, 2 ;; [ 28] (set! v1-17 (sll v1-16 2)) [v1: int ] -> [v1: ] + lw a0, *cpad-list*(s7) ;; [ 29] (set! a0-3 *cpad-list*) [] -> [a0: cpad-list ] + daddu v1, v1, a0 ;; [ 30] (set! v1-18 (+ v1-17 a0-3)) + ;; [v1: a0: cpad-list ] -> [v1: ] + lwu v1, 4(v1) ;; [ 31] (set! v1-19 (l.wu (+ v1-18 4))) + ;; [v1: ] -> [v1: cpad-info ] + lwu v1, 56(v1) ;; [ 32] (set! v1-20 (l.wu (+ v1-19 56))) [v1: cpad-info ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 33] (set! a0-4 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 34] (set! a0-5 (l.wu (+ a0-4 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 35] (set! a0-6 (l.w (+ a0-5 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 36] (set! a0-7 (sll a0-6 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 37] (set! a1-1 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 38] (set! a0-8 (+ a0-7 a1-1)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 39] (set! a0-9 (l.wu (+ a0-8 4))) [a0: ] -> [a0: cpad-info ] + lwu a0, 60(a0) ;; [ 40] (set! a0-10 (l.wu (+ a0-9 60))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 41] (set! v1-21 (logior v1-20 a0-10)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + lwu a0, 108(s6) ;; [ 42] (set! a0-11 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [ 43] (set! a0-12 (l.wu (+ a0-11 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [ 44] (set! a0-13 (l.w (+ a0-12 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [ 45] (set! a0-14 (sll a0-13 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [ 46] (set! a1-2 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [ 47] (set! a0-15 (+ a0-14 a1-2)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [ 48] (set! a0-16 (l.wu (+ a0-15 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 64(a0) ;; [ 49] (set! a0-17 (l.wu (+ a0-16 64))) [a0: cpad-info ] -> [a0: pad-buttons ] + or v1, v1, a0 ;; [ 50] (set! v1-22 (logior v1-21 a0-17)) + ;; [v1: pad-buttons a0: pad-buttons ] -> [v1: pad-buttons ] + andi v1, v1, 16384 ;; [ 51] (set! v1-23 (logand v1-22 #x4000)) [v1: pad-buttons ] -> [v1: pad-buttons ] + beql v1, r0, L650 ;; [ 52] (bl! (zero? v1-23) L650 (no-delay!)) [v1: pad-buttons ] -> [] +B7: + or v1, s7, r0 ;; [ 53] (set! v1-24 #f) [] -> [v1: '#f ] + +B8: + lwu v1, 152(s6) ;; [ 54] (set! v1-25 (l.wu (+ self 152))) [s6: target ] -> [v1: water-control ] + lwu v1, 0(v1) ;; [ 55] (set! v1-26 (l.wu v1-25)) [v1: water-control ] -> [v1: water-flags ] + andi v1, v1, 512 ;; [ 56] (set! v1-27 (logand v1-26 512)) [v1: water-flags ] -> [v1: water-flags ] + bnel v1, r0, L650 ;; [ 57] (bl! (nonzero? v1-27) L650 (no-delay!)) [v1: water-flags ] -> [] +B9: + or v1, s7, r0 ;; [ 58] (set! v1-24 #f) [] -> [v1: '#f ] + +B10: + lw v1, *display*(s7) ;; [ 59] (set! v1-28 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [ 60] (set! v1-29 (l.d (+ v1-28 780))) [v1: display ] -> [v1: time-frame ] + ld a0, 164(s6) ;; [ 61] (set! a0-18 (l.d (+ self 164))) [s6: target ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [ 62] (set! v1-30 (- v1-29 a0-18)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + slti v1, v1, 900 ;; [ 63] (set! a0-19 (<.si v1-30 900)) [v1: time-frame ] -> [a0: symbol ] + daddiu a0, s7, 8 + movz a0, s7, v1 + beql s7, a0, L650 ;; [ 64] (bl! (not a0-19) L650 (no-delay!)) [a0: symbol ] -> [] +B11: + or v1, a0, r0 ;; [ 65] (set! v1-24 a0-19) [a0: symbol ] -> [v1: symbol ] + +B12: + daddiu v1, s7, 8 ;; [ 66] (set! v1-31 #t) [] -> [v1: symbol ] + lwu a0, 160(s6) ;; [ 67] (set! a0-20 (l.wu (+ self 160))) [s6: target ] -> [a0: state-flags ] + andi a0, a0, 2048 ;; [ 68] (set! a0-21 (logand a0-20 2048)) [a0: state-flags ] -> [a0: state-flags ] + movn v1, s7, a0 ;; [ 69] (cmove-#f-nonzero v1-24 a0-21 v1-31) + ;; [v1: symbol a0: state-flags ] -> [v1: symbol ] +B13: +L650: + beq s7, v1, L651 ;; [ 70] (b! (not v1-24) L651 (set! v1-32 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B14: + lw t9, enter-state(s7) ;; [ 71] (set! t9-2 enter-state) [] -> [t9: ] + lw v1, *TARGET-bank*(s7) ;; [ 72] (set! v1-33 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 4(v1) ;; [ 73] (set! f0-0 (l.f (+ v1-33 4))) [v1: target-bank ] -> [] + mfc1 a0, f0 ;; [ 74] (set! a0-22 (fpr->gpr f0-0)) [] -> [a0: meters ] + lw v1, *TARGET-bank*(s7) ;; [ 75] (set! v1-34 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f0, 8(v1) ;; [ 76] (set! f0-1 (l.f (+ v1-34 8))) [v1: target-bank ] -> [] + mfc1 a1, f0 ;; [ 77] (set! a1-3 (fpr->gpr f0-1)) [] -> [a1: meters ] + or a2, s7, r0 ;; [ 78] (set! a2-0 #f) [] -> [a2: '#f ] + lw v1, target-jump(s7) ;; [ 79] (set! v1-35 target-jump) [] -> [v1: (state float float surface target) ] + sw v1, 72(s6) ;; [ 80] (s.w! (+ self 72) v1-35) + ;; [v1: (state float float surface target) s6: target ] -> [] + jalr ra, t9 ;; [ 81] (call! a0-22 a1-3 a2-0) + ;; [a0: meters a1: meters a2: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 82] (set! v1-36 v0-2) [v0: object ] -> [v1: object ] +B15: +L651: + lwu v1, 108(s6) ;; [ 83] (set! v1-37 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld v1, 268(v1) ;; [ 84] (set! v1-38 (l.d (+ v1-37 268))) [v1: control-info ] -> [v1: cshape-moving-flags ] + andi v1, v1, 1 ;; [ 85] (set! v1-39 (logand v1-38 1)) + ;; [v1: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + beq v1, r0, L652 ;; [ 86] (b! (zero? v1-39) L652 (set! v1-40 #f)) [v1: cshape-moving-flags ] -> [v1: '#f ] + or v1, s7, r0 + +B16: + lw t9, enter-state(s7) ;; [ 87] (set! t9-3 enter-state) [] -> [t9: ] + or a0, s7, r0 ;; [ 88] (set! a0-23 #f) [] -> [a0: '#f ] + lw v1, target-hit-ground(s7);; [ 89] (set! v1-41 target-hit-ground) [] -> [v1: (state symbol target) ] + sw v1, 72(s6) ;; [ 90] (s.w! (+ self 72) v1-41) [v1: (state symbol target) s6: target ] -> [] + jalr ra, t9 ;; [ 91] (call! a0-23) [a0: '#f t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 92] (set! v1-42 v0-3) [v0: object ] -> [v1: object ] +B17: +L652: + lw t9, target-move-dist(s7);; [ 93] (set! t9-4 target-move-dist) + ;; [] -> [t9: (function time-frame float :behavior target) ] + lw v1, *TARGET-bank*(s7) ;; [ 94] (set! v1-43 *TARGET-bank*) [] -> [v1: target-bank ] + ld a0, 556(v1) ;; [ 95] (set! a0-24 (l.d (+ v1-43 556))) [v1: target-bank ] -> [a0: seconds ] + jalr ra, t9 ;; [ 96] (call! a0-24) + ;; [a0: seconds t9: (function time-frame float :behavior target) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [ 97] (set! f0-2 (gpr->fpr v0-4)) [v0: float ] -> [] + lw v1, *TARGET-bank*(s7) ;; [ 98] (set! v1-44 *TARGET-bank*) [] -> [v1: target-bank ] + lwc1 f1, 572(v1) ;; [ 99] (set! f1-0 (l.f (+ v1-44 572))) [v1: target-bank ] -> [] + c.lt.s f0, f1 ;; [100] (b! (<.s f0-2 f1-0) L653 (set! v1-45 #t)) [] -> [v1: symbol ] + bc1t L653 + daddiu v1, s7, 8 + +B18: + or v1, s7, r0 ;; [101] (set! v1-45 #f) [] -> [v1: '#f ] +B19: +L653: + beql s7, v1, L655 ;; [102] (bl! (not v1-45) L655 (no-delay!)) [v1: symbol ] -> [] +B20: + or v1, v1, r0 ;; [103] (set! v1-46 v1-45) [v1: symbol ] -> [v1: symbol ] + +B21: + slt v1, gp, r0 ;; [104] (set! a0-25 (>=0.si arg1)) [gp: time-frame ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L655 ;; [105] (bl! (not a0-25) L655 (no-delay!)) [a0: symbol ] -> [] +B22: + or v1, a0, r0 ;; [106] (set! v1-46 a0-25) [a0: symbol ] -> [v1: symbol ] + +B23: + lw v1, *display*(s7) ;; [107] (set! v1-47 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [108] (set! v1-48 (l.d (+ v1-47 780))) [v1: display ] -> [v1: time-frame ] + ld a0, 164(s6) ;; [109] (set! a0-26 (l.d (+ self 164))) [s6: target ] -> [a0: time-frame ] + dsubu v1, v1, a0 ;; [110] (set! v1-49 (- v1-48 a0-26)) [v1: time-frame a0: time-frame ] -> [v1: time-frame ] + slt v1, v1, gp ;; [111] (set! a0-27 (>=.si v1-49 arg1)) [v1: time-frame gp: time-frame ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beql s7, a0, L655 ;; [112] (bl! (not a0-27) L655 (no-delay!)) [a0: symbol ] -> [] +B24: + or v1, a0, r0 ;; [113] (set! v1-46 a0-27) [a0: symbol ] -> [v1: symbol ] + +B25: + lw v1, *cheat-mode*(s7) ;; [114] (set! v1-50 *cheat-mode*) [] -> [v1: symbol ] + beql s7, v1, L654 ;; [115] (bl! (not v1-50) L654 (no-delay!)) [v1: symbol ] -> [] +B26: + or v1, v1, r0 ;; [116] (set! v1-51 v1-50) [v1: symbol ] -> [v1: symbol ] + +B27: + daddiu v1, s7, 8 ;; [117] (set! v1-52 #t) [] -> [v1: symbol ] + lwu a0, 108(s6) ;; [118] (set! a0-28 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + lwu a0, 664(a0) ;; [119] (set! a0-29 (l.wu (+ a0-28 664))) [a0: control-info ] -> [a0: cpad-info ] + lw a0, 32(a0) ;; [120] (set! a0-30 (l.w (+ a0-29 32))) [a0: cpad-info ] -> [a0: int ] + dsll a0, a0, 2 ;; [121] (set! a0-31 (sll a0-30 2)) [a0: int ] -> [a0: ] + lw a1, *cpad-list*(s7) ;; [122] (set! a1-4 *cpad-list*) [] -> [a1: cpad-list ] + daddu a0, a0, a1 ;; [123] (set! a0-32 (+ a0-31 a1-4)) + ;; [a0: a1: cpad-list ] -> [a0: ] + lwu a0, 4(a0) ;; [124] (set! a0-33 (l.wu (+ a0-32 4))) + ;; [a0: ] -> [a0: cpad-info ] + lwu a0, 40(a0) ;; [125] (set! a0-34 (l.wu (+ a0-33 40))) [a0: cpad-info ] -> [a0: pad-buttons ] + andi a0, a0, 512 ;; [126] (set! a0-35 (logand a0-34 512)) [a0: pad-buttons ] -> [a0: pad-buttons ] + movz v1, s7, a0 ;; [127] (cmove-#f-zero v1-51 a0-35 v1-52) [v1: symbol a0: pad-buttons ] -> [v1: symbol ] +B28: +L654: + beq s7, v1, L655 ;; [128] (b! (not v1-51) L655 (set! v1-46 #t)) [v1: symbol ] -> [v1: symbol ] + daddiu v1, s7, 8 + +B29: + or v1, s7, r0 ;; [129] (set! v1-46 #f) [] -> [v1: '#f ] +B30: +L655: + beq s7, v1, L656 ;; [130] (b! (not v1-46) L656 (set! v1-53 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B31: + daddiu v1, s7, #t ;; [131] (set! v1-53 #t) [] -> [v1: symbol ] +B32: +L656: + beq s7, v1, L657 ;; [132] (b! (not v1-53) L657 (set! v1-54 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B33: + lwu v1, 108(s6) ;; [133] (set! v1-55 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld v1, 268(v1) ;; [134] (set! v1-56 (l.d (+ v1-55 268))) [v1: control-info ] -> [v1: cshape-moving-flags ] + ori v1, v1, 1 ;; [135] (set! v1-57 (logior v1-56 1)) + ;; [v1: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + lwu a0, 108(s6) ;; [136] (set! a0-36 (l.wu (+ self 108))) [s6: target ] -> [a0: control-info ] + sd v1, 268(a0) ;; [137] (s.d! (+ a0-36 268) v1-57) [v1: cshape-moving-flags a0: control-info ] -> [] + lw t9, enter-state(s7) ;; [138] (set! t9-5 enter-state) [] -> [t9: ] + daddiu a0, s7, stuck ;; [139] (set! a0-37 'stuck) [] -> [a0: symbol ] + lw v1, target-hit-ground(s7);; [140] (set! v1-58 target-hit-ground) [] -> [v1: (state symbol target) ] + sw v1, 72(s6) ;; [141] (s.w! (+ self 72) v1-58) [v1: (state symbol target) s6: target ] -> [] + jalr ra, t9 ;; [142] (call! a0-37) [a0: symbol t9: ] -> [v0: object ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [143] (set! v1-59 v0-5) [v0: object ] -> [v1: object ] +B34: +L657: + lw v1, *display*(s7) ;; [144] (set! v1-60 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [145] (set! v1-61 (l.d (+ v1-60 780))) [v1: display ] -> [v1: time-frame ] + ld a0, 164(s6) ;; [146] (set! a0-38 (l.d (+ self 164))) [s6: target ] -> [a0: time-frame ] + beq a0, v1, L658 ;; [147] (b! (= a0-38 v1-61) L658 (set! v1-62 #f)) + ;; [v1: time-frame a0: time-frame ] -> [v1: '#f ] + or v1, s7, r0 + +B35: + lw t9, slide-down-test(s7);; [148] (set! t9-6 slide-down-test) [] -> [t9: (function none :behavior target) ] + jalr ra, t9 ;; [149] (call!) [t9: (function none :behavior target) ] -> [v0: none ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [150] (set! v1-63 v0-6) [v0: none ] -> [v1: none ] +B36: +L658: + or v0, r0, r0 ;; [151] (set! v0-7 0) [] -> [v0: ] + ld ra, 0(sp) + lq gp, 32(sp) + lq s5, 16(sp) + jr ra + daddiu sp, sp, 48 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(defbehavior target-falling-trans target ((arg0 basic) (arg1 time-frame)) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) + (go target-attack-air #f) + ) + (when (= arg0 'target-eco-powerup) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (zero? (logand (-> self water flags) (water-flags wt09))) + (< (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 3)) + (zero? (logand (-> self state-flags) (state-flags prevent-jump))) + ) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) + ) + ) + (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (go target-hit-ground #f) + ) + (when (if (and (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) + (>= arg1 0) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) arg1) + (not (and *cheat-mode* (cpad-hold? (-> self control unknown-cpad-info00 number) r2))) + ) + #t + ) + (logior! (-> self control status) (cshape-moving-flags onsurf)) + (go target-hit-ground 'stuck) + ) + (if (!= (-> self state-time) (-> *display* base-frame-counter)) + (slide-down-test) + ) + 0 + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function target-falling-anim-trans +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x10, fp? 1 ra? 1 ep? 1 +;; Warnings: +;; INFO: Return type mismatch int vs none. + +;; v1-2: art-joint-anim s6-0: target +L659: + daddiu sp, sp, -16 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 +B0: + lwu v1, 120(s6) ;; [ 0] (set! v1-0 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 1] (set! v1-1 (l.w (+ v1-0 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 2] (b! (<=0.si v1-1) L660 (set! v1-2 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L660 + or v1, s7, r0 + +B1: + lwu v1, 120(s6) ;; [ 3] (set! v1-3 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 4] (set! v1-4 (l.wu (+ v1-3 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 5] (set! v1-2 (l.wu (+ v1-4 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B2: +L660: + lwu a0, 116(s6) ;; [ 6] (set! a0-0 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 7] (set! a0-1 (l.wu (+ a0-0 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 180(a0) ;; [ 8] (set! a0-2 (l.wu (+ a0-1 180))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [ 9] (set! a1-0 (= v1-2 a0-2)) [v1: art-joint-anim a0: art-element ] -> [a1: symbol ] + daddiu a1, s7, 8 + movn a1, s7, a0 + bnel s7, a1, L661 ;; [ 10] (bl! (truthy a1-0) L661 (no-delay!)) [a1: symbol ] -> [] +B3: + or a0, a1, r0 ;; [ 11] (set! a0-3 a1-0) [a1: symbol ] -> [a0: symbol ] + +B4: + lwu a0, 116(s6) ;; [ 12] (set! a0-4 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 13] (set! a0-5 (l.wu (+ a0-4 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 168(a0) ;; [ 14] (set! a0-6 (l.wu (+ a0-5 168))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 15] (set! a0-3 (= v1-2 a0-6)) [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 +B5: +L661: + bne s7, a0, L662 ;; [ 16] (b! (truthy a0-3) L662 (set! v1-5 #f)) [a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B6: + lw t9, ja-channel-push!(s7);; [ 17] (set! t9-0 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [ 18] (set! a0-7 1) [] -> [a0: ] + addiu a1, r0, 99 ;; [ 19] (set! a1-1 99) [] -> [a1: ] + jalr ra, t9 ;; [ 20] (call! a0-7 a1-1) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [ 21] (set! v1-6 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 22] (set! v1-7 (l.wu (+ v1-6 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu v1, r0, v1 ;; [ 23] (set! v1-8 (+ v1-7 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + lwu a0, 116(s6) ;; [ 24] (set! a0-8 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 25] (set! a0-9 (l.wu (+ a0-8 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 180(a0) ;; [ 26] (set! a0-10 (l.wu (+ a0-9 180))) [a0: art-group ] -> [a0: art-element ] + sw a0, 12(v1) ;; [ 27] (s.w! (+ v1-8 12) a0-10) [v1: joint-control-channel a0: art-element ] -> [] + beq r0, r0, L669 ;; [ 28] (b! #t L669 (nop!)) [] -> [] + sll r0, r0, 0 + +B7: +L662: + lwu v1, 108(s6) ;; [ 29] (set! v1-9 (l.wu (+ self 108))) [s6: target ] -> [v1: control-info ] + ld v1, 268(v1) ;; [ 30] (set! v1-10 (l.d (+ v1-9 268))) [v1: control-info ] -> [v1: cshape-moving-flags ] + andi v1, v1, 1 ;; [ 31] (set! v1-11 (logand v1-10 1)) + ;; [v1: cshape-moving-flags ] -> [v1: cshape-moving-flags ] + beql v1, r0, L664 ;; [ 32] (bl! (zero? v1-11) L664 (no-delay!)) [v1: cshape-moving-flags ] -> [] +B8: + or v1, s7, r0 ;; [ 33] (set! v1-12 #f) [] -> [v1: '#f ] + +B9: + lwu v1, 120(s6) ;; [ 34] (set! v1-13 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 35] (set! v1-14 (l.w (+ v1-13 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 36] (b! (<=0.si v1-14) L663 (set! v1-15 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L663 + or v1, s7, r0 + +B10: + lwu v1, 120(s6) ;; [ 37] (set! v1-16 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 38] (set! v1-17 (l.wu (+ v1-16 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 39] (set! v1-15 (l.wu (+ v1-17 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B11: +L663: + lwu a0, 116(s6) ;; [ 40] (set! a0-11 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 41] (set! a0-12 (l.wu (+ a0-11 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 168(a0) ;; [ 42] (set! a0-13 (l.wu (+ a0-12 168))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 43] (set! a0-14 (= v1-15 a0-13)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L664 ;; [ 44] (b! (not a0-14) L664 (set! v1-12 #t)) [a0: symbol ] -> [v1: symbol ] + daddiu v1, s7, 8 + +B12: + or v1, s7, r0 ;; [ 45] (set! v1-12 #f) [] -> [v1: '#f ] +B13: +L664: + beq s7, v1, L665 ;; [ 46] (b! (not v1-12) L665 (set! v1-18 #f)) [v1: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B14: + lw t9, ja-channel-push!(s7);; [ 47] (set! t9-1 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [ 48] (set! a0-15 1) [] -> [a0: ] + addiu a1, r0, 6 ;; [ 49] (set! a1-2 6) [] -> [a1: ] + jalr ra, t9 ;; [ 50] (call! a0-15 a1-2) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [ 51] (set! v1-19 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 52] (set! v1-20 (l.wu (+ v1-19 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu v1, r0, v1 ;; [ 53] (set! v1-21 (+ v1-20 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + lwu a0, 116(s6) ;; [ 54] (set! a0-16 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 55] (set! a0-17 (l.wu (+ a0-16 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 168(a0) ;; [ 56] (set! a0-18 (l.wu (+ a0-17 168))) [a0: art-group ] -> [a0: art-element ] + sw a0, 12(v1) ;; [ 57] (s.w! (+ v1-21 12) a0-18) [v1: joint-control-channel a0: art-element ] -> [] + beq r0, r0, L669 ;; [ 58] (b! #t L669 (nop!)) [] -> [] + sll r0, r0, 0 + +B15: +L665: + lwu v1, 120(s6) ;; [ 59] (set! v1-22 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 60] (set! v1-23 (l.w (+ v1-22 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 61] (b! (<=0.si v1-23) L666 (set! v1-24 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L666 + or v1, s7, r0 + +B16: + lwu v1, 120(s6) ;; [ 62] (set! v1-25 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 63] (set! v1-26 (l.wu (+ v1-25 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 64] (set! v1-24 (l.wu (+ v1-26 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B17: +L666: + lwu a0, 116(s6) ;; [ 65] (set! a0-19 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 66] (set! a0-20 (l.wu (+ a0-19 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 180(a0) ;; [ 67] (set! a0-21 (l.wu (+ a0-20 180))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 68] (set! a0-22 (= v1-24 a0-21)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L667 ;; [ 69] (b! (not a0-22) L667 (set! v1-27 #f)) [a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B18: + lwu v1, 120(s6) ;; [ 70] (set! v1-28 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 71] (set! v1-29 (l.wu (+ v1-28 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 72] (set! a0-23 (+ v1-29 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lui v1, L786 ;; [ 73] (set! v1-30 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 74] (set! f0-0 (l.f v1-30)) [v1: ] -> [] + swc1 f0, 24(a0) ;; [ 75] (s.f! (+ a0-23 24) f0-0) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 76] (set! t9-2 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [ 77] (set! a1-3 #f) [] -> [a1: '#f ] + lw a2, num-func-loop!(s7) ;; [ 78] (set! a2-0 num-func-loop!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 79] (call! a0-23 a1-3 a2-0) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 80] (set! v1-31 v0-2) [v0: int ] -> [v1: int ] + beq r0, r0, L669 ;; [ 81] (b! #t L669 (nop!)) [] -> [] + sll r0, r0, 0 + +B19: +L667: + lwu v1, 120(s6) ;; [ 82] (set! v1-32 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 83] (set! v1-33 (l.w (+ v1-32 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 84] (b! (<=0.si v1-33) L668 (set! v1-34 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L668 + or v1, s7, r0 + +B20: + lwu v1, 120(s6) ;; [ 85] (set! v1-35 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 86] (set! v1-36 (l.wu (+ v1-35 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 87] (set! v1-34 (l.wu (+ v1-36 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B21: +L668: + lwu a0, 116(s6) ;; [ 88] (set! a0-24 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 89] (set! a0-25 (l.wu (+ a0-24 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 168(a0) ;; [ 90] (set! a0-26 (l.wu (+ a0-25 168))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 91] (set! a0-27 (= v1-34 a0-26)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L669 ;; [ 92] (b! (not a0-27) L669 (set! v1-37 #f)) [a0: symbol ] -> [v1: '#f ] + or v1, s7, r0 + +B22: + lwu v1, 120(s6) ;; [ 93] (set! v1-38 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 94] (set! v1-39 (l.wu (+ v1-38 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 95] (set! a0-28 (+ v1-39 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [ 96] (set! v1-40 (l.wu (+ a0-28 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 97] (set! v1-41 (l.wu (+ v1-40 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 98] (set! v1-42 (l.h (+ v1-41 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 99] (set! v1-43 (+ v1-42 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [100] (set! f0-1 (gpr->fpr v1-43)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [101] (set! f0-2 (i2f f0-1)) [] -> [] + swc1 f0, 24(a0) ;; [102] (s.f! (+ a0-28 24) f0-2) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [103] (set! v1-44 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [104] (set! f0-3 (l.f v1-44)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [105] (s.f! (+ a0-28 28) f0-3) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [106] (set! t9-3 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [107] (set! a1-4 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [108] (set! a2-1 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [109] (call! a0-28 a1-4 a2-1) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [110] (set! v1-45 v0-3) [v0: int ] -> [v1: int ] +B23: +L669: + or v0, r0, r0 ;; [111] (set! v0-4 0) [] -> [v0: ] + ld ra, 0(sp) + ld fp, 8(sp) + jr ra + daddiu sp, sp, 16 + + sll r0, r0, 0 + sll r0, r0, 0 + sll r0, r0, 0 + + +;;-*-OpenGOAL-Start-*- + +(defbehavior target-falling-anim-trans target () + (let ((v1-2 (ja-group))) + (b! + (or (= v1-2 (-> self draw art-group data 38)) (= v1-2 (-> self draw art-group data 35))) + cfg-7 + :delay (empty-form) + ) + ) + (ja-channel-push! 1 (seconds 0.33)) + (ja :group! (-> self draw art-group data 38)) + (b! #t cfg-23 :delay (nop!)) + (label cfg-7) + (cond + ((and (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (not (ja-group? (-> self draw art-group data 35))) + ) + (ja-channel-push! 1 (seconds 0.02)) + (ja :group! (-> self draw art-group data 35)) + ) + ((ja-group? (-> self draw art-group data 38)) + (ja :num! (loop!)) + ) + ((ja-group? (-> self draw art-group data 35)) + (ja :num! (seek!)) + ) + ) + (label cfg-23) + 0 + (none) + ) + +;;-*-OpenGOAL-End-*- + +;; .endfunction + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; .function target-falling-anim +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;stack: total 0x30, fp? 1 ra? 1 ep? 1 + ;gprs: gp s5 +;; v1-2: art-joint-anim v1-8: art-joint-anim a0-0: time-frame a1-0: time-frame s5-1: time-frame +;; s6-0: target +L670: + daddiu sp, sp, -48 + sd ra, 0(sp) + sd fp, 8(sp) + or fp, t9, r0 + sq s5, 16(sp) + sq gp, 32(sp) +B0: + or gp, a0, r0 ;; [ 0] (set! arg0 arg0) [a0: time-frame ] -> [gp: time-frame ] + lwu v1, 120(s6) ;; [ 1] (set! v1-0 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 2] (set! v1-1 (l.w (+ v1-0 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 3] (b! (<=0.si v1-1) L671 (set! v1-2 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L671 + or v1, s7, r0 + +B1: + lwu v1, 120(s6) ;; [ 4] (set! v1-3 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 5] (set! v1-4 (l.wu (+ v1-3 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 6] (set! v1-2 (l.wu (+ v1-4 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B2: +L671: + lwu a0, 116(s6) ;; [ 7] (set! a0-1 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 8] (set! a0-2 (l.wu (+ a0-1 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 180(a0) ;; [ 9] (set! a0-3 (l.wu (+ a0-2 180))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [ 10] (set! a2-0 (= v1-2 a0-3)) [v1: art-joint-anim a0: art-element ] -> [a2: symbol ] + daddiu a2, s7, 8 + movn a2, s7, a0 + bnel s7, a2, L672 ;; [ 11] (bl! (truthy a2-0) L672 (no-delay!)) [a2: symbol ] -> [] +B3: + or a0, a2, r0 ;; [ 12] (set! a0-4 a2-0) [a2: symbol ] -> [a0: symbol ] + +B4: + lwu a0, 116(s6) ;; [ 13] (set! a0-5 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 14] (set! a0-6 (l.wu (+ a0-5 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 276(a0) ;; [ 15] (set! a0-7 (l.wu (+ a0-6 276))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 16] (set! a0-4 (= v1-2 a0-7)) [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 +B5: +L672: + beq s7, a0, L673 ;; [ 17] (b! (not a0-4) L673 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B6: + or v1, s7, r0 ;; [ 18] (set! v1-5 #f) [] -> [v1: '#f ] + beq r0, r0, L686 ;; [ 19] (b! #t L686 (nop!)) [] -> [] + sll r0, r0, 0 + +B7: +L673: + lwu v1, 120(s6) ;; [ 20] (set! v1-6 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 21] (set! v1-7 (l.w (+ v1-6 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 22] (b! (<=0.si v1-7) L674 (set! v1-8 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L674 + or v1, s7, r0 + +B8: + lwu v1, 120(s6) ;; [ 23] (set! v1-9 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 24] (set! v1-10 (l.wu (+ v1-9 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 25] (set! v1-8 (l.wu (+ v1-10 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B9: +L674: + lwu a0, 116(s6) ;; [ 26] (set! a0-8 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 27] (set! a0-9 (l.wu (+ a0-8 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 204(a0) ;; [ 28] (set! a0-10 (l.wu (+ a0-9 204))) [a0: art-group ] -> [a0: art-element ] + dsubu a0, v1, a0 ;; [ 29] (set! a2-1 (= v1-8 a0-10)) [v1: art-joint-anim a0: art-element ] -> [a2: symbol ] + daddiu a2, s7, 8 + movn a2, s7, a0 + bnel s7, a2, L675 ;; [ 30] (bl! (truthy a2-1) L675 (no-delay!)) [a2: symbol ] -> [] +B10: + or a0, a2, r0 ;; [ 31] (set! a0-11 a2-1) [a2: symbol ] -> [a0: symbol ] + +B11: + lwu a0, 116(s6) ;; [ 32] (set! a0-12 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [ 33] (set! a0-13 (l.wu (+ a0-12 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 208(a0) ;; [ 34] (set! a0-14 (l.wu (+ a0-13 208))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [ 35] (set! a0-11 (= v1-8 a0-14)) [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 +B12: +L675: + beq s7, a0, L677 ;; [ 36] (b! (not a0-11) L677 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B13: + lw t9, ja-channel-push!(s7);; [ 37] (set! t9-0 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [ 38] (set! a0-15 1) [] -> [a0: ] + addiu a1, r0, 45 ;; [ 39] (set! a1-1 45) [] -> [a1: ] + jalr ra, t9 ;; [ 40] (call! a0-15 a1-1) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [ 41] (set! v1-11 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 42] (set! v1-12 (l.wu (+ v1-11 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 43] (set! a0-16 (+ v1-12 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [ 44] (set! v1-13 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 45] (set! v1-14 (l.wu (+ v1-13 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 228(v1) ;; [ 46] (set! v1-15 (l.wu (+ v1-14 228))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [ 47] (s.w! (+ a0-16 12) v1-15) [v1: art-element a0: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [ 48] (set! v1-16 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 49] (set! v1-17 (l.wu (+ v1-16 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 228(v1) ;; [ 50] (set! v1-18 (l.wu (+ v1-17 228))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 51] (set! (the-as art-joint-anim v1-19) (l.wu (+ v1-18 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 52] (set! v1-20 (l.h (+ v1-19 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 53] (set! v1-21 (+ v1-20 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 54] (set! f0-0 (gpr->fpr v1-21)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 55] (set! f0-1 (i2f f0-0)) [] -> [] + swc1 f0, 24(a0) ;; [ 56] (s.f! (+ a0-16 24) f0-1) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [ 57] (set! v1-22 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 58] (set! f0-2 (l.f v1-22)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [ 59] (s.f! (+ a0-16 28) f0-2) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [ 60] (set! f0-3 0) [] -> [] + swc1 f0, 16(a0) ;; [ 61] (s.f! (+ a0-16 16) f0-3) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [ 62] (set! t9-1 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [ 63] (set! v1-23 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [ 64] (set! v1-24 (l.wu (+ v1-23 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 228(v1) ;; [ 65] (set! a1-2 (l.wu (+ v1-24 228))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [ 66] (set! a2-2 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 67] (call! a0-16 a1-2 a2-2) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 68] (set! v1-25 v0-1) [v0: int ] -> [v1: int ] +B14: +L676: + lwu s6, 44(s6) ;; [ 69] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [ 70] (set! v1-26 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 71] (set! v1-27 (l.wu (+ v1-26 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [ 72] (set! a0-17 (+ v1-27 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [ 73] (set! v1-28 (l.wu (+ a0-17 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [ 74] (set! v1-29 (l.wu (+ v1-28 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [ 75] (set! v1-30 (l.h (+ v1-29 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [ 76] (set! v1-31 (+ v1-30 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [ 77] (set! f0-4 (gpr->fpr v1-31)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [ 78] (set! f0-5 (i2f f0-4)) [] -> [] + swc1 f0, 24(a0) ;; [ 79] (s.f! (+ a0-17 24) f0-5) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [ 80] (set! v1-32 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [ 81] (set! f0-6 (l.f v1-32)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [ 82] (s.f! (+ a0-17 28) f0-6) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [ 83] (set! t9-2 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [ 84] (set! a1-3 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [ 85] (set! a2-3 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [ 86] (call! a0-17 a1-3 a2-3) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [ 87] (set! v1-33 v0-2) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [ 88] (set! t9-3 ja-done?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [ 89] (set! a0-18 0) [] -> [a0: ] + jalr ra, t9 ;; [ 90] (call! a0-18) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L676 ;; [ 91] (b! (not v0-3) L676 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B15: + or v1, s7, r0 ;; [ 92] (set! v1-34 #f) [] -> [v1: '#f ] + beq r0, r0, L686 ;; [ 93] (b! #t L686 (nop!)) [] -> [] + sll r0, r0, 0 + +B16: +L677: + lwu v1, 120(s6) ;; [ 94] (set! v1-35 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [ 95] (set! v1-36 (l.w (+ v1-35 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [ 96] (b! (<=0.si v1-36) L678 (set! v1-37 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L678 + or v1, s7, r0 + +B17: + lwu v1, 120(s6) ;; [ 97] (set! v1-38 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [ 98] (set! v1-39 (l.wu (+ v1-38 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [ 99] (set! v1-37 (l.wu (+ v1-39 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B18: +L678: + lwu a0, 116(s6) ;; [100] (set! a0-19 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [101] (set! a0-20 (l.wu (+ a0-19 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 228(a0) ;; [102] (set! a0-21 (l.wu (+ a0-20 228))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [103] (set! a0-22 (= v1-37 a0-21)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L680 ;; [104] (b! (not a0-22) L680 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B19: +L679: + lwu s6, 44(s6) ;; [105] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [106] (set! v1-40 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [107] (set! v1-41 (l.wu (+ v1-40 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [108] (set! a0-23 (+ v1-41 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [109] (set! v1-42 (l.wu (+ a0-23 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [110] (set! v1-43 (l.wu (+ v1-42 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [111] (set! v1-44 (l.h (+ v1-43 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [112] (set! v1-45 (+ v1-44 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [113] (set! f0-7 (gpr->fpr v1-45)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [114] (set! f0-8 (i2f f0-7)) [] -> [] + swc1 f0, 24(a0) ;; [115] (s.f! (+ a0-23 24) f0-8) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [116] (set! v1-46 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [117] (set! f0-9 (l.f v1-46)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [118] (s.f! (+ a0-23 28) f0-9) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [119] (set! t9-4 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [120] (set! a1-4 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [121] (set! a2-4 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [122] (call! a0-23 a1-4 a2-4) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [123] (set! v1-47 v0-4) [v0: int ] -> [v1: int ] + lw t9, ja-done?(s7) ;; [124] (set! t9-5 ja-done?) [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [125] (set! a0-24 0) [] -> [a0: ] + jalr ra, t9 ;; [126] (call! a0-24) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L679 ;; [127] (b! (not v0-5) L679 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B20: + or v1, s7, r0 ;; [128] (set! v1-48 #f) [] -> [v1: '#f ] + lw t9, ja-channel-push!(s7);; [129] (set! t9-6 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [130] (set! a0-25 1) [] -> [a0: ] + addiu a1, r0, 45 ;; [131] (set! a1-5 45) [] -> [a1: ] + jalr ra, t9 ;; [132] (call! a0-25 a1-5) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [133] (set! v1-49 v0-6) [v0: int ] -> [v1: int ] + beq r0, r0, L686 ;; [134] (b! #t L686 (nop!)) [] -> [] + sll r0, r0, 0 + +B21: +L680: + lwu v1, 120(s6) ;; [135] (set! v1-50 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lw v1, 20(v1) ;; [136] (set! v1-51 (l.w (+ v1-50 20))) [v1: joint-control ] -> [v1: int ] + slt v1, r0, v1 ;; [137] (b! (<=0.si v1-51) L681 (set! v1-52 #f)) [v1: int ] -> [v1: '#f ] + beq v1, r0, L681 + or v1, s7, r0 + +B22: + lwu v1, 120(s6) ;; [138] (set! v1-53 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [139] (set! v1-54 (l.wu (+ v1-53 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu v1, 12(v1) ;; [140] (set! v1-52 (l.wu (+ v1-54 12))) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: art-joint-anim ] +B23: +L681: + lwu a0, 116(s6) ;; [141] (set! a0-26 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [142] (set! a0-27 (l.wu (+ a0-26 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 372(a0) ;; [143] (set! a0-28 (l.wu (+ a0-27 372))) [a0: art-group ] -> [a0: art-element ] + dsubu v1, v1, a0 ;; [144] (set! a0-29 (= v1-52 a0-28)) + ;; [v1: art-joint-anim a0: art-element ] -> [a0: symbol ] + daddiu a0, s7, 8 + movn a0, s7, v1 + beq s7, a0, L683 ;; [145] (b! (not a0-29) L683 (nop!)) [a0: symbol ] -> [] + sll r0, r0, 0 + +B24: + lw t9, ja-channel-push!(s7);; [146] (set! t9-7 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [147] (set! a0-30 1) [] -> [a0: ] + addiu a1, r0, 45 ;; [148] (set! a1-6 45) [] -> [a1: ] + jalr ra, t9 ;; [149] (call! a0-30 a1-6) + ;; [a0: a1: t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [150] (set! v1-55 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [151] (set! v1-56 (l.wu (+ v1-55 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu s5, r0, v1 ;; [152] (set! s5-0 (+ v1-56 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [s5: joint-control-channel ] + lwu v1, 116(s6) ;; [153] (set! v1-57 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [154] (set! v1-58 (l.wu (+ v1-57 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 164(v1) ;; [155] (set! v1-59 (l.wu (+ v1-58 164))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(s5) ;; [156] (s.w! (+ s5-0 12) v1-59) [v1: art-element s5: joint-control-channel ] -> [] + lwu v1, 116(s6) ;; [157] (set! v1-60 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [158] (set! v1-61 (l.wu (+ v1-60 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 164(v1) ;; [159] (set! v1-62 (l.wu (+ v1-61 164))) [v1: art-group ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [160] (set! (the-as art-joint-anim v1-63) (l.wu (+ v1-62 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [161] (set! v1-64 (l.h (+ v1-63 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [162] (set! v1-65 (+ v1-64 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [163] (set! f0-10 (gpr->fpr v1-65)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [164] (set! f0-11 (i2f f0-10)) [] -> [] + swc1 f0, 24(s5) ;; [165] (s.f! (+ s5-0 24) f0-11) [s5: joint-control-channel ] -> [] + lui v1, L786 ;; [166] (set! v1-66 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [167] (set! f0-12 (l.f v1-66)) [v1: ] -> [] + swc1 f0, 28(s5) ;; [168] (s.f! (+ s5-0 28) f0-12) [s5: joint-control-channel ] -> [] + lw t9, ja-aframe(s7) ;; [169] (set! t9-8 ja-aframe) + ;; [] -> [t9: (function float int float :behavior process-drawable) ] + lui v1, L747 ;; [170] (set! v1-67 L747) [] -> [v1: ] + ori v1, v1, L747 + addu v1, fp, v1 + lw a0, 0(v1) ;; [171] (set! a0-31 (l.w v1-67)) [v1: ] -> [a0: int ] + addiu a1, r0, 0 ;; [172] (set! a1-7 0) [] -> [a1: ] + jalr ra, t9 ;; [173] (call! a0-31 a1-7) + ;; [a0: int a1: t9: (function float int float :behavior process-drawable) ] -> [v0: float ] + sll v0, ra, 0 + + mtc1 f0, v0 ;; [174] (set! f0-13 (gpr->fpr v0-8)) [v0: float ] -> [] + swc1 f0, 16(s5) ;; [175] (s.f! (+ s5-0 16) f0-13) [s5: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [176] (set! t9-9 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [177] (set! v1-68 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [178] (set! v1-69 (l.wu (+ v1-68 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 164(v1) ;; [179] (set! a1-8 (l.wu (+ v1-69 164))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-seek!(s7) ;; [180] (set! a2-5 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + or a0, s5, r0 ;; [181] (set! a0-32 s5-0) [s5: joint-control-channel ] -> [a0: joint-control-channel ] + jalr ra, t9 ;; [182] (call! a0-32 a1-8 a2-5) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [183] (set! v1-70 v0-9) [v0: int ] -> [v1: int ] +B25: +L682: + lwu v1, 120(s6) ;; [184] (set! v1-71 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [185] (set! v1-72 (l.wu (+ v1-71 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [186] (set! a0-33 (+ v1-72 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 12(a0) ;; [187] (set! v1-73 (l.wu (+ a0-33 12))) + ;; [a0: joint-control-channel ] -> [v1: art-joint-anim ] + lwu v1, 44(v1) ;; [188] (set! v1-74 (l.wu (+ v1-73 44))) + ;; [v1: art-joint-anim ] -> [v1: joint-anim-compressed ] + lh v1, 6(v1) ;; [189] (set! v1-75 (l.h (+ v1-74 6))) [v1: joint-anim-compressed ] -> [v1: int ] + daddiu v1, v1, -1 ;; [190] (set! v1-76 (+ v1-75 -1)) [v1: int ] -> [v1: ] + mtc1 f0, v1 ;; [191] (set! f0-14 (gpr->fpr v1-76)) [v1: ] -> [] + cvt.s.w f0, f0 ;; [192] (set! f0-15 (i2f f0-14)) [] -> [] + swc1 f0, 24(a0) ;; [193] (s.f! (+ a0-33 24) f0-15) [a0: joint-control-channel ] -> [] + lui v1, L786 ;; [194] (set! v1-77 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [195] (set! f0-16 (l.f v1-77)) [v1: ] -> [] + swc1 f0, 28(a0) ;; [196] (s.f! (+ a0-33 28) f0-16) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [197] (set! t9-10 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + or a1, s7, r0 ;; [198] (set! a1-9 #f) [] -> [a1: '#f ] + lw a2, num-func-seek!(s7) ;; [199] (set! a2-6 num-func-seek!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [200] (call! a0-33 a1-9 a2-6) + ;; [a0: joint-control-channel a1: '#f a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [201] (set! v1-78 v0-10) [v0: int ] -> [v1: int ] + lwu s6, 44(s6) ;; [202] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lw t9, ja-done?(s7) ;; [203] (set! t9-11 ja-done?) + ;; [] -> [t9: (function int symbol :behavior process-drawable) ] + addiu a0, r0, 0 ;; [204] (set! a0-34 0) [] -> [a0: ] + jalr ra, t9 ;; [205] (call! a0-34) + ;; [a0: t9: (function int symbol :behavior process-drawable) ] -> [v0: symbol ] + sll v0, ra, 0 + + beq s7, v0, L682 ;; [206] (b! (not v0-11) L682 (nop!)) [v0: symbol ] -> [] + sll r0, r0, 0 + +B26: + or v1, s7, r0 ;; [207] (set! v1-79 #f) [] -> [v1: '#f ] + beq r0, r0, L686 ;; [208] (b! #t L686 (nop!)) [] -> [] + sll r0, r0, 0 + +B27: +L683: + lw t9, ja-channel-push!(s7);; [209] (set! t9-12 ja-channel-push!) + ;; [] -> [t9: (function int time-frame int :behavior process-drawable) ] + addiu a0, r0, 1 ;; [210] (set! a0-35 1) [] -> [a0: ] + jalr ra, t9 ;; [211] (call! a0-35 arg1) + ;; [a0: a1: time-frame t9: (function int time-frame int :behavior process-drawable) ] -> [v0: int ] + sll v0, ra, 0 + + lwu v1, 120(s6) ;; [212] (set! v1-80 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [213] (set! v1-81 (l.wu (+ v1-80 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu v1, r0, v1 ;; [214] (set! v1-82 (+ v1-81 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [v1: joint-control-channel ] + lwu a0, 116(s6) ;; [215] (set! a0-36 (l.wu (+ self 116))) [s6: target ] -> [a0: draw-control ] + lwu a0, 4(a0) ;; [216] (set! a0-37 (l.wu (+ a0-36 4))) [a0: draw-control ] -> [a0: art-group ] + lwu a0, 180(a0) ;; [217] (set! a0-38 (l.wu (+ a0-37 180))) [a0: art-group ] -> [a0: art-element ] + sw a0, 12(v1) ;; [218] (s.w! (+ v1-82 12) a0-38) [v1: joint-control-channel a0: art-element ] -> [] + beq r0, r0, L685 ;; [219] (b! #t L685 (nop!)) [] -> [] + sll r0, r0, 0 + +B28: +L684: + lwu s6, 44(s6) ;; [220] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + +B29: +L685: + lwu v1, 120(s6) ;; [221] (set! v1-83 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + daddiu v1, v1, 44 ;; [222] (set! v1-84 (+ v1-83 44)) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + lwu a0, 120(s6) ;; [223] (set! a0-39 (l.wu (+ self 120))) [s6: target ] -> [a0: joint-control ] + lwu a0, 12(a0) ;; [224] (set! a0-40 (l.wu (+ a0-39 12))) + ;; [a0: joint-control ] -> [a0: (inline-array joint-control-channel) ] + daddu a0, r0, a0 ;; [225] (set! a0-41 (+ a0-40 0)) + ;; [a0: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + bne a0, v1, L684 ;; [226] (b! (!= a0-41 v1-84) L684 (nop!)) + ;; [v1: (inline-array joint-control-channel) a0: joint-control-channel ] -> [] + sll r0, r0, 0 + +B30: + or v1, s7, r0 ;; [227] (set! v1-85 #f) [] -> [v1: '#f ] +B31: +L686: + lwu v1, 120(s6) ;; [228] (set! v1-86 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [229] (set! v1-87 (l.wu (+ v1-86 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [230] (set! a0-42 (+ v1-87 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [231] (set! v1-88 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [232] (set! v1-89 (l.wu (+ v1-88 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 180(v1) ;; [233] (set! v1-90 (l.wu (+ v1-89 180))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [234] (s.w! (+ a0-42 12) v1-90) [v1: art-element a0: joint-control-channel ] -> [] + lui v1, L786 ;; [235] (set! v1-91 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [236] (set! f0-17 (l.f v1-91)) [v1: ] -> [] + swc1 f0, 24(a0) ;; [237] (s.f! (+ a0-42 24) f0-17) [a0: joint-control-channel ] -> [] + mtc1 f0, r0 ;; [238] (set! f0-18 0) [] -> [] + swc1 f0, 16(a0) ;; [239] (s.f! (+ a0-42 16) f0-18) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group!(s7);; [240] (set! t9-13 joint-control-channel-group!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [241] (set! v1-92 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [242] (set! v1-93 (l.wu (+ v1-92 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 180(v1) ;; [243] (set! a1-10 (l.wu (+ v1-93 180))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-loop!(s7) ;; [244] (set! a2-7 num-func-loop!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [245] (call! a0-42 a1-10 a2-7) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [246] (set! v1-94 v0-13) [v0: int ] -> [v1: int ] + lw v1, *display*(s7) ;; [247] (set! v1-95 *display*) [] -> [v1: display ] + ld s5, 780(v1) ;; [248] (set! s5-1 (l.d (+ v1-95 780))) [v1: display ] -> [s5: time-frame ] + beq r0, r0, L688 ;; [249] (b! #t L688 (nop!)) [] -> [] + sll r0, r0, 0 + +B32: +L687: + lwu s6, 44(s6) ;; [250] (suspend) [] -> [] + mtlo1 s6 + lwu s6, 12(s6) + jalr ra, s6 + mflo1 s6 + + lwu v1, 120(s6) ;; [251] (set! v1-96 (l.wu (+ self 120))) [s6: target ] -> [v1: joint-control ] + lwu v1, 12(v1) ;; [252] (set! v1-97 (l.wu (+ v1-96 12))) + ;; [v1: joint-control ] -> [v1: (inline-array joint-control-channel) ] + daddu a0, r0, v1 ;; [253] (set! a0-43 (+ v1-97 0)) + ;; [v1: (inline-array joint-control-channel) ] -> [a0: joint-control-channel ] + lwu v1, 116(s6) ;; [254] (set! v1-98 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [255] (set! v1-99 (l.wu (+ v1-98 4))) [v1: draw-control ] -> [v1: art-group ] + lwu v1, 180(v1) ;; [256] (set! v1-100 (l.wu (+ v1-99 180))) [v1: art-group ] -> [v1: art-element ] + sw v1, 12(a0) ;; [257] (s.w! (+ a0-43 12) v1-100) [v1: art-element a0: joint-control-channel ] -> [] + lui v1, L786 ;; [258] (set! v1-101 L786) [] -> [v1: ] + ori v1, v1, L786 + addu v1, fp, v1 + lwc1 f0, 0(v1) ;; [259] (set! f0-19 (l.f v1-101)) [v1: ] -> [] + swc1 f0, 24(a0) ;; [260] (s.f! (+ a0-43 24) f0-19) [a0: joint-control-channel ] -> [] + lw t9, joint-control-channel-group-eval!(s7);; [261] (set! t9-14 joint-control-channel-group-eval!) + ;; [] -> [t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] + lwu v1, 116(s6) ;; [262] (set! v1-102 (l.wu (+ self 116))) [s6: target ] -> [v1: draw-control ] + lwu v1, 4(v1) ;; [263] (set! v1-103 (l.wu (+ v1-102 4))) [v1: draw-control ] -> [v1: art-group ] + lwu a1, 180(v1) ;; [264] (set! a1-11 (l.wu (+ v1-103 180))) [v1: art-group ] -> [a1: art-element ] + lw a2, num-func-loop!(s7) ;; [265] (set! a2-8 num-func-loop!) + ;; [] -> [a2: (function joint-control-channel float float float) ] + jalr ra, t9 ;; [266] (call! a0-43 a1-11 a2-8) + ;; [a0: joint-control-channel a1: art-element a2: (function joint-control-channel float float float) t9: (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int) ] -> [v0: int ] + sll v0, ra, 0 + + or v1, v0, r0 ;; [267] (set! v1-104 v0-14) [v0: int ] -> [v1: int ] +B33: +L688: + daddiu v1, gp, 1 ;; [268] (set! v1-105 (+ arg0 1)) [gp: time-frame ] -> [v1: ] + daddiu a0, s7, 8 ;; [269] (set! a0-44 (zero? v1-105)) [v1: ] -> [a0: symbol ] + movn a0, s7, v1 + bnel s7, a0, L689 ;; [270] (bl! (truthy a0-44) L689 (no-delay!)) [a0: symbol ] -> [] +B34: + or v1, a0, r0 ;; [271] (set! v1-106 a0-44) [a0: symbol ] -> [v1: symbol ] + +B35: + lw v1, *display*(s7) ;; [272] (set! v1-107 *display*) [] -> [v1: display ] + ld v1, 780(v1) ;; [273] (set! v1-108 (l.d (+ v1-107 780))) [v1: display ] -> [v1: time-frame ] + dsubu v1, v1, s5 ;; [274] (set! v1-109 (- v1-108 s5-1)) + ;; [v1: time-frame s5: time-frame ] -> [v1: time-frame ] + slt a0, v1, gp ;; [275] (set! v1-106 (<.si v1-109 arg0)) [v1: time-frame gp: time-frame ] -> [v1: symbol ] + daddiu v1, s7, 8 + movz v1, s7, a0 +B36: +L689: + bne s7, v1, L687 ;; [276] (b! (truthy v1-106) L687 (nop!)) [v1: symbol ] -> [] + sll r0, r0, 0 + +B37: + or v0, s7, r0 ;; [277] (set! v0-15 #f) [] -> [v0: '#f ] + ld ra, 0(sp) + ld fp, 8(sp) + lq gp, 32(sp) + lq s5, 16(sp) + jr ra + daddiu sp, sp, 48 + + + +;;-*-OpenGOAL-Start-*- + +(defbehavior target-falling-anim target ((arg0 time-frame) (arg1 time-frame)) + (let ((v1-2 (ja-group))) + (cond + ((or (= v1-2 (-> self draw art-group data 38)) (= v1-2 (-> self draw art-group data 62))) + ) + ((let ((v1-8 (ja-group))) + (or (= v1-8 (-> self draw art-group data 44)) (= v1-8 (-> self draw art-group data 45))) + ) + (ja-channel-push! 1 (seconds 0.15)) + (ja-no-eval :group! (-> self draw art-group data 50) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + ((ja-group? (-> self draw art-group data 50)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + (ja-channel-push! 1 (seconds 0.15)) + ) + ((ja-group? (-> self draw art-group data 86)) + (ja-channel-push! 1 (seconds 0.15)) + (ja-no-eval :group! (-> self draw art-group data 34) + :num! (seek!) + :frame-num (ja-aframe (the-as float 20.0) 0) + ) + (until (ja-done? 0) + (ja :num! (seek!)) + (suspend) + ) + ) + (else + (ja-channel-push! 1 arg1) + (ja :group! (-> self draw art-group data 38)) + (while (!= (-> self skel root-channel 0) (-> self skel channel)) + (suspend) + ) + ) + ) + ) + (ja-no-eval :group! (-> self draw art-group data 38) :num! (loop!) :frame-num 0.0) + (let ((s5-1 (-> *display* base-frame-counter))) + (while (or (= arg0 -1) (< (- (-> *display* base-frame-counter) s5-1) arg0)) + (suspend) + (ja :group! (-> self draw art-group data 38) :num! (loop!)) + ) + ) #f ) ;;-*-OpenGOAL-End-*- ;; .endfunction + +L690: + .word 0x0 + .word 0x0 + .type state +L691: + .symbol target-wheel-flip + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L692: + .symbol target-wheel + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L693: + .symbol target-flop-hit-ground + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L694: + .symbol target-flop + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L695: + .symbol target-attack-uppercut-jump + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L696: + .symbol target-attack-uppercut + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L697: + .symbol target-attack-air + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L698: + .symbol target-running-attack + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L699: + .symbol target-attack + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type string +; "sksp0072" +L700: + .word 0x8 + .word 0x70736b73 + .word 0x32373030 + .word 0x0 + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L701: + .symbol target-hit-ground + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L702: + .symbol target-falling + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L703: + .symbol target-duck-high-jump-jump + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L704: + .symbol target-duck-high-jump + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L705: + .symbol target-high-jump + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L706: + .symbol target-double-jump + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L707: + .symbol target-jump-forward + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L708: + .symbol target-jump + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type string +; "sksp0388" +L709: + .word 0x8 + .word 0x70736b73 + .word 0x38383330 + .word 0x0 + .word 0x0 + .word 0x0 + .word 0x0 + .type string +; "sksp0393" +L710: + .word 0x8 + .word 0x70736b73 + .word 0x33393330 + .word 0x0 + .word 0x0 + .word 0x0 + .word 0x0 + .type string +; "sksp009e" +L711: + .word 0x8 + .word 0x70736b73 + .word 0x65393030 + .word 0x0 + .word 0x0 + .word 0x0 + .word 0x0 + .type string +; "sksp009d" +L712: + .word 0x8 + .word 0x70736b73 + .word 0x64393030 + .word 0x0 + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L713: + .symbol target-duck-walk + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L714: + .symbol target-duck-stance + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L715: + .symbol target-slide-down + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L716: + .symbol target-turn-around + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L717: + .symbol target-walk + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L718: + .symbol target-stance + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .word 0x0 + .word 0x0 + .word 0x0 + .type state +L719: + .symbol target-startup + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f + .symbol #f +L720: + .word 0x48700000 +L721: + .word 0x40e00000 +L722: + .word 0x48c00000 +L723: + .word 0x47f00000 +L724: + .word 0x48b40000 +L725: + .word 0x49200000 +L726: + .word 0x45800000 +L727: + .word 0x420c0000 +L728: + .word 0x42dc0000 +L729: + .word 0xc7f00000 +L730: + .word 0xc8700000 +L731: + .word 0xc8200000 +L732: + .word 0x47200000 +L733: + .word 0x47000000 +L734: + .word 0x47c80000 +L735: + .word 0x47980000 +L736: + .word 0x47700000 +L737: + .word 0x46c00000 +L738: + .word 0xc6c00000 +L739: + .word 0x41800000 +L740: + .word 0x40a00000 +L741: + .word 0x41d00000 +L742: + .word 0x41f00000 +L743: + .word 0x41e80000 +L744: + .word 0x42280000 +L745: + .word 0x42180000 +L746: + .word 0x42480000 +L747: + .word 0x41a00000 +L748: + .word 0x40000000 +L749: + .word 0x40800000 +L750: + .word 0x40400000 +L751: + .word 0x3e99999a +L752: + .word 0x3f000000 +L753: + .word 0x3e800000 +L754: + .word 0x3f99999a +L755: + .word 0x3f19999a +L756: + .word 0x39000000 +L757: + .word 0x46e66666 +L758: + .word 0x47866666 +L759: + .word 0x384ccccd +L760: + .word 0x3b808081 +L761: + .word 0x3d4ccccd +L762: + .word 0x3f333333 +L763: + .word 0x3f733333 +L764: + .word 0x3f4ccccd +L765: + .word 0x3fcccccd +L766: + .word 0x3e4ccccd +L767: + .word 0x3ecccccd +L768: + .word 0x3b5a740e +L769: + .word 0x3d088889 +L770: + .word 0x3c088889 +L771: + .word 0x4519999a +L772: + .word 0x3f666666 +L773: + .word 0x4703ef7b +L774: + .word 0xc6333333 +L775: + .word 0x45b33333 +L776: + .word 0x3f800054 +L777: + .word 0x46800000 +L778: + .word 0x41a80000 +L779: + .word 0x41c80000 +L780: + .word 0x3f555555 +L781: + .word 0xc1c80000 +L782: + .word 0x46a00000 +L783: + .word 0xc6800000 +L784: + .word 0x477fdef6 +L785: + .word 0x3fc00000 +L786: + .word 0x3f800000 +L787: + .word 0xbf800000 +L788: + .word 0x3836db6e +L789: + .word 0x42700000 +L790: + .word 0x46d00000 +L791: + .word 0x46400000 +L792: + .word 0xc6200000 +L793: + .word 0x38aaaaab +L794: + .word 0xc3cccccd +L795: + .word 0xc5000000 +L796: + .word 0x47900000 +L797: + .word 0x44800000 +L798: + .word 0x45000000 +L799: + .word 0x42000000 +L800: + .word 0x43160000 +L801: + .word 0xc6000000 +L802: + .word 0x44cccccd +L803: + .word 0x41400000 +L804: + .word 0x46accccd +L805: + .word 0xc7700000 +L806: + .word 0x422c0000 +L807: + .word 0x45c00000 +L808: + .word 0x488c0000 +L809: + .word 0x41000000 +L810: + .word 0x41e00000 +L811: + .word 0x40c00000 +L812: + .word 0xc8b40000 +L813: + .word 0x46e00000 +L814: + .word 0x0 +L815: + .word 0x6d697773 + .word 0x7274732d + + diff --git a/tsconfig.json b/tsconfig.json index 9a3f525..b84730d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,12 +1,13 @@ { - "compilerOptions": { - "module": "commonjs", - "target": "es2020", - "lib": ["es2020"], - "outDir": "out", - "sourceMap": true, - "strict": true, - "rootDir": "src" - }, - "exclude": ["node_modules", ".vscode-test"] + "compilerOptions": { + "module": "commonjs", + "target": "es2020", + "lib": ["es2020"], + "outDir": "out", + "sourceMap": true, + "strict": true, + "rootDir": "src", + "resolveJsonModule": true + }, + "exclude": ["node_modules", ".vscode-test"] }