From 36b61c6b680e04035fac110c0a0ddcb086610d53 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 9 Mar 2026 03:02:10 -0500 Subject: [PATCH 01/29] Initial commit --- .gitignore | 17 + .gitmodules | 4 + .vscode/launch.json | 18 + CMakeLists.txt | 26 + CMakePresets.json | 86 + ac6recomp_config.toml | 10543 +++++++++++++++++++++++++++++++++++++++ src/ac6recomp_app.h | 33 + src/main.cpp | 10 + thirdparty/rexglue-sdk | 1 + 9 files changed, 10738 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 .vscode/launch.json create mode 100644 CMakeLists.txt create mode 100644 CMakePresets.json create mode 100644 ac6recomp_config.toml create mode 100644 src/ac6recomp_app.h create mode 100644 src/main.cpp create mode 160000 thirdparty/rexglue-sdk diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..339f188e --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +# Build output +out/ + +# Generated recomp code +generated/ + +# Game assets (user-supplied) +assets/ + +# VS local settings +.vs/ + +# Copilot and debugging workflow +.github/instructions/ + +# CMake user presets (machine-local) +CMakeUserPresets.json diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..db1b5c3b --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "thirdparty/rexglue-sdk"] + path = thirdparty/rexglue-sdk + url = https://github.com/rapidsamphire/rexglue-sdk.git + branch = ac6recomp-fixes diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..1dd2ec7a --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,18 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "AC6Recomp (RelWithDebInfo)", + "type": "cppvsdbg", + "request": "launch", + "program": "C:\\Users\\Zalamander\\AC6Recomp\\out\\build\\win-amd64-relwithdebinfo\\ac6recomp.exe", + "args": [ + "C:\\Users\\Zalamander\\AC6Recomp\\assets", + "--enable_console=false", + "--log_level=info" + ], + "cwd": "${workspaceFolder}", + "console": "integratedTerminal" + } + ] +} diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..31ace1c2 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,26 @@ +# ac6recomp - ReXGlue Recompiled Project +# +# This file is yours to edit. 'rexglue migrate' will NOT overwrite it. +# SDK boilerplate lives in generated/rexglue.cmake. + +cmake_minimum_required(VERSION 3.25) +project(ac6recomp LANGUAGES CXX) + +set(CMAKE_CXX_STANDARD 23) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +include(generated/rexglue.cmake) + +# Sources +set(AC6RECOMP_SOURCES + src/main.cpp +) + +if(WIN32) + add_executable(ac6recomp WIN32 ${AC6RECOMP_SOURCES}) +else() + add_executable(ac6recomp ${AC6RECOMP_SOURCES}) +endif() + +rexglue_setup_target(ac6recomp) + diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 00000000..6f951e37 --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,86 @@ +{ + "version": 6, + "cmakeMinimumRequired": { "major": 3, "minor": 25, "patch": 0 }, + "configurePresets": [ + { + "name": "windows-base", + "hidden": true, + "generator": "Ninja", + "binaryDir": "${sourceDir}/out/build/${presetName}", + "cacheVariables": { + "CMAKE_C_COMPILER": "clang", + "CMAKE_CXX_COMPILER": "clang++", + "CMAKE_C_FLAGS": "-march=x86-64-v3", + "CMAKE_CXX_FLAGS": "-march=x86-64-v3", + "REXSDK_DIR": "${sourceDir}/thirdparty/rexglue-sdk" + }, + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Windows" + } + }, + { + "name": "linux-base", + "hidden": true, + "generator": "Ninja", + "binaryDir": "${sourceDir}/out/build/${presetName}", + "cacheVariables": { + "CMAKE_C_COMPILER": "clang-20", + "CMAKE_CXX_COMPILER": "clang++-20", + "CMAKE_C_FLAGS": "-march=x86-64-v3", + "CMAKE_CXX_FLAGS": "-march=x86-64-v3", + "REXSDK_DIR": "${sourceDir}/thirdparty/rexglue-sdk" + }, + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Linux" + } + }, + { + "name": "win-amd64-debug", + "displayName": "Windows AMD64 Debug", + "inherits": "windows-base", + "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug" } + }, + { + "name": "win-amd64-release", + "displayName": "Windows AMD64 Release", + "inherits": "windows-base", + "cacheVariables": { "CMAKE_BUILD_TYPE": "Release" } + }, + { + "name": "linux-amd64-debug", + "displayName": "Linux AMD64 Debug", + "inherits": "linux-base", + "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug" } + }, + { + "name": "linux-amd64-release", + "displayName": "Linux AMD64 Release", + "inherits": "linux-base", + "cacheVariables": { "CMAKE_BUILD_TYPE": "Release" } + }, + { + "name": "win-amd64-relwithdebinfo", + "displayName": "Windows AMD64 RelWithDebInfo", + "inherits": "windows-base", + "cacheVariables": { "CMAKE_BUILD_TYPE": "RelWithDebInfo" } + }, + { + "name": "linux-amd64-relwithdebinfo", + "displayName": "Linux AMD64 RelWithDebInfo", + "inherits": "linux-base", + "cacheVariables": { "CMAKE_BUILD_TYPE": "RelWithDebInfo" } + } + ], + "buildPresets": [ + { "name": "win-amd64-debug", "configurePreset": "win-amd64-debug" }, + { "name": "win-amd64-release", "configurePreset": "win-amd64-release" }, + { "name": "win-amd64-relwithdebinfo", "configurePreset": "win-amd64-relwithdebinfo" }, + { "name": "linux-amd64-debug", "configurePreset": "linux-amd64-debug" }, + { "name": "linux-amd64-release", "configurePreset": "linux-amd64-release" }, + { "name": "linux-amd64-relwithdebinfo", "configurePreset": "linux-amd64-relwithdebinfo" } + ] +} diff --git a/ac6recomp_config.toml b/ac6recomp_config.toml new file mode 100644 index 00000000..af1b0b3e --- /dev/null +++ b/ac6recomp_config.toml @@ -0,0 +1,10543 @@ +# ac6recomp - ReXGlue Codegen Configuration +# Generated by: rexglue init +# See README.md for full configuration reference. + +project_name = "ac6recomp" +file_path = "assets/default.xex" +out_directory_path = "generated" + + +longjmp_address = 0x823CA690 +setjmp_address = 0x823CA9B0 + +indirect_calls = [ 0x8237C368, 0x8237BA48 ] + +[rexcrt] +RtlAllocateHeap = 0x821F9E10 +RtlFreeHeap = 0x821FA6F8 +RtlSizeHeap = 0x821F90A8 +RtlReAllocateHeap = 0x821FA9E0 +memcpy = 0x82382F18 +memmove = 0x82383870 +memset = 0x823830F0 +XMemCpy = 0x82382A90 + +[functions] +0x82090000 = { name = "rex_sub_82090000" } +0x820900C8 = { name = "rex_sub_820900C8" } +0x82090150 = { name = "rex_sub_82090150" } +0x820901D0 = { name = "rex_sub_820901D0" } +0x82090228 = { name = "rex_sub_82090228" } +0x82090270 = { name = "rex_sub_82090270" } +0x820902C0 = { name = "rex_sub_820902C0" } +0x82090320 = { name = "rex_sub_82090320" } +0x82090370 = { name = "rex_sub_82090370" } +0x820903F0 = { name = "rex_sub_820903F0" } +0x82090438 = { name = "rex_sub_82090438" } +0x820904B8 = { name = "rex_sub_820904B8" } +0x820f6020 = {} +0x820f5ff0 = {} +0x820f6070 = {} +0x820f5fe0 = {} +0x8237e3e8 = {} +0x82306c88 = {} +0x82272c08 = {} +0x82272c38 = {} +0x820f6090 = {} +0x820f6040 = {} +0x82322340 = {} +0x820f5fc0 = {} +0x820f5fb0 = {} +0x82272990 = {} +0x822f7120 = {} +0x82366a88 = {} +0x820f6080 = {} +0x82272c68 = {} +0x82272c50 = {} +0x822e0eb8 = {} +0x822f0bd8 = {} +0x82272c20 = {} +0x820906E0 = { name = "rex_sub_820906E0" } +0x82090738 = { name = "rex_sub_82090738" } +0x82090818 = { name = "rex_sub_82090818" } +0x82092348 = { name = "rex_sub_82092348" } +0x82092480 = { name = "rex_sub_82092480" } +0x82092550 = { name = "rex_sub_82092550" } +0x820925D0 = { name = "rex_sub_820925D0" } +0x82092850 = { name = "rex_sub_82092850" } +0x82092B00 = { name = "rex_sub_82092B00" } +0x82092BD8 = { name = "rex_sub_82092BD8" } +0x82092CF0 = { name = "rex_sub_82092CF0" } +0x82092E90 = { name = "rex_sub_82092E90" } +0x82092EE0 = { name = "rex_sub_82092EE0" } +0x82092F80 = { name = "rex_sub_82092F80" } +0x820930B8 = { name = "rex_sub_820930B8" } +0x82093158 = { name = "rex_sub_82093158" } +0x820932B8 = { name = "rex_sub_820932B8" } +0x82093588 = { name = "rex_sub_82093588" } +0x82093630 = { name = "rex_sub_82093630" } +0x820936E8 = { name = "rex_sub_820936E8" } +0x82093758 = { name = "rex_sub_82093758" } +0x82093808 = { name = "rex_sub_82093808" } +0x82093818 = { name = "rex_sub_82093818" } +0x82093870 = { name = "rex_sub_82093870" } +0x820938B8 = { name = "rex_sub_820938B8" } +0x82093980 = { name = "rex_sub_82093980" } +0x82093A10 = { name = "rex_sub_82093A10" } +0x82093A68 = { name = "rex_sub_82093A68" } +0x82093AB0 = { name = "rex_sub_82093AB0" } +0x82093B20 = { name = "rex_sub_82093B20" } +0x82093B90 = { name = "rex_sub_82093B90" } +0x82093BD8 = { name = "rex_sub_82093BD8" } +0x82093C20 = { name = "rex_sub_82093C20" } +0x82093C70 = { name = "rex_sub_82093C70" } +0x82093CC8 = { name = "rex_sub_82093CC8" } +0x82093D18 = { name = "rex_sub_82093D18" } +0x82093DA0 = { name = "rex_sub_82093DA0" } +0x82093DD0 = { name = "rex_sub_82093DD0" } +0x82093E00 = { name = "rex_sub_82093E00" } +0x82093E20 = { name = "rex_sub_82093E20" } +0x82093E40 = { name = "rex_sub_82093E40" } +0x82093E80 = { name = "rex_sub_82093E80" } +0x82093ED0 = { name = "rex_sub_82093ED0" } +0x82093F68 = { name = "rex_sub_82093F68" } +0x82093FB8 = { name = "rex_sub_82093FB8" } +0x82094038 = { name = "rex_sub_82094038" } +0x820940A0 = { name = "rex_sub_820940A0" } +0x820940E8 = { name = "rex_sub_820940E8" } +0x82094140 = { name = "rex_sub_82094140" } +0x820941A8 = { name = "rex_sub_820941A8" } +0x820941F8 = { name = "rex_sub_820941F8" } +0x820942A0 = { name = "rex_sub_820942A0" } +0x820942E8 = { name = "rex_sub_820942E8" } +0x82094350 = { name = "rex_sub_82094350" } +0x820943B0 = { name = "rex_sub_820943B0" } +0x82094440 = { name = "rex_sub_82094440" } +0x82094518 = { name = "rex_sub_82094518" } +0x82094560 = { name = "rex_sub_82094560" } +0x82094BE8 = { name = "rex_sub_82094BE8" } +0x82094C68 = { name = "rex_sub_82094C68" } +0x82094D00 = { name = "rex_sub_82094D00" } +0x82094DA8 = { name = "rex_sub_82094DA8" } +0x82094DF0 = { name = "rex_sub_82094DF0" } +0x82094E50 = { name = "rex_sub_82094E50" } +0x82094EA0 = { name = "rex_sub_82094EA0" } +0x82094F10 = { name = "rex_sub_82094F10" } +0x82094F98 = { name = "rex_sub_82094F98" } +0x82094FF8 = { name = "rex_sub_82094FF8" } +0x82095058 = { name = "rex_sub_82095058" } +0x820950B8 = { name = "rex_sub_820950B8" } +0x82095118 = { name = "rex_sub_82095118" } +0x82095160 = { name = "rex_sub_82095160" } +0x820951C8 = { name = "rex_sub_820951C8" } +0x82095210 = { name = "rex_sub_82095210" } +0x82095288 = { name = "rex_sub_82095288" } +0x820952D0 = { name = "rex_sub_820952D0" } +0x82095468 = { name = "rex_sub_82095468" } +0x82095550 = { name = "rex_sub_82095550" } +0x820955A8 = { name = "rex_sub_820955A8" } +0x82095788 = { name = "rex_sub_82095788" } +0x82095820 = { name = "rex_sub_82095820" } +0x82095868 = { name = "rex_sub_82095868" } +0x820958B8 = { name = "rex_sub_820958B8" } +0x82095918 = { name = "rex_sub_82095918" } +0x82095C38 = { name = "rex_sub_82095C38" } +0x82095E30 = { name = "rex_sub_82095E30" } +0x82095E80 = { name = "rex_sub_82095E80" } +0x82095F08 = { name = "rex_sub_82095F08" } +0x82095F18 = { name = "rex_sub_82095F18" } +0x82095FB8 = { name = "rex_sub_82095FB8" } +0x82096038 = { name = "rex_sub_82096038" } +0x82096100 = { name = "rex_sub_82096100" } +0x820964C0 = { name = "rex_sub_820964C0" } +0x82096558 = { name = "rex_sub_82096558" } +0x82096600 = { name = "rex_sub_82096600" } +0x82096660 = { name = "rex_sub_82096660" } +0x82096750 = { name = "rex_sub_82096750" } +0x820967B0 = { name = "rex_sub_820967B0" } +0x82096858 = { name = "rex_sub_82096858" } +0x820968F8 = { name = "rex_sub_820968F8" } +0x82096980 = { name = "rex_sub_82096980" } +0x82096A08 = { name = "rex_sub_82096A08" } +0x82096A98 = { name = "rex_sub_82096A98" } +0x82096B20 = { name = "rex_sub_82096B20" } +0x82096B58 = { name = "rex_sub_82096B58" } +0x82096BC8 = { name = "rex_sub_82096BC8" } +0x82096C38 = { name = "rex_sub_82096C38" } +0x82096CD0 = { name = "rex_sub_82096CD0" } +0x82097000 = { name = "rex_sub_82097000" } +0x82097228 = { name = "rex_sub_82097228" } +0x82097270 = { name = "rex_sub_82097270" } +0x820972B8 = { name = "rex_sub_820972B8" } +0x82097300 = { name = "rex_sub_82097300" } +0x82097350 = { name = "rex_sub_82097350" } +0x820973A0 = { name = "rex_sub_820973A0" } +0x82097578 = { name = "rex_sub_82097578" } +0x82098FE8 = { name = "rex_sub_82098FE8" } +0x82099370 = { name = "rex_sub_82099370" } +0x8209B088 = { name = "rex_sub_8209B088" } +0x8209B140 = { name = "rex_sub_8209B140" } +0x8209B200 = { name = "rex_sub_8209B200" } +0x8209B2D8 = { name = "rex_sub_8209B2D8" } +0x8209B3B0 = { name = "rex_sub_8209B3B0" } +0x8209B9F0 = { name = "rex_sub_8209B9F0" } +0x8209BA90 = { name = "rex_sub_8209BA90" } +0x8209BAA0 = { name = "rex_sub_8209BAA0" } +0x8209BAB0 = { name = "rex_sub_8209BAB0" } +0x8209BAB8 = { name = "rex_sub_8209BAB8" } +0x8209BAC0 = { name = "rex_sub_8209BAC0" } +0x8209BAC8 = { name = "rex_sub_8209BAC8" } +0x8209BBD8 = { name = "rex_sub_8209BBD8" } +0x8209BE30 = { name = "rex_sub_8209BE30" } +0x8209BF80 = { name = "rex_sub_8209BF80" } +0x8209C0B8 = { name = "rex_sub_8209C0B8" } +0x8209C3F0 = { name = "rex_sub_8209C3F0" } +0x8209C8F0 = { name = "rex_sub_8209C8F0" } +0x8209C980 = { name = "rex_sub_8209C980" } +0x8209C9C0 = { name = "rex_sub_8209C9C0" } +0x8209CA30 = { name = "rex_sub_8209CA30" } +0x8209CB88 = { name = "rex_sub_8209CB88" } +0x8209CCF8 = { name = "rex_sub_8209CCF8" } +0x8209CD98 = { name = "rex_sub_8209CD98" } +0x8209CE60 = { name = "rex_sub_8209CE60" } +0x8209CE78 = { name = "rex_sub_8209CE78" } +0x8209CFB8 = { name = "rex_sub_8209CFB8" } +0x8209D630 = { name = "rex_sub_8209D630" } +0x8209D760 = { name = "rex_sub_8209D760" } +0x8209DC90 = { name = "rex_sub_8209DC90" } +0x8209E180 = { name = "rex_sub_8209E180" } +0x8209EE60 = { name = "rex_sub_8209EE60" } +0x8209F5B0 = { name = "rex_sub_8209F5B0" } +0x8209F840 = { name = "rex_sub_8209F840" } +0x8209FA50 = { name = "rex_sub_8209FA50" } +0x8209FD90 = { name = "rex_sub_8209FD90" } +0x8209FF90 = { name = "rex_sub_8209FF90" } +0x820A0190 = { name = "rex_sub_820A0190" } +0x820A0320 = { name = "rex_sub_820A0320" } +0x820A06C8 = { name = "rex_sub_820A06C8" } +0x820A0F40 = { name = "rex_sub_820A0F40" } +0x820A0FF0 = { name = "rex_sub_820A0FF0" } +0x820A14B8 = { name = "rex_sub_820A14B8" } +0x820A1530 = { name = "rex_sub_820A1530" } +0x820A15F8 = { name = "rex_sub_820A15F8" } +0x820A1788 = { name = "rex_sub_820A1788" } +0x820A1C20 = { name = "rex_sub_820A1C20" } +0x820A1CD0 = { name = "rex_sub_820A1CD0" } +0x820A1D98 = { name = "rex_sub_820A1D98" } +0x820A1FA0 = { name = "rex_sub_820A1FA0" } +0x820A20A8 = { name = "rex_sub_820A20A8" } +0x820A20F0 = { name = "rex_sub_820A20F0" } +0x820A2168 = { name = "rex_sub_820A2168" } +0x820A21E0 = { name = "rex_sub_820A21E0" } +0x820A2E28 = { name = "rex_sub_820A2E28" } +0x820A3450 = { name = "rex_sub_820A3450" } +0x820A3498 = { name = "rex_sub_820A3498" } +0x820A3520 = { name = "rex_sub_820A3520" } +0x820A3568 = { name = "rex_sub_820A3568" } +0x820A35C0 = { name = "rex_sub_820A35C0" } +0x820A3640 = { name = "rex_sub_820A3640" } +0x820A36A8 = { name = "rex_sub_820A36A8" } +0x820A3718 = { name = "rex_sub_820A3718" } +0x820A3780 = { name = "rex_sub_820A3780" } +0x820A3840 = { name = "rex_sub_820A3840" } +0x820A3890 = { name = "rex_sub_820A3890" } +0x820A3A18 = { name = "rex_sub_820A3A18" } +0x820A3AA0 = { name = "rex_sub_820A3AA0" } +0x820A3B08 = { name = "rex_sub_820A3B08" } +0x820A3C38 = { name = "rex_sub_820A3C38" } +0x820A3CA8 = { name = "rex_sub_820A3CA8" } +0x820A3D00 = { name = "rex_sub_820A3D00" } +0x820A3D68 = { name = "rex_sub_820A3D68" } +0x820A3DD8 = { name = "rex_sub_820A3DD8" } +0x820A3E58 = { name = "rex_sub_820A3E58" } +0x820A3EE8 = { name = "rex_sub_820A3EE8" } +0x820A4070 = { name = "rex_sub_820A4070" } +0x820A4190 = { name = "rex_sub_820A4190" } +0x820A4358 = { name = "rex_sub_820A4358" } +0x820A4458 = { name = "rex_sub_820A4458" } +0x820A4810 = { name = "rex_sub_820A4810" } +0x820A48A0 = { name = "rex_sub_820A48A0" } +0x820A4900 = { name = "rex_sub_820A4900" } +0x820A4948 = { name = "rex_sub_820A4948" } +0x820A49A8 = { name = "rex_sub_820A49A8" } +0x820A4AA8 = { name = "rex_sub_820A4AA8" } +0x820A4D80 = { name = "rex_sub_820A4D80" } +0x820A4E38 = { name = "rex_sub_820A4E38" } +0x820A4EB8 = { name = "rex_sub_820A4EB8" } +0x820A5048 = { name = "rex_sub_820A5048" } +0x820A51B8 = { name = "rex_sub_820A51B8" } +0x820A58D0 = { name = "rex_sub_820A58D0" } +0x820A5938 = { name = "rex_sub_820A5938" } +0x820A5D28 = { name = "rex_sub_820A5D28" } +0x820A6128 = { name = "rex_sub_820A6128" } +0x820A61B0 = { name = "rex_sub_820A61B0" } +0x820A6410 = { name = "rex_sub_820A6410" } +0x820A6548 = { name = "rex_sub_820A6548" } +0x820A65A8 = { name = "rex_sub_820A65A8" } +0x820A6698 = { name = "rex_sub_820A6698" } +0x820A6708 = { name = "rex_sub_820A6708" } +0x820A67C8 = { name = "rex_sub_820A67C8" } +0x820A6888 = { name = "rex_sub_820A6888" } +0x820A6948 = { name = "rex_sub_820A6948" } +0x820A6A28 = { name = "rex_sub_820A6A28" } +0x820A6B20 = { name = "rex_sub_820A6B20" } +0x820A6BE8 = { name = "rex_sub_820A6BE8" } +0x820A6CC8 = { name = "rex_sub_820A6CC8" } +0x820A6D80 = { name = "rex_sub_820A6D80" } +0x820A6DF0 = { name = "rex_sub_820A6DF0" } +0x820A6E38 = { name = "rex_sub_820A6E38" } +0x820A6E48 = { name = "rex_sub_820A6E48" } +0x820A6EA0 = { name = "rex_sub_820A6EA0" } +0x820A6F00 = { name = "rex_sub_820A6F00" } +0x820A7D40 = { name = "rex_sub_820A7D40" } +0x820A7DD8 = { name = "rex_sub_820A7DD8" } +0x820A7FC8 = { name = "rex_sub_820A7FC8" } +0x820A8470 = { name = "rex_sub_820A8470" } +0x820A8508 = { name = "rex_sub_820A8508" } +0x820A8A48 = { name = "rex_sub_820A8A48" } +0x820A8C98 = { name = "rex_sub_820A8C98" } +0x820A8D28 = { name = "rex_sub_820A8D28" } +0x820A8DB8 = { name = "rex_sub_820A8DB8" } +0x820A8E48 = { name = "rex_sub_820A8E48" } +0x820A8ED8 = { name = "rex_sub_820A8ED8" } +0x820A8F68 = { name = "rex_sub_820A8F68" } +0x820A8FF8 = { name = "rex_sub_820A8FF8" } +0x820A9088 = { name = "rex_sub_820A9088" } +0x820A9118 = { name = "rex_sub_820A9118" } +0x820A91A8 = { name = "rex_sub_820A91A8" } +0x820A92D0 = { name = "rex_sub_820A92D0" } +0x820A96E8 = { name = "rex_sub_820A96E8" } +0x820A9730 = { name = "rex_sub_820A9730" } +0x820A9890 = { name = "rex_sub_820A9890" } +0x820A9898 = { name = "rex_sub_820A9898" } +0x820A98E0 = { name = "rex_sub_820A98E0" } +0x820A9A18 = { name = "rex_sub_820A9A18" } +0x820A9B50 = { name = "rex_sub_820A9B50" } +0x820A9C00 = { name = "rex_sub_820A9C00" } +0x820A9C68 = { name = "rex_sub_820A9C68" } +0x820A9E90 = { name = "rex_sub_820A9E90" } +0x820A9EE0 = { name = "rex_sub_820A9EE0" } +0x820A9FF8 = { name = "rex_sub_820A9FF8" } +0x820AA3B0 = { name = "rex_sub_820AA3B0" } +0x820AA448 = { name = "rex_sub_820AA448" } +0x820AA500 = { name = "rex_sub_820AA500" } +0x820AA548 = { name = "rex_sub_820AA548" } +0x820AA5B0 = { name = "rex_sub_820AA5B0" } +0x820AA618 = { name = "rex_sub_820AA618" } +0x820AA6D0 = { name = "rex_sub_820AA6D0" } +0x820AA790 = { name = "rex_sub_820AA790" } +0x820AA818 = { name = "rex_sub_820AA818" } +0x820AA8B8 = { name = "rex_sub_820AA8B8" } +0x820AA9B0 = { name = "rex_sub_820AA9B0" } +0x820AAB40 = { name = "rex_sub_820AAB40" } +0x820AAC48 = { name = "rex_sub_820AAC48" } +0x820AAD20 = { name = "rex_sub_820AAD20" } +0x820AADC0 = { name = "rex_sub_820AADC0" } +0x820AAEC0 = { name = "rex_sub_820AAEC0" } +0x820AAF98 = { name = "rex_sub_820AAF98" } +0x820AAFE8 = { name = "rex_sub_820AAFE8" } +0x820AB268 = { name = "rex_sub_820AB268" } +0x820AB338 = { name = "rex_sub_820AB338" } +0x820AB4C8 = { name = "rex_sub_820AB4C8" } +0x820AB598 = { name = "rex_sub_820AB598" } +0x820AB6E0 = { name = "rex_sub_820AB6E0" } +0x820AB8F0 = { name = "rex_sub_820AB8F0" } +0x820ABBC8 = { name = "rex_sub_820ABBC8" } +0x820ABFD0 = { name = "rex_sub_820ABFD0" } +0x820AC088 = { name = "rex_sub_820AC088" } +0x820ACD70 = { name = "rex_sub_820ACD70" } +0x820ACE90 = { name = "rex_sub_820ACE90" } +0x820AD050 = { name = "rex_sub_820AD050" } +0x820AD310 = { name = "rex_sub_820AD310" } +0x820AD7A0 = { name = "rex_sub_820AD7A0" } +0x820AD8A0 = { name = "rex_sub_820AD8A0" } +0x820AD8E8 = { name = "rex_sub_820AD8E8" } +0x820AD930 = { name = "rex_sub_820AD930" } +0x820AD9B0 = { name = "rex_sub_820AD9B0" } +0x820ADB38 = { name = "rex_sub_820ADB38" } +0x820ADC10 = { name = "rex_sub_820ADC10" } +0x820ADC60 = { name = "rex_sub_820ADC60" } +0x820ADCA8 = { name = "rex_sub_820ADCA8" } +0x820ADD00 = { name = "rex_sub_820ADD00" } +0x820ADD48 = { name = "rex_sub_820ADD48" } +0x820ADFD8 = { name = "rex_sub_820ADFD8" } +0x820AE038 = { name = "rex_sub_820AE038" } +0x820AE158 = { name = "rex_sub_820AE158" } +0x820AE1F8 = { name = "rex_sub_820AE1F8" } +0x820AE528 = { name = "rex_sub_820AE528" } +0x820AE698 = { name = "rex_sub_820AE698" } +0x820AE7D8 = { name = "rex_sub_820AE7D8" } +0x820AE858 = { name = "rex_sub_820AE858" } +0x820AEAB8 = { name = "rex_sub_820AEAB8" } +0x820AEBD8 = { name = "rex_sub_820AEBD8" } +0x820AECB8 = { name = "rex_sub_820AECB8" } +0x820AEDE0 = { name = "rex_sub_820AEDE0" } +0x820AEEB8 = { name = "rex_sub_820AEEB8" } +0x820AF118 = { name = "rex_sub_820AF118" } +0x820AF1E0 = { name = "rex_sub_820AF1E0" } +0x820AF2F8 = { name = "rex_sub_820AF2F8" } +0x820AF3E0 = { name = "rex_sub_820AF3E0" } +0x820AF438 = { name = "rex_sub_820AF438" } +0x820AF4C8 = { name = "rex_sub_820AF4C8" } +0x820AF558 = { name = "rex_sub_820AF558" } +0x820AF678 = { name = "rex_sub_820AF678" } +0x820AF908 = { name = "rex_sub_820AF908" } +0x820AF918 = { name = "rex_sub_820AF918" } +0x820AF960 = { name = "rex_sub_820AF960" } +0x820B0560 = { name = "rex_sub_820B0560" } +0x820B0608 = { name = "rex_sub_820B0608" } +0x820B07A8 = { name = "rex_sub_820B07A8" } +0x820B0948 = { name = "rex_sub_820B0948" } +0x820B0958 = { name = "rex_sub_820B0958" } +0x820B09B8 = { name = "rex_sub_820B09B8" } +0x820B0A00 = { name = "rex_sub_820B0A00" } +0x820B0A50 = { name = "rex_sub_820B0A50" } +0x820B0A60 = { name = "rex_sub_820B0A60" } +0x820B0AC0 = { name = "rex_sub_820B0AC0" } +0x820B0B08 = { name = "rex_sub_820B0B08" } +0x820B0B50 = { name = "rex_sub_820B0B50" } +0x820B0B98 = { name = "rex_sub_820B0B98" } +0x820B0BF0 = { name = "rex_sub_820B0BF0" } +0x820B0C88 = { name = "rex_sub_820B0C88" } +0x820B0CD0 = { name = "rex_sub_820B0CD0" } +0x820B0D18 = { name = "rex_sub_820B0D18" } +0x820B0D78 = { name = "rex_sub_820B0D78" } +0x820B0FE8 = { name = "rex_sub_820B0FE8" } +0x820B1030 = { name = "rex_sub_820B1030" } +0x820B1078 = { name = "rex_sub_820B1078" } +0x820B11E0 = { name = "rex_sub_820B11E0" } +0x820B1478 = { name = "rex_sub_820B1478" } +0x820B14F0 = { name = "rex_sub_820B14F0" } +0x820B1540 = { name = "rex_sub_820B1540" } +0x820B19A8 = { name = "rex_sub_820B19A8" } +0x820B1C50 = { name = "rex_sub_820B1C50" } +0x820B1CD0 = { name = "rex_sub_820B1CD0" } +0x820B1E18 = { name = "rex_sub_820B1E18" } +0x820B1E68 = { name = "rex_sub_820B1E68" } +0x820B1F38 = { name = "rex_sub_820B1F38" } +0x820B24A8 = { name = "rex_sub_820B24A8" } +0x820B2508 = { name = "rex_sub_820B2508" } +0x820B2570 = { name = "rex_sub_820B2570" } +0x820B25D0 = { name = "rex_sub_820B25D0" } +0x820B2D70 = { name = "rex_sub_820B2D70" } +0x820B2FC8 = { name = "rex_sub_820B2FC8" } +0x820B3068 = { name = "rex_sub_820B3068" } +0x820B30E0 = { name = "rex_sub_820B30E0" } +0x820B3170 = { name = "rex_sub_820B3170" } +0x820B3858 = { name = "rex_sub_820B3858" } +0x820B3D20 = { name = "rex_sub_820B3D20" } +0x820B3D58 = { name = "rex_sub_820B3D58" } +0x820B3D90 = { name = "rex_sub_820B3D90" } +0x820B3E50 = { name = "rex_sub_820B3E50" } +0x820B3E80 = { name = "rex_sub_820B3E80" } +0x820B3EC8 = { name = "rex_sub_820B3EC8" } +0x820B3FC0 = { name = "rex_sub_820B3FC0" } +0x820B4350 = { name = "rex_sub_820B4350" } +0x820B4398 = { name = "rex_sub_820B4398" } +0x820B43F8 = { name = "rex_sub_820B43F8" } +0x820B4468 = { name = "rex_sub_820B4468" } +0x820B44C0 = { name = "rex_sub_820B44C0" } +0x820B4508 = { name = "rex_sub_820B4508" } +0x820B4550 = { name = "rex_sub_820B4550" } +0x820B45A8 = { name = "rex_sub_820B45A8" } +0x820B45F0 = { name = "rex_sub_820B45F0" } +0x820B4640 = { name = "rex_sub_820B4640" } +0x820B46D0 = { name = "rex_sub_820B46D0" } +0x820B4958 = { name = "rex_sub_820B4958" } +0x820B4AD0 = { name = "rex_sub_820B4AD0" } +0x820B4D50 = { name = "rex_sub_820B4D50" } +0x820B5430 = { name = "rex_sub_820B5430" } +0x820B5580 = { name = "rex_sub_820B5580" } +0x820B5C90 = { name = "rex_sub_820B5C90" } +0x820B5E08 = { name = "rex_sub_820B5E08" } +0x820B5F30 = { name = "rex_sub_820B5F30" } +0x820B6010 = { name = "rex_sub_820B6010" } +0x820B60F0 = { name = "rex_sub_820B60F0" } +0x820B61B8 = { name = "rex_sub_820B61B8" } +0x820B62A0 = { name = "rex_sub_820B62A0" } +0x820B63A0 = { name = "rex_sub_820B63A0" } +0x820B66B0 = { name = "rex_sub_820B66B0" } +0x820B6798 = { name = "rex_sub_820B6798" } +0x820B6898 = { name = "rex_sub_820B6898" } +0x820B6BA8 = { name = "rex_sub_820B6BA8" } +0x820B6C38 = { name = "rex_sub_820B6C38" } +0x820B6D18 = { name = "rex_sub_820B6D18" } +0x820B6EE8 = { name = "rex_sub_820B6EE8" } +0x820B6FC8 = { name = "rex_sub_820B6FC8" } +0x820B7118 = { name = "rex_sub_820B7118" } +0x820B71F8 = { name = "rex_sub_820B71F8" } +0x820B72E8 = { name = "rex_sub_820B72E8" } +0x820B7340 = { name = "rex_sub_820B7340" } +0x820B7490 = { name = "rex_sub_820B7490" } +0x820B7570 = { name = "rex_sub_820B7570" } +0x820B7660 = { name = "rex_sub_820B7660" } +0x820B76F0 = { name = "rex_sub_820B76F0" } +0x820B77C8 = { name = "rex_sub_820B77C8" } +0x820B78F0 = { name = "rex_sub_820B78F0" } +0x820B7A18 = { name = "rex_sub_820B7A18" } +0x820B7A70 = { name = "rex_sub_820B7A70" } +0x820B7DA0 = { name = "rex_sub_820B7DA0" } +0x820B8820 = { name = "rex_sub_820B8820" } +0x820B88B8 = { name = "rex_sub_820B88B8" } +0x820B8980 = { name = "rex_sub_820B8980" } +0x820B89D0 = { name = "rex_sub_820B89D0" } +0x820B8A70 = { name = "rex_sub_820B8A70" } +0x820B8AF8 = { name = "rex_sub_820B8AF8" } +0x820B8BA0 = { name = "rex_sub_820B8BA0" } +0x820B8CA0 = { name = "rex_sub_820B8CA0" } +0x820B8CA8 = { name = "rex_sub_820B8CA8" } +0x820B91E0 = { name = "rex_sub_820B91E0" } +0x820B92F0 = { name = "rex_sub_820B92F0" } +0x820B93D8 = { name = "rex_sub_820B93D8" } +0x820B9638 = { name = "rex_sub_820B9638" } +0x820B98E0 = { name = "rex_sub_820B98E0" } +0x820B9C90 = { name = "rex_sub_820B9C90" } +0x820BA140 = { name = "rex_sub_820BA140" } +0x820BA288 = { name = "rex_sub_820BA288" } +0x820BA2E0 = { name = "rex_sub_820BA2E0" } +0x820BA580 = { name = "rex_sub_820BA580" } +0x820BAB40 = { name = "rex_sub_820BAB40" } +0x820BAF30 = { name = "rex_sub_820BAF30" } +0x820BB118 = { name = "rex_sub_820BB118" } +0x820BB708 = { name = "rex_sub_820BB708" } +0x820BB870 = { name = "rex_sub_820BB870" } +0x820BBBC8 = { name = "rex_sub_820BBBC8" } +0x820BBE30 = { name = "rex_sub_820BBE30" } +0x820BBFC8 = { name = "rex_sub_820BBFC8" } +0x820BC018 = { name = "rex_sub_820BC018" } +0x820BC1A0 = { name = "rex_sub_820BC1A0" } +0x820BC308 = { name = "rex_sub_820BC308" } +0x820BC3F8 = { name = "rex_sub_820BC3F8" } +0x820BC678 = { name = "rex_sub_820BC678" } +0x820BC9A0 = { name = "rex_sub_820BC9A0" } +0x820BCB80 = { name = "rex_sub_820BCB80" } +0x820BD130 = { name = "rex_sub_820BD130" } +0x820BD218 = { name = "rex_sub_820BD218" } +0x820BD2F0 = { name = "rex_sub_820BD2F0" } +0x820BD8D8 = { name = "rex_sub_820BD8D8" } +0x820BDD48 = { name = "rex_sub_820BDD48" } +0x820BDFD0 = { name = "rex_sub_820BDFD0" } +0x820BE040 = { name = "rex_sub_820BE040" } +0x820BE2C0 = { name = "rex_sub_820BE2C0" } +0x820BE3E0 = { name = "rex_sub_820BE3E0" } +0x820BE500 = { name = "rex_sub_820BE500" } +0x820BEB60 = { name = "rex_sub_820BEB60" } +0x820BEE38 = { name = "rex_sub_820BEE38" } +0x820BEF10 = { name = "rex_sub_820BEF10" } +0x820BEF60 = { name = "rex_sub_820BEF60" } +0x820BF068 = { name = "rex_sub_820BF068" } +0x820BF0B8 = { name = "rex_sub_820BF0B8" } +0x820BF9E0 = { name = "rex_sub_820BF9E0" } +0x820BFBA0 = { name = "rex_sub_820BFBA0" } +0x820BFD78 = { name = "rex_sub_820BFD78" } +0x820BFFB8 = { name = "rex_sub_820BFFB8" } +0x820C0008 = { name = "rex_sub_820C0008" } +0x820C0178 = { name = "rex_sub_820C0178" } +0x820C0450 = { name = "rex_sub_820C0450" } +0x820C04A0 = { name = "rex_sub_820C04A0" } +0x820C0620 = { name = "rex_sub_820C0620" } +0x820C08A8 = { name = "rex_sub_820C08A8" } +0x820C0F80 = { name = "rex_sub_820C0F80" } +0x820C10F0 = { name = "rex_sub_820C10F0" } +0x820C14F8 = { name = "rex_sub_820C14F8" } +0x820C1718 = { name = "rex_sub_820C1718" } +0x820C19E0 = { name = "rex_sub_820C19E0" } +0x820C1AC8 = { name = "rex_sub_820C1AC8" } +0x820C1B18 = { name = "rex_sub_820C1B18" } +0x820C1D60 = { name = "rex_sub_820C1D60" } +0x820C1E30 = { name = "rex_sub_820C1E30" } +0x820C1F08 = { name = "rex_sub_820C1F08" } +0x820C23D8 = { name = "rex_sub_820C23D8" } +0x820C2510 = { name = "rex_sub_820C2510" } +0x820C25F8 = { name = "rex_sub_820C25F8" } +0x820C27D8 = { name = "rex_sub_820C27D8" } +0x820C2B50 = { name = "rex_sub_820C2B50" } +0x820C2C28 = { name = "rex_sub_820C2C28" } +0x820C2F78 = { name = "rex_sub_820C2F78" } +0x820C3048 = { name = "rex_sub_820C3048" } +0x820C3090 = { name = "rex_sub_820C3090" } +0x820C3488 = { name = "rex_sub_820C3488" } +0x820C3630 = { name = "rex_sub_820C3630" } +0x820C38E8 = { name = "rex_sub_820C38E8" } +0x820C3B48 = { name = "rex_sub_820C3B48" } +0x820C3CF0 = { name = "rex_sub_820C3CF0" } +0x820C40D0 = { name = "rex_sub_820C40D0" } +0x820C41D0 = { name = "rex_sub_820C41D0" } +0x820C4330 = { name = "rex_sub_820C4330" } +0x820C4380 = { name = "rex_sub_820C4380" } +0x820C4860 = { name = "rex_sub_820C4860" } +0x820C4FD0 = { name = "rex_sub_820C4FD0" } +0x820C50B8 = { name = "rex_sub_820C50B8" } +0x820C5170 = { name = "rex_sub_820C5170" } +0x820C5308 = { name = "rex_sub_820C5308" } +0x820C53B8 = { name = "rex_sub_820C53B8" } +0x820C5498 = { name = "rex_sub_820C5498" } +0x820C54E8 = { name = "rex_sub_820C54E8" } +0x820C5690 = { name = "rex_sub_820C5690" } +0x820C57E0 = { name = "rex_sub_820C57E0" } +0x820C5C30 = { name = "rex_sub_820C5C30" } +0x820C5D68 = { name = "rex_sub_820C5D68" } +0x820C5E38 = { name = "rex_sub_820C5E38" } +0x820C6220 = { name = "rex_sub_820C6220" } +0x820C67A8 = { name = "rex_sub_820C67A8" } +0x820C6970 = { name = "rex_sub_820C6970" } +0x820C6B08 = { name = "rex_sub_820C6B08" } +0x820C6F28 = { name = "rex_sub_820C6F28" } +0x820C7278 = { name = "rex_sub_820C7278" } +0x820C7998 = { name = "rex_sub_820C7998" } +0x820C7A88 = { name = "rex_sub_820C7A88" } +0x820C7DC0 = { name = "rex_sub_820C7DC0" } +0x820C8080 = { name = "rex_sub_820C8080" } +0x820C8538 = { name = "rex_sub_820C8538" } +0x820C8708 = { name = "rex_sub_820C8708" } +0x820C87D8 = { name = "rex_sub_820C87D8" } +0x820C8978 = { name = "rex_sub_820C8978" } +0x820C89F8 = { name = "rex_sub_820C89F8" } +0x820C8C90 = { name = "rex_sub_820C8C90" } +0x820C8F80 = { name = "rex_sub_820C8F80" } +0x820C9290 = { name = "rex_sub_820C9290" } +0x820C92E8 = { name = "rex_sub_820C92E8" } +0x820C9490 = { name = "rex_sub_820C9490" } +0x820C94F0 = { name = "rex_sub_820C94F0" } +0x820C96A0 = { name = "rex_sub_820C96A0" } +0x820C9930 = { name = "rex_sub_820C9930" } +0x820C9DF8 = { name = "rex_sub_820C9DF8" } +0x820CA070 = { name = "rex_sub_820CA070" } +0x820CA0D0 = { name = "rex_sub_820CA0D0" } +0x820CA700 = { name = "rex_sub_820CA700" } +0x820CA8E0 = { name = "rex_sub_820CA8E0" } +0x820CA910 = { name = "rex_sub_820CA910" } +0x820CA9A0 = { name = "rex_sub_820CA9A0" } +0x820CA9E8 = { name = "rex_sub_820CA9E8" } +0x820CAA70 = { name = "rex_sub_820CAA70" } +0x820CC2E0 = { name = "rex_sub_820CC2E0" } +0x820CC6A8 = { name = "rex_sub_820CC6A8" } +0x820CC820 = { name = "rex_sub_820CC820" } +0x820CCBF0 = { name = "rex_sub_820CCBF0" } +0x820CCDF8 = { name = "rex_sub_820CCDF8" } +0x820CCF50 = { name = "rex_sub_820CCF50" } +0x820CD0A8 = { name = "rex_sub_820CD0A8" } +0x820CD388 = { name = "rex_sub_820CD388" } +0x820CD448 = { name = "rex_sub_820CD448" } +0x820CD698 = { name = "rex_sub_820CD698" } +0x820CD818 = { name = "rex_sub_820CD818" } +0x820CD968 = { name = "rex_sub_820CD968" } +0x820CDA10 = { name = "rex_sub_820CDA10" } +0x820CDB30 = { name = "rex_sub_820CDB30" } +0x820CDF30 = { name = "rex_sub_820CDF30" } +0x820CDFD8 = { name = "rex_sub_820CDFD8" } +0x820CE3F0 = { name = "rex_sub_820CE3F0" } +0x820CE5D8 = { name = "rex_sub_820CE5D8" } +0x820CE6E0 = { name = "rex_sub_820CE6E0" } +0x820CE828 = { name = "rex_sub_820CE828" } +0x820CEA00 = { name = "rex_sub_820CEA00" } +0x820CEA50 = { name = "rex_sub_820CEA50" } +0x820CEAB0 = { name = "rex_sub_820CEAB0" } +0x820CEB28 = { name = "rex_sub_820CEB28" } +0x820CEC20 = { name = "rex_sub_820CEC20" } +0x820CECD0 = { name = "rex_sub_820CECD0" } +0x820CEF10 = { name = "rex_sub_820CEF10" } +0x820CEFA8 = { name = "rex_sub_820CEFA8" } +0x820CF110 = { name = "rex_sub_820CF110" } +0x820CF258 = { name = "rex_sub_820CF258" } +0x820CF2D8 = { name = "rex_sub_820CF2D8" } +0x820CF428 = { name = "rex_sub_820CF428" } +0x820CF710 = { name = "rex_sub_820CF710" } +0x820CF808 = { name = "rex_sub_820CF808" } +0x820CFAD8 = { name = "rex_sub_820CFAD8" } +0x820CFC90 = { name = "rex_sub_820CFC90" } +0x820CFF28 = { name = "rex_sub_820CFF28" } +0x820D01E0 = { name = "rex_sub_820D01E0" } +0x820D0498 = { name = "rex_sub_820D0498" } +0x820D0768 = { name = "rex_sub_820D0768" } +0x820D0A38 = { name = "rex_sub_820D0A38" } +0x820D0BE0 = { name = "rex_sub_820D0BE0" } +0x820D1020 = { name = "rex_sub_820D1020" } +0x820D11D0 = { name = "rex_sub_820D11D0" } +0x820D1288 = { name = "rex_sub_820D1288" } +0x820D13E0 = { name = "rex_sub_820D13E0" } +0x820D1520 = { name = "rex_sub_820D1520" } +0x820D1638 = { name = "rex_sub_820D1638" } +0x820D1760 = { name = "rex_sub_820D1760" } +0x820D1860 = { name = "rex_sub_820D1860" } +0x820D19A0 = { name = "rex_sub_820D19A0" } +0x820D1B80 = { name = "rex_sub_820D1B80" } +0x820D1D80 = { name = "rex_sub_820D1D80" } +0x820D1F18 = { name = "rex_sub_820D1F18" } +0x820D1FF8 = { name = "rex_sub_820D1FF8" } +0x820D2118 = { name = "rex_sub_820D2118" } +0x820D21D8 = { name = "rex_sub_820D21D8" } +0x820D2350 = { name = "rex_sub_820D2350" } +0x820D24F8 = { name = "rex_sub_820D24F8" } +0x820D26C0 = { name = "rex_sub_820D26C0" } +0x820D27E0 = { name = "rex_sub_820D27E0" } +0x820D28D8 = { name = "rex_sub_820D28D8" } +0x820D2B10 = { name = "rex_sub_820D2B10" } +0x820D2F30 = { name = "rex_sub_820D2F30" } +0x820D3420 = { name = "rex_sub_820D3420" } +0x820D35B8 = { name = "rex_sub_820D35B8" } +0x820D3780 = { name = "rex_sub_820D3780" } +0x820D38F8 = { name = "rex_sub_820D38F8" } +0x820D3B98 = { name = "rex_sub_820D3B98" } +0x820D3D90 = { name = "rex_sub_820D3D90" } +0x820D3F80 = { name = "rex_sub_820D3F80" } +0x820D40F8 = { name = "rex_sub_820D40F8" } +0x820D4270 = { name = "rex_sub_820D4270" } +0x820D4418 = { name = "rex_sub_820D4418" } +0x820D4708 = { name = "rex_sub_820D4708" } +0x820D4998 = { name = "rex_sub_820D4998" } +0x820D4B20 = { name = "rex_sub_820D4B20" } +0x820D4C18 = { name = "rex_sub_820D4C18" } +0x820D4DE8 = { name = "rex_sub_820D4DE8" } +0x820D4FA8 = { name = "rex_sub_820D4FA8" } +0x820D5180 = { name = "rex_sub_820D5180" } +0x820D5378 = { name = "rex_sub_820D5378" } +0x820D5790 = { name = "rex_sub_820D5790" } +0x820D5A60 = { name = "rex_sub_820D5A60" } +0x820D5BA8 = { name = "rex_sub_820D5BA8" } +0x820D5D28 = { name = "rex_sub_820D5D28" } +0x820D5ED0 = { name = "rex_sub_820D5ED0" } +0x820D60D8 = { name = "rex_sub_820D60D8" } +0x820D62B0 = { name = "rex_sub_820D62B0" } +0x820D6430 = { name = "rex_sub_820D6430" } +0x820D6610 = { name = "rex_sub_820D6610" } +0x820D67D0 = { name = "rex_sub_820D67D0" } +0x820D6AB0 = { name = "rex_sub_820D6AB0" } +0x820D6B70 = { name = "rex_sub_820D6B70" } +0x820D6DD0 = { name = "rex_sub_820D6DD0" } +0x820D6EA8 = { name = "rex_sub_820D6EA8" } +0x820D6F78 = { name = "rex_sub_820D6F78" } +0x820D70A8 = { name = "rex_sub_820D70A8" } +0x820D71A8 = { name = "rex_sub_820D71A8" } +0x820D7318 = { name = "rex_sub_820D7318" } +0x820D73C0 = { name = "rex_sub_820D73C0" } +0x820D7470 = { name = "rex_sub_820D7470" } +0x820D7628 = { name = "rex_sub_820D7628" } +0x820D77F8 = { name = "rex_sub_820D77F8" } +0x820D7978 = { name = "rex_sub_820D7978" } +0x820D7A48 = { name = "rex_sub_820D7A48" } +0x820D7A90 = { name = "rex_sub_820D7A90" } +0x820D7AF8 = { name = "rex_sub_820D7AF8" } +0x820D7B60 = { name = "rex_sub_820D7B60" } +0x820D7DE8 = { name = "rex_sub_820D7DE8" } +0x820D80D0 = { name = "rex_sub_820D80D0" } +0x820D8118 = { name = "rex_sub_820D8118" } +0x820D8160 = { name = "rex_sub_820D8160" } +0x820D81A8 = { name = "rex_sub_820D81A8" } +0x820D81F0 = { name = "rex_sub_820D81F0" } +0x820D8268 = { name = "rex_sub_820D8268" } +0x820D82B0 = { name = "rex_sub_820D82B0" } +0x820D82F8 = { name = "rex_sub_820D82F8" } +0x820D8360 = { name = "rex_sub_820D8360" } +0x820D83F8 = { name = "rex_sub_820D83F8" } +0x820D8400 = { name = "rex_sub_820D8400" } +0x820D8450 = { name = "rex_sub_820D8450" } +0x820D84C8 = { name = "rex_sub_820D84C8" } +0x820D84D8 = { name = "rex_sub_820D84D8" } +0x820D8538 = { name = "rex_sub_820D8538" } +0x820D85B0 = { name = "rex_sub_820D85B0" } +0x820D85C0 = { name = "rex_sub_820D85C0" } +0x820D8620 = { name = "rex_sub_820D8620" } +0x820D8680 = { name = "rex_sub_820D8680" } +0x820D8A30 = { name = "rex_sub_820D8A30" } +0x820D8A80 = { name = "rex_sub_820D8A80" } +0x820D8BF8 = { name = "rex_sub_820D8BF8" } +0x820D8C90 = { name = "rex_sub_820D8C90" } +0x820D8E08 = { name = "rex_sub_820D8E08" } +0x820D8E68 = { name = "rex_sub_820D8E68" } +0x820D8EB8 = { name = "rex_sub_820D8EB8" } +0x820D8ED0 = { name = "rex_sub_820D8ED0" } +0x820D90B0 = { name = "rex_sub_820D90B0" } +0x820D9108 = { name = "rex_sub_820D9108" } +0x820D91F8 = { name = "rex_sub_820D91F8" } +0x820D9248 = { name = "rex_sub_820D9248" } +0x820D92B8 = { name = "rex_sub_820D92B8" } +0x820D9308 = { name = "rex_sub_820D9308" } +0x820D93A8 = { name = "rex_sub_820D93A8" } +0x820D93E8 = { name = "rex_sub_820D93E8" } +0x820D95C8 = { name = "rex_sub_820D95C8" } +0x820D96B8 = { name = "rex_sub_820D96B8" } +0x820D9830 = { name = "rex_sub_820D9830" } +0x820D9870 = { name = "rex_sub_820D9870" } +0x820D98E8 = { name = "rex_sub_820D98E8" } +0x820D9920 = { name = "rex_sub_820D9920" } +0x820D9A00 = { name = "rex_sub_820D9A00" } +0x820D9EF0 = { name = "rex_sub_820D9EF0" } +0x820D9FC8 = { name = "rex_sub_820D9FC8" } +0x820DA100 = { name = "rex_sub_820DA100" } +0x820DA1D8 = { name = "rex_sub_820DA1D8" } +0x820DA300 = { name = "rex_sub_820DA300" } +0x820DA508 = { name = "rex_sub_820DA508" } +0x820DA6C0 = { name = "rex_sub_820DA6C0" } +0x820DA890 = { name = "rex_sub_820DA890" } +0x820DA968 = { name = "rex_sub_820DA968" } +0x820DACF0 = { name = "rex_sub_820DACF0" } +0x820DAD48 = { name = "rex_sub_820DAD48" } +0x820DAE58 = { name = "rex_sub_820DAE58" } +0x820DAF80 = { name = "rex_sub_820DAF80" } +0x820DB008 = { name = "rex_sub_820DB008" } +0x820DB0E0 = { name = "rex_sub_820DB0E0" } +0x820DB1B8 = { name = "rex_sub_820DB1B8" } +0x820DB258 = { name = "rex_sub_820DB258" } +0x820DB2F8 = { name = "rex_sub_820DB2F8" } +0x820DB3B8 = { name = "rex_sub_820DB3B8" } +0x820DB468 = { name = "rex_sub_820DB468" } +0x820DB518 = { name = "rex_sub_820DB518" } +0x820DB5C8 = { name = "rex_sub_820DB5C8" } +0x820DB620 = { name = "rex_sub_820DB620" } +0x820DB760 = { name = "rex_sub_820DB760" } +0x820DB7B0 = { name = "rex_sub_820DB7B0" } +0x820DB890 = { name = "rex_sub_820DB890" } +0x820DBE20 = { name = "rex_sub_820DBE20" } +0x820DC118 = { name = "rex_sub_820DC118" } +0x820DC3F0 = { name = "rex_sub_820DC3F0" } +0x820DC5E8 = { name = "rex_sub_820DC5E8" } +0x820DC6B8 = { name = "rex_sub_820DC6B8" } +0x820DC848 = { name = "rex_sub_820DC848" } +0x820DCA58 = { name = "rex_sub_820DCA58" } +0x820DCC18 = { name = "rex_sub_820DCC18" } +0x820DCDF8 = { name = "rex_sub_820DCDF8" } +0x820DCF20 = { name = "rex_sub_820DCF20" } +0x820DCFD0 = { name = "rex_sub_820DCFD0" } +0x820DD060 = { name = "rex_sub_820DD060" } +0x820DD180 = { name = "rex_sub_820DD180" } +0x820DD2D0 = { name = "rex_sub_820DD2D0" } +0x820DD428 = { name = "rex_sub_820DD428" } +0x820DD4F0 = { name = "rex_sub_820DD4F0" } +0x820DD640 = { name = "rex_sub_820DD640" } +0x820DD838 = { name = "rex_sub_820DD838" } +0x820DD9C0 = { name = "rex_sub_820DD9C0" } +0x820DDB98 = { name = "rex_sub_820DDB98" } +0x820DDCD0 = { name = "rex_sub_820DDCD0" } +0x820DDDF0 = { name = "rex_sub_820DDDF0" } +0x820DE500 = { name = "rex_sub_820DE500" } +0x820DE790 = { name = "rex_sub_820DE790" } +0x820DE9F8 = { name = "rex_sub_820DE9F8" } +0x820DECE8 = { name = "rex_sub_820DECE8" } +0x820DEE48 = { name = "rex_sub_820DEE48" } +0x820DF100 = { name = "rex_sub_820DF100" } +0x820DF280 = { name = "rex_sub_820DF280" } +0x820DF3E0 = { name = "rex_sub_820DF3E0" } +0x820DF4D0 = { name = "rex_sub_820DF4D0" } +0x820DF610 = { name = "rex_sub_820DF610" } +0x820DF7F8 = { name = "rex_sub_820DF7F8" } +0x820DF9E0 = { name = "rex_sub_820DF9E0" } +0x820DFBD0 = { name = "rex_sub_820DFBD0" } +0x820DFE58 = { name = "rex_sub_820DFE58" } +0x820DFFC8 = { name = "rex_sub_820DFFC8" } +0x820E0078 = { name = "rex_sub_820E0078" } +0x820E0188 = { name = "rex_sub_820E0188" } +0x820E01E8 = { name = "rex_sub_820E01E8" } +0x820E0400 = { name = "rex_sub_820E0400" } +0x820E0450 = { name = "rex_sub_820E0450" } +0x820E04D0 = { name = "rex_sub_820E04D0" } +0x820E05E0 = { name = "rex_sub_820E05E0" } +0x820E0658 = { name = "rex_sub_820E0658" } +0x820E0778 = { name = "rex_sub_820E0778" } +0x820E0858 = { name = "rex_sub_820E0858" } +0x820E0970 = { name = "rex_sub_820E0970" } +0x820E0A58 = { name = "rex_sub_820E0A58" } +0x820E0AC8 = { name = "rex_sub_820E0AC8" } +0x820E0BC0 = { name = "rex_sub_820E0BC0" } +0x820E0CD0 = { name = "rex_sub_820E0CD0" } +0x820E0EE8 = { name = "rex_sub_820E0EE8" } +0x820E1390 = { name = "rex_sub_820E1390" } +0x820E1450 = { name = "rex_sub_820E1450" } +0x820E1788 = { name = "rex_sub_820E1788" } +0x820E1918 = { name = "rex_sub_820E1918" } +0x820E1A60 = { name = "rex_sub_820E1A60" } +0x820E1E80 = { name = "rex_sub_820E1E80" } +0x820E2770 = { name = "rex_sub_820E2770" } +0x820E2828 = { name = "rex_sub_820E2828" } +0x820E29C0 = { name = "rex_sub_820E29C0" } +0x820E2A38 = { name = "rex_sub_820E2A38" } +0x820E2A88 = { name = "rex_sub_820E2A88" } +0x820E2B68 = { name = "rex_sub_820E2B68" } +0x820E2C10 = { name = "rex_sub_820E2C10" } +0x820E2C78 = { name = "rex_sub_820E2C78" } +0x820E2CD0 = { name = "rex_sub_820E2CD0" } +0x820E2D80 = { name = "rex_sub_820E2D80" } +0x820E2E00 = { name = "rex_sub_820E2E00" } +0x820E2E60 = { name = "rex_sub_820E2E60" } +0x820E2EC0 = { name = "rex_sub_820E2EC0" } +0x820E2FD8 = { name = "rex_sub_820E2FD8" } +0x820E3040 = { name = "rex_sub_820E3040" } +0x820E34A8 = { name = "rex_sub_820E34A8" } +0x820E3588 = { name = "rex_sub_820E3588" } +0x820E3718 = { name = "rex_sub_820E3718" } +0x820E3A88 = { name = "rex_sub_820E3A88" } +0x820E3BC0 = { name = "rex_sub_820E3BC0" } +0x820E3C68 = { name = "rex_sub_820E3C68" } +0x820E3DA0 = { name = "rex_sub_820E3DA0" } +0x820E3E90 = { name = "rex_sub_820E3E90" } +0x820E3F78 = { name = "rex_sub_820E3F78" } +0x820E4080 = { name = "rex_sub_820E4080" } +0x820E4158 = { name = "rex_sub_820E4158" } +0x820E4298 = { name = "rex_sub_820E4298" } +0x820E4398 = { name = "rex_sub_820E4398" } +0x820E43F8 = { name = "rex_sub_820E43F8" } +0x820E4470 = { name = "rex_sub_820E4470" } +0x820E4560 = { name = "rex_sub_820E4560" } +0x820E47D0 = { name = "rex_sub_820E47D0" } +0x820E48F8 = { name = "rex_sub_820E48F8" } +0x820E49C0 = { name = "rex_sub_820E49C0" } +0x820E49C8 = { name = "rex_sub_820E49C8" } +0x820E49D0 = { name = "rex_sub_820E49D0" } +0x820E4A60 = { name = "rex_sub_820E4A60" } +0x820E4B10 = { name = "rex_sub_820E4B10" } +0x820E4BE8 = { name = "rex_sub_820E4BE8" } +0x820E4C88 = { name = "rex_sub_820E4C88" } +0x820E4D10 = { name = "rex_sub_820E4D10" } +0x820E4D50 = { name = "rex_sub_820E4D50" } +0x820E4DC0 = { name = "rex_sub_820E4DC0" } +0x820E4E10 = { name = "rex_sub_820E4E10" } +0x820E51D8 = { name = "rex_sub_820E51D8" } +0x820E5248 = { name = "rex_sub_820E5248" } +0x820E53E8 = { name = "rex_sub_820E53E8" } +0x820E5458 = { name = "rex_sub_820E5458" } +0x820E5960 = { name = "rex_sub_820E5960" } +0x820E59D0 = { name = "rex_sub_820E59D0" } +0x820E5B30 = { name = "rex_sub_820E5B30" } +0x820E5BA0 = { name = "rex_sub_820E5BA0" } +0x820E5C68 = { name = "rex_sub_820E5C68" } +0x820E5D40 = { name = "rex_sub_820E5D40" } +0x820E5E40 = { name = "rex_sub_820E5E40" } +0x820E5F30 = { name = "rex_sub_820E5F30" } +0x820E5FD0 = { name = "rex_sub_820E5FD0" } +0x820E6070 = { name = "rex_sub_820E6070" } +0x820E6108 = { name = "rex_sub_820E6108" } +0x820E63A0 = { name = "rex_sub_820E63A0" } +0x820E6428 = { name = "rex_sub_820E6428" } +0x820E64B8 = { name = "rex_sub_820E64B8" } +0x820E6580 = { name = "rex_sub_820E6580" } +0x820E6600 = { name = "rex_sub_820E6600" } +0x820E6668 = { name = "rex_sub_820E6668" } +0x820E66E8 = { name = "rex_sub_820E66E8" } +0x820E6770 = { name = "rex_sub_820E6770" } +0x820E67F8 = { name = "rex_sub_820E67F8" } +0x820E68B8 = { name = "rex_sub_820E68B8" } +0x820E69A0 = { name = "rex_sub_820E69A0" } +0x820E6A90 = { name = "rex_sub_820E6A90" } +0x820E6B80 = { name = "rex_sub_820E6B80" } +0x820E6BE8 = { name = "rex_sub_820E6BE8" } +0x820E6C78 = { name = "rex_sub_820E6C78" } +0x820E6DF8 = { name = "rex_sub_820E6DF8" } +0x820E6FB0 = { name = "rex_sub_820E6FB0" } +0x820E70B0 = { name = "rex_sub_820E70B0" } +0x820E7220 = { name = "rex_sub_820E7220" } +0x820E7338 = { name = "rex_sub_820E7338" } +0x820E7408 = { name = "rex_sub_820E7408" } +0x820E7510 = { name = "rex_sub_820E7510" } +0x820E75E0 = { name = "rex_sub_820E75E0" } +0x820E7638 = { name = "rex_sub_820E7638" } +0x820E7758 = { name = "rex_sub_820E7758" } +0x820E7830 = { name = "rex_sub_820E7830" } +0x820E7898 = { name = "rex_sub_820E7898" } +0x820E78E8 = { name = "rex_sub_820E78E8" } +0x820E7950 = { name = "rex_sub_820E7950" } +0x820E79D0 = { name = "rex_sub_820E79D0" } +0x820E7A50 = { name = "rex_sub_820E7A50" } +0x820E7AB0 = { name = "rex_sub_820E7AB0" } +0x820E7B00 = { name = "rex_sub_820E7B00" } +0x820E7B50 = { name = "rex_sub_820E7B50" } +0x820E7BA0 = { name = "rex_sub_820E7BA0" } +0x820E7BF0 = { name = "rex_sub_820E7BF0" } +0x820E7C48 = { name = "rex_sub_820E7C48" } +0x820E7CA8 = { name = "rex_sub_820E7CA8" } +0x820E7D28 = { name = "rex_sub_820E7D28" } +0x820E7DF8 = { name = "rex_sub_820E7DF8" } +0x820E7E40 = { name = "rex_sub_820E7E40" } +0x820E7E88 = { name = "rex_sub_820E7E88" } +0x820E7ED0 = { name = "rex_sub_820E7ED0" } +0x820E7F38 = { name = "rex_sub_820E7F38" } +0x820E7F90 = { name = "rex_sub_820E7F90" } +0x820E7FE8 = { name = "rex_sub_820E7FE8" } +0x820E8040 = { name = "rex_sub_820E8040" } +0x820E80B0 = { name = "rex_sub_820E80B0" } +0x820E8130 = { name = "rex_sub_820E8130" } +0x820E81B0 = { name = "rex_sub_820E81B0" } +0x820E81F8 = { name = "rex_sub_820E81F8" } +0x820E8240 = { name = "rex_sub_820E8240" } +0x820E8288 = { name = "rex_sub_820E8288" } +0x820E82E8 = { name = "rex_sub_820E82E8" } +0x820E8338 = { name = "rex_sub_820E8338" } +0x820E8380 = { name = "rex_sub_820E8380" } +0x820E83C8 = { name = "rex_sub_820E83C8" } +0x820E8410 = { name = "rex_sub_820E8410" } +0x820E8458 = { name = "rex_sub_820E8458" } +0x820E84A0 = { name = "rex_sub_820E84A0" } +0x820E8510 = { name = "rex_sub_820E8510" } +0x820E8560 = { name = "rex_sub_820E8560" } +0x820E85B8 = { name = "rex_sub_820E85B8" } +0x820E8610 = { name = "rex_sub_820E8610" } +0x820E8848 = { name = "rex_sub_820E8848" } +0x820E88C0 = { name = "rex_sub_820E88C0" } +0x820E89F0 = { name = "rex_sub_820E89F0" } +0x820E8A70 = { name = "rex_sub_820E8A70" } +0x820E8AB8 = { name = "rex_sub_820E8AB8" } +0x820E8B48 = { name = "rex_sub_820E8B48" } +0x820E8B98 = { name = "rex_sub_820E8B98" } +0x820E8C20 = { name = "rex_sub_820E8C20" } +0x820E8C70 = { name = "rex_sub_820E8C70" } +0x820E8CD8 = { name = "rex_sub_820E8CD8" } +0x820E8D28 = { name = "rex_sub_820E8D28" } +0x820E8D78 = { name = "rex_sub_820E8D78" } +0x820E8DC8 = { name = "rex_sub_820E8DC8" } +0x820E8E18 = { name = "rex_sub_820E8E18" } +0x820E8E68 = { name = "rex_sub_820E8E68" } +0x820E8ED0 = { name = "rex_sub_820E8ED0" } +0x820E8FF8 = { name = "rex_sub_820E8FF8" } +0x820E90D0 = { name = "rex_sub_820E90D0" } +0x820E91B0 = { name = "rex_sub_820E91B0" } +0x820E92B0 = { name = "rex_sub_820E92B0" } +0x820E93C0 = { name = "rex_sub_820E93C0" } +0x820E9420 = { name = "rex_sub_820E9420" } +0x820E94B8 = { name = "rex_sub_820E94B8" } +0x820E95C0 = { name = "rex_sub_820E95C0" } +0x820E96C8 = { name = "rex_sub_820E96C8" } +0x820E9768 = { name = "rex_sub_820E9768" } +0x820E97D0 = { name = "rex_sub_820E97D0" } +0x820E9878 = { name = "rex_sub_820E9878" } +0x820E9988 = { name = "rex_sub_820E9988" } +0x820E9A28 = { name = "rex_sub_820E9A28" } +0x820E9AA8 = { name = "rex_sub_820E9AA8" } +0x820E9B50 = { name = "rex_sub_820E9B50" } +0x820E9BC8 = { name = "rex_sub_820E9BC8" } +0x820E9DE8 = { name = "rex_sub_820E9DE8" } +0x820E9E88 = { name = "rex_sub_820E9E88" } +0x820E9F00 = { name = "rex_sub_820E9F00" } +0x820E9F78 = { name = "rex_sub_820E9F78" } +0x820EA190 = { name = "rex_sub_820EA190" } +0x820EA260 = { name = "rex_sub_820EA260" } +0x820EA318 = { name = "rex_sub_820EA318" } +0x820EA410 = { name = "rex_sub_820EA410" } +0x820EA478 = { name = "rex_sub_820EA478" } +0x820EA558 = { name = "rex_sub_820EA558" } +0x820EA5C0 = { name = "rex_sub_820EA5C0" } +0x820EA658 = { name = "rex_sub_820EA658" } +0x820EA6F0 = { name = "rex_sub_820EA6F0" } +0x820EA860 = { name = "rex_sub_820EA860" } +0x820EA900 = { name = "rex_sub_820EA900" } +0x820EA9A0 = { name = "rex_sub_820EA9A0" } +0x820EAA40 = { name = "rex_sub_820EAA40" } +0x820EAB08 = { name = "rex_sub_820EAB08" } +0x820EABA8 = { name = "rex_sub_820EABA8" } +0x820EAC48 = { name = "rex_sub_820EAC48" } +0x820EACD8 = { name = "rex_sub_820EACD8" } +0x820EAD78 = { name = "rex_sub_820EAD78" } +0x820EAE18 = { name = "rex_sub_820EAE18" } +0x820EAEB8 = { name = "rex_sub_820EAEB8" } +0x820EAF48 = { name = "rex_sub_820EAF48" } +0x820EAFD8 = { name = "rex_sub_820EAFD8" } +0x820EB068 = { name = "rex_sub_820EB068" } +0x820EB0F8 = { name = "rex_sub_820EB0F8" } +0x820EB180 = { name = "rex_sub_820EB180" } +0x820EB208 = { name = "rex_sub_820EB208" } +0x820EB298 = { name = "rex_sub_820EB298" } +0x820EB360 = { name = "rex_sub_820EB360" } +0x820EB418 = { name = "rex_sub_820EB418" } +0x820EB530 = { name = "rex_sub_820EB530" } +0x820EB5D0 = { name = "rex_sub_820EB5D0" } +0x820EB668 = { name = "rex_sub_820EB668" } +0x820EB6F8 = { name = "rex_sub_820EB6F8" } +0x820EB788 = { name = "rex_sub_820EB788" } +0x820EB828 = { name = "rex_sub_820EB828" } +0x820EB8B0 = { name = "rex_sub_820EB8B0" } +0x820EB938 = { name = "rex_sub_820EB938" } +0x820EB9C0 = { name = "rex_sub_820EB9C0" } +0x820EBA48 = { name = "rex_sub_820EBA48" } +0x820EBAD0 = { name = "rex_sub_820EBAD0" } +0x820EBB58 = { name = "rex_sub_820EBB58" } +0x820EBBF8 = { name = "rex_sub_820EBBF8" } +0x820EBCA0 = { name = "rex_sub_820EBCA0" } +0x820EBCF8 = { name = "rex_sub_820EBCF8" } +0x820EBDC0 = { name = "rex_sub_820EBDC0" } +0x820EBEB0 = { name = "rex_sub_820EBEB0" } +0x820EBF50 = { name = "rex_sub_820EBF50" } +0x820EC038 = { name = "rex_sub_820EC038" } +0x820EC0D0 = { name = "rex_sub_820EC0D0" } +0x820EC158 = { name = "rex_sub_820EC158" } +0x820EC398 = { name = "rex_sub_820EC398" } +0x820EC400 = { name = "rex_sub_820EC400" } +0x820EC460 = { name = "rex_sub_820EC460" } +0x820EC508 = { name = "rex_sub_820EC508" } +0x820EC5B0 = { name = "rex_sub_820EC5B0" } +0x820EC7F0 = { name = "rex_sub_820EC7F0" } +0x820EC978 = { name = "rex_sub_820EC978" } +0x820EC9C8 = { name = "rex_sub_820EC9C8" } +0x820ECA00 = { name = "rex_sub_820ECA00" } +0x820ECA38 = { name = "rex_sub_820ECA38" } +0x820ECA70 = { name = "rex_sub_820ECA70" } +0x820ECAA8 = { name = "rex_sub_820ECAA8" } +0x820ECAE0 = { name = "rex_sub_820ECAE0" } +0x820ECB70 = { name = "rex_sub_820ECB70" } +0x820ECBC0 = { name = "rex_sub_820ECBC0" } +0x820ECC10 = { name = "rex_sub_820ECC10" } +0x820ECC60 = { name = "rex_sub_820ECC60" } +0x820ECD38 = { name = "rex_sub_820ECD38" } +0x820ECD88 = { name = "rex_sub_820ECD88" } +0x820ECE38 = { name = "rex_sub_820ECE38" } +0x820ED120 = { name = "rex_sub_820ED120" } +0x820ED1B8 = { name = "rex_sub_820ED1B8" } +0x820ED290 = { name = "rex_sub_820ED290" } +0x820ED380 = { name = "rex_sub_820ED380" } +0x820ED418 = { name = "rex_sub_820ED418" } +0x820ED528 = { name = "rex_sub_820ED528" } +0x820ED618 = { name = "rex_sub_820ED618" } +0x820ED6B0 = { name = "rex_sub_820ED6B0" } +0x820ED7C0 = { name = "rex_sub_820ED7C0" } +0x820ED8B0 = { name = "rex_sub_820ED8B0" } +0x820ED950 = { name = "rex_sub_820ED950" } +0x820ED9F0 = { name = "rex_sub_820ED9F0" } +0x820EDA58 = { name = "rex_sub_820EDA58" } +0x820EDAC0 = { name = "rex_sub_820EDAC0" } +0x820EDBE8 = { name = "rex_sub_820EDBE8" } +0x820EDCA0 = { name = "rex_sub_820EDCA0" } +0x820EDD38 = { name = "rex_sub_820EDD38" } +0x820EDD90 = { name = "rex_sub_820EDD90" } +0x820EDDF8 = { name = "rex_sub_820EDDF8" } +0x820EE218 = { name = "rex_sub_820EE218" } +0x820EE2B8 = { name = "rex_sub_820EE2B8" } +0x820EE360 = { name = "rex_sub_820EE360" } +0x820EE488 = { name = "rex_sub_820EE488" } +0x820EE568 = { name = "rex_sub_820EE568" } +0x820EE5E8 = { name = "rex_sub_820EE5E8" } +0x820EE690 = { name = "rex_sub_820EE690" } +0x820EE790 = { name = "rex_sub_820EE790" } +0x820EE890 = { name = "rex_sub_820EE890" } +0x820EE8F8 = { name = "rex_sub_820EE8F8" } +0x820EE9E8 = { name = "rex_sub_820EE9E8" } +0x820EEDA8 = { name = "rex_sub_820EEDA8" } +0x820EF1B0 = { name = "rex_sub_820EF1B0" } +0x820EF408 = { name = "rex_sub_820EF408" } +0x820EF4E0 = { name = "rex_sub_820EF4E0" } +0x820EF5C8 = { name = "rex_sub_820EF5C8" } +0x820EF710 = { name = "rex_sub_820EF710" } +0x820EF7F8 = { name = "rex_sub_820EF7F8" } +0x820EF938 = { name = "rex_sub_820EF938" } +0x820EFA48 = { name = "rex_sub_820EFA48" } +0x820EFDE0 = { name = "rex_sub_820EFDE0" } +0x820F0070 = { name = "rex_sub_820F0070" } +0x820F0180 = { name = "rex_sub_820F0180" } +0x820F0278 = { name = "rex_sub_820F0278" } +0x820F02F8 = { name = "rex_sub_820F02F8" } +0x820F0598 = { name = "rex_sub_820F0598" } +0x820F0660 = { name = "rex_sub_820F0660" } +0x820F06C8 = { name = "rex_sub_820F06C8" } +0x820F07D8 = { name = "rex_sub_820F07D8" } +0x820F0900 = { name = "rex_sub_820F0900" } +0x820F0AE8 = { name = "rex_sub_820F0AE8" } +0x820F0C30 = { name = "rex_sub_820F0C30" } +0x820F0D08 = { name = "rex_sub_820F0D08" } +0x820F0D80 = { name = "rex_sub_820F0D80" } +0x820F0DF8 = { name = "rex_sub_820F0DF8" } +0x820F0F10 = { name = "rex_sub_820F0F10" } +0x820F1358 = { name = "rex_sub_820F1358" } +0x820F1438 = { name = "rex_sub_820F1438" } +0x820F1540 = { name = "rex_sub_820F1540" } +0x820F15C0 = { name = "rex_sub_820F15C0" } +0x820F1668 = { name = "rex_sub_820F1668" } +0x820F1768 = { name = "rex_sub_820F1768" } +0x820F1BA8 = { name = "rex_sub_820F1BA8" } +0x820F1F10 = { name = "rex_sub_820F1F10" } +0x820F20B0 = { name = "rex_sub_820F20B0" } +0x820F2518 = { name = "rex_sub_820F2518" } +0x820F28A0 = { name = "rex_sub_820F28A0" } +0x820F2A40 = { name = "rex_sub_820F2A40" } +0x820F2B50 = { name = "rex_sub_820F2B50" } +0x820F2EC0 = { name = "rex_sub_820F2EC0" } +0x820F2FC8 = { name = "rex_sub_820F2FC8" } +0x820F3080 = { name = "rex_sub_820F3080" } +0x820F3120 = { name = "rex_sub_820F3120" } +0x820F3428 = { name = "rex_sub_820F3428" } +0x820F3648 = { name = "rex_sub_820F3648" } +0x820F3758 = { name = "rex_sub_820F3758" } +0x820F3A30 = { name = "rex_sub_820F3A30" } +0x820F3A90 = { name = "rex_sub_820F3A90" } +0x820F3E38 = { name = "rex_sub_820F3E38" } +0x820F3EE0 = { name = "rex_sub_820F3EE0" } +0x820F3F58 = { name = "rex_sub_820F3F58" } +0x820F3FD0 = { name = "rex_sub_820F3FD0" } +0x820F4070 = { name = "rex_sub_820F4070" } +0x820F4490 = { name = "rex_sub_820F4490" } +0x820F4508 = { name = "rex_sub_820F4508" } +0x820F4580 = { name = "rex_sub_820F4580" } +0x820F46A0 = { name = "rex_sub_820F46A0" } +0x820F47E0 = { name = "rex_sub_820F47E0" } +0x820F4B38 = { name = "rex_sub_820F4B38" } +0x820F4C00 = { name = "rex_sub_820F4C00" } +0x820F4CA8 = { name = "rex_sub_820F4CA8" } +0x820F4D10 = { name = "rex_sub_820F4D10" } +0x820F4DD8 = { name = "rex_sub_820F4DD8" } +0x820F4EA0 = { name = "rex_sub_820F4EA0" } +0x820F4F68 = { name = "rex_sub_820F4F68" } +0x820F5068 = { name = "rex_sub_820F5068" } +0x820F5170 = { name = "rex_sub_820F5170" } +0x820F51E0 = { name = "rex_sub_820F51E0" } +0x820F53C8 = { name = "rex_sub_820F53C8" } +0x820F55B8 = { name = "rex_sub_820F55B8" } +0x820F5820 = { name = "rex_sub_820F5820" } +0x820F58B8 = { name = "rex_sub_820F58B8" } +0x820F5930 = { name = "rex_sub_820F5930" } +0x820F59C8 = { name = "rex_sub_820F59C8" } +0x820F5A70 = { name = "rex_sub_820F5A70" } +0x820F5AE0 = { name = "rex_sub_820F5AE0" } +0x820F5B90 = { name = "rex_sub_820F5B90" } +0x820F5C40 = { name = "rex_sub_820F5C40" } +0x820F5D28 = { name = "rex_sub_820F5D28" } +0x820F5DC8 = { name = "rex_sub_820F5DC8" } +0x820F5E70 = { name = "rex_sub_820F5E70" } +0x820F5F90 = { name = "rex_sub_820F5F90" } +0x820F5FA0 = { name = "rex_sub_820F5FA0" } +0x820F6030 = { name = "rex_sub_820F6030" } +0x820F60C0 = { name = "rex_sub_820F60C0" } +0x820F6138 = { name = "rex_sub_820F6138" } +0x820F61C0 = { name = "rex_sub_820F61C0" } +0x820F6240 = { name = "rex_sub_820F6240" } +0x820F62E0 = { name = "rex_sub_820F62E0" } +0x820F6390 = { name = "rex_sub_820F6390" } +0x820F6448 = { name = "rex_sub_820F6448" } +0x820F6508 = { name = "rex_sub_820F6508" } +0x820F65D0 = { name = "rex_sub_820F65D0" } +0x820F66A0 = { name = "rex_sub_820F66A0" } +0x820F6778 = { name = "rex_sub_820F6778" } +0x820F6830 = { name = "rex_sub_820F6830" } +0x820F68F8 = { name = "rex_sub_820F68F8" } +0x820F69C8 = { name = "rex_sub_820F69C8" } +0x820F6AA0 = { name = "rex_sub_820F6AA0" } +0x820F6B80 = { name = "rex_sub_820F6B80" } +0x820F6C68 = { name = "rex_sub_820F6C68" } +0x820F6D58 = { name = "rex_sub_820F6D58" } +0x820F6E00 = { name = "rex_sub_820F6E00" } +0x820F6EB8 = { name = "rex_sub_820F6EB8" } +0x820F6F78 = { name = "rex_sub_820F6F78" } +0x820F7040 = { name = "rex_sub_820F7040" } +0x820F7110 = { name = "rex_sub_820F7110" } +0x820F7240 = { name = "rex_sub_820F7240" } +0x820F7358 = { name = "rex_sub_820F7358" } +0x820F73C8 = { name = "rex_sub_820F73C8" } +0x820F7478 = { name = "rex_sub_820F7478" } +0x820F7548 = { name = "rex_sub_820F7548" } +0x820F75D0 = { name = "rex_sub_820F75D0" } +0x820F7638 = { name = "rex_sub_820F7638" } +0x820F7668 = { name = "rex_sub_820F7668" } +0x820F76A0 = { name = "rex_sub_820F76A0" } +0x820F7750 = { name = "rex_sub_820F7750" } +0x820F7808 = { name = "rex_sub_820F7808" } +0x820F78A8 = { name = "rex_sub_820F78A8" } +0x820F7A28 = { name = "rex_sub_820F7A28" } +0x820F7BB0 = { name = "rex_sub_820F7BB0" } +0x820F7C60 = { name = "rex_sub_820F7C60" } +0x820F7CC8 = { name = "rex_sub_820F7CC8" } +0x820F7DA0 = { name = "rex_sub_820F7DA0" } +0x820F7FB8 = { name = "rex_sub_820F7FB8" } +0x820F8008 = { name = "rex_sub_820F8008" } +0x820F8050 = { name = "rex_sub_820F8050" } +0x820F80F8 = { name = "rex_sub_820F80F8" } +0x820F8278 = { name = "rex_sub_820F8278" } +0x820F8360 = { name = "rex_sub_820F8360" } +0x820F8598 = { name = "rex_sub_820F8598" } +0x820F8988 = { name = "rex_sub_820F8988" } +0x820F8D08 = { name = "rex_sub_820F8D08" } +0x820F8D80 = { name = "rex_sub_820F8D80" } +0x820F8E18 = { name = "rex_sub_820F8E18" } +0x820F8F50 = { name = "rex_sub_820F8F50" } +0x820F9000 = { name = "rex_sub_820F9000" } +0x820F90B0 = { name = "rex_sub_820F90B0" } +0x820F90F8 = { name = "rex_sub_820F90F8" } +0x820F94B8 = { name = "rex_sub_820F94B8" } +0x820F9590 = { name = "rex_sub_820F9590" } +0x820F95E0 = { name = "rex_sub_820F95E0" } +0x820F9650 = { name = "rex_sub_820F9650" } +0x820F9728 = { name = "rex_sub_820F9728" } +0x820F9828 = { name = "rex_sub_820F9828" } +0x820F9868 = { name = "rex_sub_820F9868" } +0x820F98C0 = { name = "rex_sub_820F98C0" } +0x820F9AB0 = { name = "rex_sub_820F9AB0" } +0x820F9B70 = { name = "rex_sub_820F9B70" } +0x820F9D20 = { name = "rex_sub_820F9D20" } +0x820F9D68 = { name = "rex_sub_820F9D68" } +0x820F9E18 = { name = "rex_sub_820F9E18" } +0x820F9F50 = { name = "rex_sub_820F9F50" } +0x820FA040 = { name = "rex_sub_820FA040" } +0x820FA1F8 = { name = "rex_sub_820FA1F8" } +0x820FA538 = { name = "rex_sub_820FA538" } +0x820FA588 = { name = "rex_sub_820FA588" } +0x820FA690 = { name = "rex_sub_820FA690" } +0x820FA748 = { name = "rex_sub_820FA748" } +0x820FA960 = { name = "rex_sub_820FA960" } +0x820FBBC8 = { name = "rex_sub_820FBBC8" } +0x820FCF78 = { name = "rex_sub_820FCF78" } +0x820FCFB0 = { name = "rex_sub_820FCFB0" } +0x820FD170 = { name = "rex_sub_820FD170" } +0x820FD260 = { name = "rex_sub_820FD260" } +0x820FD3B8 = { name = "rex_sub_820FD3B8" } +0x820FD500 = { name = "rex_sub_820FD500" } +0x820FD708 = { name = "rex_sub_820FD708" } +0x820FDCD0 = { name = "rex_sub_820FDCD0" } +0x820FEFA0 = { name = "rex_sub_820FEFA0" } +0x820FF340 = { name = "rex_sub_820FF340" } +0x820FF4B8 = { name = "rex_sub_820FF4B8" } +0x820FF948 = { name = "rex_sub_820FF948" } +0x820FFAD0 = { name = "rex_sub_820FFAD0" } +0x820FFCE8 = { name = "rex_sub_820FFCE8" } +0x821003C8 = { name = "rex_sub_821003C8" } +0x82100488 = { name = "rex_sub_82100488" } +0x821005D8 = { name = "rex_sub_821005D8" } +0x821008F0 = { name = "rex_sub_821008F0" } +0x82100A08 = { name = "rex_sub_82100A08" } +0x82101388 = { name = "rex_sub_82101388" } +0x82101790 = { name = "rex_sub_82101790" } +0x82101870 = { name = "rex_sub_82101870" } +0x821019B8 = { name = "rex_sub_821019B8" } +0x82101AC8 = { name = "rex_sub_82101AC8" } +0x82101B90 = { name = "rex_sub_82101B90" } +0x82101E88 = { name = "rex_sub_82101E88" } +0x821020E8 = { name = "rex_sub_821020E8" } +0x82102508 = { name = "rex_sub_82102508" } +0x82102E10 = { name = "rex_sub_82102E10" } +0x82103348 = { name = "rex_sub_82103348" } +0x82103428 = { name = "rex_sub_82103428" } +0x821048D0 = { name = "rex_sub_821048D0" } +0x82105418 = { name = "rex_sub_82105418" } +0x821055A8 = { name = "rex_sub_821055A8" } +0x821056D8 = { name = "rex_sub_821056D8" } +0x82105A48 = { name = "rex_sub_82105A48" } +0x82105B48 = { name = "rex_sub_82105B48" } +0x821062F8 = { name = "rex_sub_821062F8" } +0x82106520 = { name = "rex_sub_82106520" } +0x82106580 = { name = "rex_sub_82106580" } +0x82106600 = { name = "rex_sub_82106600" } +0x82106870 = { name = "rex_sub_82106870" } +0x82106970 = { name = "rex_sub_82106970" } +0x82106AC8 = { name = "rex_sub_82106AC8" } +0x82106B90 = { name = "rex_sub_82106B90" } +0x82106DA8 = { name = "rex_sub_82106DA8" } +0x82106FB0 = { name = "rex_sub_82106FB0" } +0x821074D8 = { name = "rex_sub_821074D8" } +0x821075E0 = { name = "rex_sub_821075E0" } +0x82107680 = { name = "rex_sub_82107680" } +0x82107758 = { name = "rex_sub_82107758" } +0x821077A8 = { name = "rex_sub_821077A8" } +0x82107830 = { name = "rex_sub_82107830" } +0x82107BC0 = { name = "rex_sub_82107BC0" } +0x82108188 = { name = "rex_sub_82108188" } +0x82108228 = { name = "rex_sub_82108228" } +0x821082B0 = { name = "rex_sub_821082B0" } +0x821083E0 = { name = "rex_sub_821083E0" } +0x82108690 = { name = "rex_sub_82108690" } +0x82108848 = { name = "rex_sub_82108848" } +0x82108C90 = { name = "rex_sub_82108C90" } +0x82108D88 = { name = "rex_sub_82108D88" } +0x821090C0 = { name = "rex_sub_821090C0" } +0x82109188 = { name = "rex_sub_82109188" } +0x821091D8 = { name = "rex_sub_821091D8" } +0x821092C0 = { name = "rex_sub_821092C0" } +0x821093F0 = { name = "rex_sub_821093F0" } +0x821096F0 = { name = "rex_sub_821096F0" } +0x821099C0 = { name = "rex_sub_821099C0" } +0x82109CA8 = { name = "rex_sub_82109CA8" } +0x8210A168 = { name = "rex_sub_8210A168" } +0x8210A590 = { name = "rex_sub_8210A590" } +0x8210AA28 = { name = "rex_sub_8210AA28" } +0x8210AA80 = { name = "rex_sub_8210AA80" } +0x8210AB70 = { name = "rex_sub_8210AB70" } +0x8210AB90 = { name = "rex_sub_8210AB90" } +0x8210AC28 = { name = "rex_sub_8210AC28" } +0x8210B528 = { name = "rex_sub_8210B528" } +0x8210BF98 = { name = "rex_sub_8210BF98" } +0x821185A0 = { name = "rex_sub_821185A0" } +0x821185E8 = { name = "rex_sub_821185E8" } +0x82118838 = { name = "rex_sub_82118838" } +0x821189F0 = { name = "rex_sub_821189F0" } +0x82118AD0 = { name = "rex_sub_82118AD0" } +0x82118B98 = { name = "rex_sub_82118B98" } +0x82118C70 = { name = "rex_sub_82118C70" } +0x82118DE0 = { name = "rex_sub_82118DE0" } +0x82118EB0 = { name = "rex_sub_82118EB0" } +0x82119038 = { name = "rex_sub_82119038" } +0x821191D0 = { name = "rex_sub_821191D0" } +0x821192E0 = { name = "rex_sub_821192E0" } +0x821193F8 = { name = "rex_sub_821193F8" } +0x821195C0 = { name = "rex_sub_821195C0" } +0x821196E0 = { name = "rex_sub_821196E0" } +0x821197A0 = { name = "rex_sub_821197A0" } +0x821198A8 = { name = "rex_sub_821198A8" } +0x821199C8 = { name = "rex_sub_821199C8" } +0x82119A78 = { name = "rex_sub_82119A78" } +0x82119B20 = { name = "rex_sub_82119B20" } +0x82119BE0 = { name = "rex_sub_82119BE0" } +0x82119C40 = { name = "rex_sub_82119C40" } +0x82119D78 = { name = "rex_sub_82119D78" } +0x82119F08 = { name = "rex_sub_82119F08" } +0x8211A0E8 = { name = "rex_sub_8211A0E8" } +0x8211A268 = { name = "rex_sub_8211A268" } +0x8211A460 = { name = "rex_sub_8211A460" } +0x8211A730 = { name = "rex_sub_8211A730" } +0x8211AAC0 = { name = "rex_sub_8211AAC0" } +0x8211AB90 = { name = "rex_sub_8211AB90" } +0x8211AE80 = { name = "rex_sub_8211AE80" } +0x8211B1C8 = { name = "rex_sub_8211B1C8" } +0x8211B288 = { name = "rex_sub_8211B288" } +0x8211B468 = { name = "rex_sub_8211B468" } +0x8211B598 = { name = "rex_sub_8211B598" } +0x8211B710 = { name = "rex_sub_8211B710" } +0x8211B7E8 = { name = "rex_sub_8211B7E8" } +0x8211B8C0 = { name = "rex_sub_8211B8C0" } +0x8211B9B8 = { name = "rex_sub_8211B9B8" } +0x8211BAB8 = { name = "rex_sub_8211BAB8" } +0x8211BB20 = { name = "rex_sub_8211BB20" } +0x8211BC28 = { name = "rex_sub_8211BC28" } +0x8211BC70 = { name = "rex_sub_8211BC70" } +0x8211BC78 = { name = "rex_sub_8211BC78" } +0x8211BCF0 = { name = "rex_sub_8211BCF0" } +0x8211BD70 = { name = "rex_sub_8211BD70" } +0x8211BD90 = { name = "rex_sub_8211BD90" } +0x8211BDE0 = { name = "rex_sub_8211BDE0" } +0x8211BE50 = { name = "rex_sub_8211BE50" } +0x8211BE60 = { name = "rex_sub_8211BE60" } +0x8211BED8 = { name = "rex_sub_8211BED8" } +0x8211BEE8 = { name = "rex_sub_8211BEE8" } +0x8211BEF8 = { name = "rex_sub_8211BEF8" } +0x8211BF08 = { name = "rex_sub_8211BF08" } +0x8211BF28 = { name = "rex_sub_8211BF28" } +0x8211C650 = { name = "rex_sub_8211C650" } +0x8211C698 = { name = "rex_sub_8211C698" } +0x8211C740 = { name = "rex_sub_8211C740" } +0x8211C7B8 = { name = "rex_sub_8211C7B8" } +0x8211C838 = { name = "rex_sub_8211C838" } +0x8211C8B0 = { name = "rex_sub_8211C8B0" } +0x8211C938 = { name = "rex_sub_8211C938" } +0x8211CA00 = { name = "rex_sub_8211CA00" } +0x8211CB18 = { name = "rex_sub_8211CB18" } +0x8211CC30 = { name = "rex_sub_8211CC30" } +0x8211CC90 = { name = "rex_sub_8211CC90" } +0x8211CD40 = { name = "rex_sub_8211CD40" } +0x8211CD50 = { name = "rex_sub_8211CD50" } +0x8211CD98 = { name = "rex_sub_8211CD98" } +0x8211D090 = { name = "rex_sub_8211D090" } +0x8211D1C8 = { name = "rex_sub_8211D1C8" } +0x8211D850 = { name = "rex_sub_8211D850" } +0x8211D9C8 = { name = "rex_sub_8211D9C8" } +0x8211DAD0 = { name = "rex_sub_8211DAD0" } +0x8211DF08 = { name = "rex_sub_8211DF08" } +0x8211DF70 = { name = "rex_sub_8211DF70" } +0x8211DFD8 = { name = "rex_sub_8211DFD8" } +0x8211E040 = { name = "rex_sub_8211E040" } +0x8211E0A0 = { name = "rex_sub_8211E0A0" } +0x8211E190 = { name = "rex_sub_8211E190" } +0x8211E2C8 = { name = "rex_sub_8211E2C8" } +0x8211E3E8 = { name = "rex_sub_8211E3E8" } +0x8211E510 = { name = "rex_sub_8211E510" } +0x8211E5C0 = { name = "rex_sub_8211E5C0" } +0x8211E788 = { name = "rex_sub_8211E788" } +0x8211E7F8 = { name = "rex_sub_8211E7F8" } +0x8211E840 = { name = "rex_sub_8211E840" } +0x8211E968 = { name = "rex_sub_8211E968" } +0x8211E9B8 = { name = "rex_sub_8211E9B8" } +0x8211EA28 = { name = "rex_sub_8211EA28" } +0x8211EC38 = { name = "rex_sub_8211EC38" } +0x8211ED78 = { name = "rex_sub_8211ED78" } +0x8211F3B0 = { name = "rex_sub_8211F3B0" } +0x8211F6C8 = { name = "rex_sub_8211F6C8" } +0x8211F7B8 = { name = "rex_sub_8211F7B8" } +0x8211F930 = { name = "rex_sub_8211F930" } +0x8211F9A0 = { name = "rex_sub_8211F9A0" } +0x82120000 = { name = "rex_sub_82120000" } +0x821200F0 = { name = "rex_sub_821200F0" } +0x82120248 = { name = "rex_sub_82120248" } +0x821202E0 = { name = "rex_sub_821202E0" } +0x821203D0 = { name = "rex_sub_821203D0" } +0x82120760 = { name = "rex_sub_82120760" } +0x821207C8 = { name = "rex_sub_821207C8" } +0x821209F0 = { name = "rex_sub_821209F0" } +0x82120A58 = { name = "rex_sub_82120A58" } +0x82120AC0 = { name = "rex_sub_82120AC0" } +0x82120B70 = { name = "rex_sub_82120B70" } +0x82120CA0 = { name = "rex_sub_82120CA0" } +0x82120D48 = { name = "rex_sub_82120D48" } +0x82120DF0 = { name = "rex_sub_82120DF0" } +0x82120F30 = { name = "rex_sub_82120F30" } +0x82120FD8 = { name = "rex_sub_82120FD8" } +0x821212C0 = { name = "rex_sub_821212C0" } +0x82121308 = { name = "rex_sub_82121308" } +0x821218D8 = { name = "rex_sub_821218D8" } +0x821219B0 = { name = "rex_sub_821219B0" } +0x821219C0 = { name = "rex_sub_821219C0" } +0x821219D0 = { name = "rex_sub_821219D0" } +0x82121AE0 = { name = "rex_sub_82121AE0" } +0x82121CD0 = { name = "rex_sub_82121CD0" } +0x821220B8 = { name = "rex_sub_821220B8" } +0x82122188 = { name = "rex_sub_82122188" } +0x82122250 = { name = "rex_sub_82122250" } +0x82122398 = { name = "rex_sub_82122398" } +0x821224F8 = { name = "rex_sub_821224F8" } +0x821226D8 = { name = "rex_sub_821226D8" } +0x82122728 = { name = "rex_sub_82122728" } +0x821227D0 = { name = "rex_sub_821227D0" } +0x82122880 = { name = "rex_sub_82122880" } +0x82122918 = { name = "rex_sub_82122918" } +0x82122980 = { name = "rex_sub_82122980" } +0x82122A10 = { name = "rex_sub_82122A10" } +0x82122A38 = { name = "rex_sub_82122A38" } +0x82122A98 = { name = "rex_sub_82122A98" } +0x82122CE8 = { name = "rex_sub_82122CE8" } +0x82122EE0 = { name = "rex_sub_82122EE0" } +0x82122F98 = { name = "rex_sub_82122F98" } +0x82122FD0 = { name = "rex_sub_82122FD0" } +0x82123020 = { name = "rex_sub_82123020" } +0x82123238 = { name = "rex_sub_82123238" } +0x821232D0 = { name = "rex_sub_821232D0" } +0x82123380 = { name = "rex_sub_82123380" } +0x82123458 = { name = "rex_sub_82123458" } +0x82123500 = { name = "rex_sub_82123500" } +0x821235C8 = { name = "rex_sub_821235C8" } +0x82123A68 = { name = "rex_sub_82123A68" } +0x82123BE8 = { name = "rex_sub_82123BE8" } +0x82123D40 = { name = "rex_sub_82123D40" } +0x82123EB8 = { name = "rex_sub_82123EB8" } +0x82123ED0 = { name = "rex_sub_82123ED0" } +0x82123F20 = { name = "rex_sub_82123F20" } +0x82123F98 = { name = "rex_sub_82123F98" } +0x82124068 = { name = "rex_sub_82124068" } +0x821241D0 = { name = "rex_sub_821241D0" } +0x82124210 = { name = "rex_sub_82124210" } +0x82124310 = { name = "rex_sub_82124310" } +0x821243B0 = { name = "rex_sub_821243B0" } +0x821244E8 = { name = "rex_sub_821244E8" } +0x82124640 = { name = "rex_sub_82124640" } +0x821246B0 = { name = "rex_sub_821246B0" } +0x82124760 = { name = "rex_sub_82124760" } +0x82124798 = { name = "rex_sub_82124798" } +0x82124818 = { name = "rex_sub_82124818" } +0x82124968 = { name = "rex_sub_82124968" } +0x82124B58 = { name = "rex_sub_82124B58" } +0x82124CF8 = { name = "rex_sub_82124CF8" } +0x82124E00 = { name = "rex_sub_82124E00" } +0x82124F48 = { name = "rex_sub_82124F48" } +0x82125148 = { name = "rex_sub_82125148" } +0x821251E0 = { name = "rex_sub_821251E0" } +0x82125268 = { name = "rex_sub_82125268" } +0x82125590 = { name = "rex_sub_82125590" } +0x82125700 = { name = "rex_sub_82125700" } +0x82125778 = { name = "rex_sub_82125778" } +0x82125868 = { name = "rex_sub_82125868" } +0x821258B0 = { name = "rex_sub_821258B0" } +0x82125940 = { name = "rex_sub_82125940" } +0x821259B0 = { name = "rex_sub_821259B0" } +0x821259F8 = { name = "rex_sub_821259F8" } +0x82125A50 = { name = "rex_sub_82125A50" } +0x82125A80 = { name = "rex_sub_82125A80" } +0x82125C40 = { name = "rex_sub_82125C40" } +0x82125F80 = { name = "rex_sub_82125F80" } +0x82126078 = { name = "rex_sub_82126078" } +0x82126188 = { name = "rex_sub_82126188" } +0x82126190 = { name = "rex_sub_82126190" } +0x821261F8 = { name = "rex_sub_821261F8" } +0x82126288 = { name = "rex_sub_82126288" } +0x821262F0 = { name = "rex_sub_821262F0" } +0x821264D8 = { name = "rex_sub_821264D8" } +0x82126570 = { name = "rex_sub_82126570" } +0x821266B8 = { name = "rex_sub_821266B8" } +0x821266E8 = { name = "rex_sub_821266E8" } +0x82126890 = { name = "rex_sub_82126890" } +0x821268C0 = { name = "rex_sub_821268C0" } +0x821269B8 = { name = "rex_sub_821269B8" } +0x821269E8 = { name = "rex_sub_821269E8" } +0x82126AE8 = { name = "rex_sub_82126AE8" } +0x82126B18 = { name = "rex_sub_82126B18" } +0x82126C70 = { name = "rex_sub_82126C70" } +0x82126CC8 = { name = "rex_sub_82126CC8" } +0x82126FC0 = { name = "rex_sub_82126FC0" } +0x82127018 = { name = "rex_sub_82127018" } +0x82127160 = { name = "rex_sub_82127160" } +0x82127190 = { name = "rex_sub_82127190" } +0x82127298 = { name = "rex_sub_82127298" } +0x821272E0 = { name = "rex_sub_821272E0" } +0x821273E0 = { name = "rex_sub_821273E0" } +0x821274E8 = { name = "rex_sub_821274E8" } +0x82127560 = { name = "rex_sub_82127560" } +0x821275E8 = { name = "rex_sub_821275E8" } +0x82127670 = { name = "rex_sub_82127670" } +0x821276F8 = { name = "rex_sub_821276F8" } +0x82127740 = { name = "rex_sub_82127740" } +0x82127A28 = { name = "rex_sub_82127A28" } +0x8212A950 = { name = "rex_sub_8212A950" } +0x8212BFC0 = { name = "rex_sub_8212BFC0" } +0x8212C030 = { name = "rex_sub_8212C030" } +0x8212C0A8 = { name = "rex_sub_8212C0A8" } +0x8212C260 = { name = "rex_sub_8212C260" } +0x8212C300 = { name = "rex_sub_8212C300" } +0x8212C400 = { name = "rex_sub_8212C400" } +0x8212C478 = { name = "rex_sub_8212C478" } +0x8212C530 = { name = "rex_sub_8212C530" } +0x8212C628 = { name = "rex_sub_8212C628" } +0x8212C708 = { name = "rex_sub_8212C708" } +0x8212C750 = { name = "rex_sub_8212C750" } +0x8212C798 = { name = "rex_sub_8212C798" } +0x8212C830 = { name = "rex_sub_8212C830" } +0x8212C910 = { name = "rex_sub_8212C910" } +0x8212C9D8 = { name = "rex_sub_8212C9D8" } +0x8212CBB8 = { name = "rex_sub_8212CBB8" } +0x8212CE10 = { name = "rex_sub_8212CE10" } +0x8212CE80 = { name = "rex_sub_8212CE80" } +0x8212CFC0 = { name = "rex_sub_8212CFC0" } +0x8212D0F8 = { name = "rex_sub_8212D0F8" } +0x8212D1A0 = { name = "rex_sub_8212D1A0" } +0x8212D240 = { name = "rex_sub_8212D240" } +0x8212D340 = { name = "rex_sub_8212D340" } +0x8212D520 = { name = "rex_sub_8212D520" } +0x8212D658 = { name = "rex_sub_8212D658" } +0x8212D7D8 = { name = "rex_sub_8212D7D8" } +0x8212D920 = { name = "rex_sub_8212D920" } +0x8212D998 = { name = "rex_sub_8212D998" } +0x8212D9F8 = { name = "rex_sub_8212D9F8" } +0x8212DA58 = { name = "rex_sub_8212DA58" } +0x8212DAD0 = { name = "rex_sub_8212DAD0" } +0x8212DDE0 = { name = "rex_sub_8212DDE0" } +0x8212DEF0 = { name = "rex_sub_8212DEF0" } +0x8212E1C0 = { name = "rex_sub_8212E1C0" } +0x8212E600 = { name = "rex_sub_8212E600" } +0x8212E8C8 = { name = "rex_sub_8212E8C8" } +0x8212E9E8 = { name = "rex_sub_8212E9E8" } +0x8212EB38 = { name = "rex_sub_8212EB38" } +0x8212EC88 = { name = "rex_sub_8212EC88" } +0x8212F260 = { name = "rex_sub_8212F260" } +0x8212F2C0 = { name = "rex_sub_8212F2C0" } +0x8212F4F8 = { name = "rex_sub_8212F4F8" } +0x8212F560 = { name = "rex_sub_8212F560" } +0x8212FC80 = { name = "rex_sub_8212FC80" } +0x8212FD28 = { name = "rex_sub_8212FD28" } +0x82130218 = { name = "rex_sub_82130218" } +0x82130338 = { name = "rex_sub_82130338" } +0x821308E8 = { name = "rex_sub_821308E8" } +0x821309B8 = { name = "rex_sub_821309B8" } +0x82131610 = { name = "rex_sub_82131610" } +0x82132660 = { name = "rex_sub_82132660" } +0x82132798 = { name = "rex_sub_82132798" } +0x82132870 = { name = "rex_sub_82132870" } +0x821328C0 = { name = "rex_sub_821328C0" } +0x821328F0 = { name = "rex_sub_821328F0" } +0x821329C0 = { name = "rex_sub_821329C0" } +0x82132A78 = { name = "rex_sub_82132A78" } +0x82132D18 = { name = "rex_sub_82132D18" } +0x82132D60 = { name = "rex_sub_82132D60" } +0x82133170 = { name = "rex_sub_82133170" } +0x82133268 = { name = "rex_sub_82133268" } +0x82133358 = { name = "rex_sub_82133358" } +0x82133448 = { name = "rex_sub_82133448" } +0x821334B8 = { name = "rex_sub_821334B8" } +0x82133500 = { name = "rex_sub_82133500" } +0x82133938 = { name = "rex_sub_82133938" } +0x82133BB0 = { name = "rex_sub_82133BB0" } +0x82133CD0 = { name = "rex_sub_82133CD0" } +0x82133D38 = { name = "rex_sub_82133D38" } +0x82133F00 = { name = "rex_sub_82133F00" } +0x82134108 = { name = "rex_sub_82134108" } +0x82134238 = { name = "rex_sub_82134238" } +0x82134420 = { name = "rex_sub_82134420" } +0x821347F0 = { name = "rex_sub_821347F0" } +0x82134EB8 = { name = "rex_sub_82134EB8" } +0x82135230 = { name = "rex_sub_82135230" } +0x821353E8 = { name = "rex_sub_821353E8" } +0x82135540 = { name = "rex_sub_82135540" } +0x821357A0 = { name = "rex_sub_821357A0" } +0x821358E8 = { name = "rex_sub_821358E8" } +0x82135C20 = { name = "rex_sub_82135C20" } +0x82135CC8 = { name = "rex_sub_82135CC8" } +0x82135DF0 = { name = "rex_sub_82135DF0" } +0x821360A0 = { name = "rex_sub_821360A0" } +0x82136108 = { name = "rex_sub_82136108" } +0x82136598 = { name = "rex_sub_82136598" } +0x82136860 = { name = "rex_sub_82136860" } +0x82136938 = { name = "rex_sub_82136938" } +0x82136DB8 = { name = "rex_sub_82136DB8" } +0x82136E00 = { name = "rex_sub_82136E00" } +0x821370D8 = { name = "rex_sub_821370D8" } +0x821371C0 = { name = "rex_sub_821371C0" } +0x82137508 = { name = "rex_sub_82137508" } +0x82137590 = { name = "rex_sub_82137590" } +0x821375D8 = { name = "rex_sub_821375D8" } +0x82137760 = { name = "rex_sub_82137760" } +0x821378F8 = { name = "rex_sub_821378F8" } +0x821379D8 = { name = "rex_sub_821379D8" } +0x82137A98 = { name = "rex_sub_82137A98" } +0x82137CD0 = { name = "rex_sub_82137CD0" } +0x82137D70 = { name = "rex_sub_82137D70" } +0x82137E48 = { name = "rex_sub_82137E48" } +0x82137F88 = { name = "rex_sub_82137F88" } +0x82138048 = { name = "rex_sub_82138048" } +0x82138260 = { name = "rex_sub_82138260" } +0x821383D0 = { name = "rex_sub_821383D0" } +0x82138758 = { name = "rex_sub_82138758" } +0x82138760 = { name = "rex_sub_82138760" } +0x82138898 = { name = "rex_sub_82138898" } +0x821389C8 = { name = "rex_sub_821389C8" } +0x82138AD8 = { name = "rex_sub_82138AD8" } +0x82138C38 = { name = "rex_sub_82138C38" } +0x82138F00 = { name = "rex_sub_82138F00" } +0x82139450 = { name = "rex_sub_82139450" } +0x82139690 = { name = "rex_sub_82139690" } +0x82139710 = { name = "rex_sub_82139710" } +0x82139770 = { name = "rex_sub_82139770" } +0x82139820 = { name = "rex_sub_82139820" } +0x8213A180 = { name = "rex_sub_8213A180" } +0x8213A1E8 = { name = "rex_sub_8213A1E8" } +0x8213A278 = { name = "rex_sub_8213A278" } +0x8213A390 = { name = "rex_sub_8213A390" } +0x8213A590 = { name = "rex_sub_8213A590" } +0x8213A800 = { name = "rex_sub_8213A800" } +0x8213A8B0 = { name = "rex_sub_8213A8B0" } +0x8213A9E8 = { name = "rex_sub_8213A9E8" } +0x8213AA18 = { name = "rex_sub_8213AA18" } +0x8213AA48 = { name = "rex_sub_8213AA48" } +0x8213AC20 = { name = "rex_sub_8213AC20" } +0x8213AC70 = { name = "rex_sub_8213AC70" } +0x8213AD00 = { name = "rex_sub_8213AD00" } +0x8213B6D0 = { name = "rex_sub_8213B6D0" } +0x8213B740 = { name = "rex_sub_8213B740" } +0x8213C010 = { name = "rex_sub_8213C010" } +0x8213C538 = { name = "rex_sub_8213C538" } +0x8213C7E0 = { name = "rex_sub_8213C7E0" } +0x8213CFE8 = { name = "rex_sub_8213CFE8" } +0x8213D110 = { name = "rex_sub_8213D110" } +0x8213D328 = { name = "rex_sub_8213D328" } +0x8213D730 = { name = "rex_sub_8213D730" } +0x8213D7E8 = { name = "rex_sub_8213D7E8" } +0x8213D8D8 = { name = "rex_sub_8213D8D8" } +0x8213D9B0 = { name = "rex_sub_8213D9B0" } +0x8213DA68 = { name = "rex_sub_8213DA68" } +0x8213DB68 = { name = "rex_sub_8213DB68" } +0x8213DBE0 = { name = "rex_sub_8213DBE0" } +0x8213E1D0 = { name = "rex_sub_8213E1D0" } +0x8213E488 = { name = "rex_sub_8213E488" } +0x8213E650 = { name = "rex_sub_8213E650" } +0x8213E6A0 = { name = "rex_sub_8213E6A0" } +0x8213E730 = { name = "rex_sub_8213E730" } +0x8213EF48 = { name = "rex_sub_8213EF48" } +0x8213F198 = { name = "rex_sub_8213F198" } +0x8213F310 = { name = "rex_sub_8213F310" } +0x8213F558 = { name = "rex_sub_8213F558" } +0x8213FA18 = { name = "rex_sub_8213FA18" } +0x8213FD38 = { name = "rex_sub_8213FD38" } +0x8213FD88 = { name = "rex_sub_8213FD88" } +0x8213FF88 = { name = "rex_sub_8213FF88" } +0x82140388 = { name = "rex_sub_82140388" } +0x82140598 = { name = "rex_sub_82140598" } +0x82140A90 = { name = "rex_sub_82140A90" } +0x82140AF8 = { name = "rex_sub_82140AF8" } +0x82140D50 = { name = "rex_sub_82140D50" } +0x821413D0 = { name = "rex_sub_821413D0" } +0x82141D98 = { name = "rex_sub_82141D98" } +0x821421C0 = { name = "rex_sub_821421C0" } +0x821422F8 = { name = "rex_sub_821422F8" } +0x82142388 = { name = "rex_sub_82142388" } +0x821424A0 = { name = "rex_sub_821424A0" } +0x821425C0 = { name = "rex_sub_821425C0" } +0x82142620 = { name = "rex_sub_82142620" } +0x821427F0 = { name = "rex_sub_821427F0" } +0x821429C0 = { name = "rex_sub_821429C0" } +0x82142CE0 = { name = "rex_sub_82142CE0" } +0x82143D08 = { name = "rex_sub_82143D08" } +0x82143F90 = { name = "rex_sub_82143F90" } +0x82144148 = { name = "rex_sub_82144148" } +0x82144210 = { name = "rex_sub_82144210" } +0x82144258 = { name = "rex_sub_82144258" } +0x821443E8 = { name = "rex_sub_821443E8" } +0x821444B8 = { name = "rex_sub_821444B8" } +0x821447B0 = { name = "rex_sub_821447B0" } +0x82144818 = { name = "rex_sub_82144818" } +0x82144980 = { name = "rex_sub_82144980" } +0x82144A50 = { name = "rex_sub_82144A50" } +0x82144B28 = { name = "rex_sub_82144B28" } +0x82144BA8 = { name = "rex_sub_82144BA8" } +0x82144EF0 = { name = "rex_sub_82144EF0" } +0x82144F88 = { name = "rex_sub_82144F88" } +0x82145518 = { name = "rex_sub_82145518" } +0x82145568 = { name = "rex_sub_82145568" } +0x821457A0 = { name = "rex_sub_821457A0" } +0x821459E8 = { name = "rex_sub_821459E8" } +0x82145AE8 = { name = "rex_sub_82145AE8" } +0x82145D28 = { name = "rex_sub_82145D28" } +0x82145FF0 = { name = "rex_sub_82145FF0" } +0x82146160 = { name = "rex_sub_82146160" } +0x82146C18 = { name = "rex_sub_82146C18" } +0x82146CA0 = { name = "rex_sub_82146CA0" } +0x82146D58 = { name = "rex_sub_82146D58" } +0x82147010 = { name = "rex_sub_82147010" } +0x82147FB0 = { name = "rex_sub_82147FB0" } +0x82148258 = { name = "rex_sub_82148258" } +0x82148410 = { name = "rex_sub_82148410" } +0x82148830 = { name = "rex_sub_82148830" } +0x821489B0 = { name = "rex_sub_821489B0" } +0x82148AC0 = { name = "rex_sub_82148AC0" } +0x82148BC8 = { name = "rex_sub_82148BC8" } +0x821491F8 = { name = "rex_sub_821491F8" } +0x821498B8 = { name = "rex_sub_821498B8" } +0x82149F68 = { name = "rex_sub_82149F68" } +0x8214A448 = { name = "rex_sub_8214A448" } +0x8214A798 = { name = "rex_sub_8214A798" } +0x8214AA30 = { name = "rex_sub_8214AA30" } +0x8214AD10 = { name = "rex_sub_8214AD10" } +0x8214AD68 = { name = "rex_sub_8214AD68" } +0x8214AE70 = { name = "rex_sub_8214AE70" } +0x8214B038 = { name = "rex_sub_8214B038" } +0x8214B258 = { name = "rex_sub_8214B258" } +0x8214B590 = { name = "rex_sub_8214B590" } +0x8214B918 = { name = "rex_sub_8214B918" } +0x8214BFD8 = { name = "rex_sub_8214BFD8" } +0x8214C300 = { name = "rex_sub_8214C300" } +0x8214C4B8 = { name = "rex_sub_8214C4B8" } +0x8214C6A0 = { name = "rex_sub_8214C6A0" } +0x8214D100 = { name = "rex_sub_8214D100" } +0x8214D5F0 = { name = "rex_sub_8214D5F0" } +0x8214D748 = { name = "rex_sub_8214D748" } +0x8214D810 = { name = "rex_sub_8214D810" } +0x8214DE20 = { name = "rex_sub_8214DE20" } +0x8214E738 = { name = "rex_sub_8214E738" } +0x8214E9F0 = { name = "rex_sub_8214E9F0" } +0x8214EA90 = { name = "rex_sub_8214EA90" } +0x8214EB68 = { name = "rex_sub_8214EB68" } +0x8214EBE8 = { name = "rex_sub_8214EBE8" } +0x8214EE80 = { name = "rex_sub_8214EE80" } +0x8214F0F8 = { name = "rex_sub_8214F0F8" } +0x8214F158 = { name = "rex_sub_8214F158" } +0x8214F1D8 = { name = "rex_sub_8214F1D8" } +0x8214FA48 = { name = "rex_sub_8214FA48" } +0x8214FBC8 = { name = "rex_sub_8214FBC8" } +0x8214FCD0 = { name = "rex_sub_8214FCD0" } +0x8214FDF0 = { name = "rex_sub_8214FDF0" } +0x82150030 = { name = "rex_sub_82150030" } +0x82150398 = { name = "rex_sub_82150398" } +0x821506E0 = { name = "rex_sub_821506E0" } +0x82150728 = { name = "rex_sub_82150728" } +0x82150CA8 = { name = "rex_sub_82150CA8" } +0x82150D00 = { name = "rex_sub_82150D00" } +0x82150DF8 = { name = "rex_sub_82150DF8" } +0x82150E40 = { name = "rex_sub_82150E40" } +0x82150F88 = { name = "rex_sub_82150F88" } +0x82151040 = { name = "rex_sub_82151040" } +0x82151200 = { name = "rex_sub_82151200" } +0x821512C8 = { name = "rex_sub_821512C8" } +0x821516D8 = { name = "rex_sub_821516D8" } +0x821517D8 = { name = "rex_sub_821517D8" } +0x82151BB0 = { name = "rex_sub_82151BB0" } +0x82152100 = { name = "rex_sub_82152100" } +0x82152150 = { name = "rex_sub_82152150" } +0x821521C8 = { name = "rex_sub_821521C8" } +0x82152248 = { name = "rex_sub_82152248" } +0x821522D0 = { name = "rex_sub_821522D0" } +0x82152478 = { name = "rex_sub_82152478" } +0x82152610 = { name = "rex_sub_82152610" } +0x82152B68 = { name = "rex_sub_82152B68" } +0x82152E00 = { name = "rex_sub_82152E00" } +0x82153468 = { name = "rex_sub_82153468" } +0x821534F8 = { name = "rex_sub_821534F8" } +0x82153760 = { name = "rex_sub_82153760" } +0x821537D8 = { name = "rex_sub_821537D8" } +0x82153980 = { name = "rex_sub_82153980" } +0x821539E8 = { name = "rex_sub_821539E8" } +0x82153A68 = { name = "rex_sub_82153A68" } +0x82153AF0 = { name = "rex_sub_82153AF0" } +0x82153B58 = { name = "rex_sub_82153B58" } +0x82153CE8 = { name = "rex_sub_82153CE8" } +0x82153DB8 = { name = "rex_sub_82153DB8" } +0x82153E00 = { name = "rex_sub_82153E00" } +0x821542A0 = { name = "rex_sub_821542A0" } +0x821543F0 = { name = "rex_sub_821543F0" } +0x82154528 = { name = "rex_sub_82154528" } +0x82154570 = { name = "rex_sub_82154570" } +0x82154740 = { name = "rex_sub_82154740" } +0x82154958 = { name = "rex_sub_82154958" } +0x82154F60 = { name = "rex_sub_82154F60" } +0x82155A68 = { name = "rex_sub_82155A68" } +0x82155BF8 = { name = "rex_sub_82155BF8" } +0x82155DF0 = { name = "rex_sub_82155DF0" } +0x82155E68 = { name = "rex_sub_82155E68" } +0x82156048 = { name = "rex_sub_82156048" } +0x821560C0 = { name = "rex_sub_821560C0" } +0x82156308 = { name = "rex_sub_82156308" } +0x82156430 = { name = "rex_sub_82156430" } +0x82156518 = { name = "rex_sub_82156518" } +0x82156670 = { name = "rex_sub_82156670" } +0x821566F0 = { name = "rex_sub_821566F0" } +0x82156EF0 = { name = "rex_sub_82156EF0" } +0x82157368 = { name = "rex_sub_82157368" } +0x82157790 = { name = "rex_sub_82157790" } +0x821577D8 = { name = "rex_sub_821577D8" } +0x82157BF8 = { name = "rex_sub_82157BF8" } +0x82157CA8 = { name = "rex_sub_82157CA8" } +0x82157DA8 = { name = "rex_sub_82157DA8" } +0x82158278 = { name = "rex_sub_82158278" } +0x82158348 = { name = "rex_sub_82158348" } +0x821585B8 = { name = "rex_sub_821585B8" } +0x82158638 = { name = "rex_sub_82158638" } +0x82158A10 = { name = "rex_sub_82158A10" } +0x82158C20 = { name = "rex_sub_82158C20" } +0x82158C88 = { name = "rex_sub_82158C88" } +0x82158D00 = { name = "rex_sub_82158D00" } +0x82158D90 = { name = "rex_sub_82158D90" } +0x82159298 = { name = "rex_sub_82159298" } +0x821596B8 = { name = "rex_sub_821596B8" } +0x82159758 = { name = "rex_sub_82159758" } +0x821597D0 = { name = "rex_sub_821597D0" } +0x82159928 = { name = "rex_sub_82159928" } +0x82159980 = { name = "rex_sub_82159980" } +0x82159AF8 = { name = "rex_sub_82159AF8" } +0x82159B48 = { name = "rex_sub_82159B48" } +0x82159CA0 = { name = "rex_sub_82159CA0" } +0x82159DF8 = { name = "rex_sub_82159DF8" } +0x82159EF8 = { name = "rex_sub_82159EF8" } +0x82159FF0 = { name = "rex_sub_82159FF0" } +0x8215A238 = { name = "rex_sub_8215A238" } +0x8215A410 = { name = "rex_sub_8215A410" } +0x8215A468 = { name = "rex_sub_8215A468" } +0x8215A4F0 = { name = "rex_sub_8215A4F0" } +0x8215A668 = { name = "rex_sub_8215A668" } +0x8215A6B8 = { name = "rex_sub_8215A6B8" } +0x8215A700 = { name = "rex_sub_8215A700" } +0x8215A768 = { name = "rex_sub_8215A768" } +0x8215AAB0 = { name = "rex_sub_8215AAB0" } +0x8215ACD8 = { name = "rex_sub_8215ACD8" } +0x8215B068 = { name = "rex_sub_8215B068" } +0x8215B178 = { name = "rex_sub_8215B178" } +0x8215B1F8 = { name = "rex_sub_8215B1F8" } +0x8215B2D0 = { name = "rex_sub_8215B2D0" } +0x8215B408 = { name = "rex_sub_8215B408" } +0x8215B4C0 = { name = "rex_sub_8215B4C0" } +0x8215B590 = { name = "rex_sub_8215B590" } +0x8215BFC0 = { name = "rex_sub_8215BFC0" } +0x8215C040 = { name = "rex_sub_8215C040" } +0x8215C0C8 = { name = "rex_sub_8215C0C8" } +0x8215C438 = { name = "rex_sub_8215C438" } +0x8215C548 = { name = "rex_sub_8215C548" } +0x8215C638 = { name = "rex_sub_8215C638" } +0x8215C708 = { name = "rex_sub_8215C708" } +0x8215C818 = { name = "rex_sub_8215C818" } +0x8215C960 = { name = "rex_sub_8215C960" } +0x8215CA38 = { name = "rex_sub_8215CA38" } +0x8215CAC0 = { name = "rex_sub_8215CAC0" } +0x8215CB88 = { name = "rex_sub_8215CB88" } +0x8215CC08 = { name = "rex_sub_8215CC08" } +0x8215CCA8 = { name = "rex_sub_8215CCA8" } +0x8215CD60 = { name = "rex_sub_8215CD60" } +0x8215CDE0 = { name = "rex_sub_8215CDE0" } +0x8215CEA0 = { name = "rex_sub_8215CEA0" } +0x8215CF20 = { name = "rex_sub_8215CF20" } +0x8215CFE0 = { name = "rex_sub_8215CFE0" } +0x8215D038 = { name = "rex_sub_8215D038" } +0x8215D168 = { name = "rex_sub_8215D168" } +0x8215D2A0 = { name = "rex_sub_8215D2A0" } +0x8215D4B0 = { name = "rex_sub_8215D4B0" } +0x8215D7E0 = { name = "rex_sub_8215D7E0" } +0x8215D9D0 = { name = "rex_sub_8215D9D0" } +0x8215DBC0 = { name = "rex_sub_8215DBC0" } +0x8215DFE0 = { name = "rex_sub_8215DFE0" } +0x8215E068 = { name = "rex_sub_8215E068" } +0x8215E0D0 = { name = "rex_sub_8215E0D0" } +0x8215E3D0 = { name = "rex_sub_8215E3D0" } +0x8215E518 = { name = "rex_sub_8215E518" } +0x8215E5F0 = { name = "rex_sub_8215E5F0" } +0x8215E6B0 = { name = "rex_sub_8215E6B0" } +0x8215E778 = { name = "rex_sub_8215E778" } +0x8215E880 = { name = "rex_sub_8215E880" } +0x8215E8F8 = { name = "rex_sub_8215E8F8" } +0x8215E968 = { name = "rex_sub_8215E968" } +0x8215E9C8 = { name = "rex_sub_8215E9C8" } +0x8215EA70 = { name = "rex_sub_8215EA70" } +0x8215EB68 = { name = "rex_sub_8215EB68" } +0x8215EC48 = { name = "rex_sub_8215EC48" } +0x8215EC90 = { name = "rex_sub_8215EC90" } +0x8215F138 = { name = "rex_sub_8215F138" } +0x8215F278 = { name = "rex_sub_8215F278" } +0x8215F3A8 = { name = "rex_sub_8215F3A8" } +0x8215F458 = { name = "rex_sub_8215F458" } +0x8215F548 = { name = "rex_sub_8215F548" } +0x8215F5E8 = { name = "rex_sub_8215F5E8" } +0x8215F6E0 = { name = "rex_sub_8215F6E0" } +0x8215F760 = { name = "rex_sub_8215F760" } +0x8215F7E8 = { name = "rex_sub_8215F7E8" } +0x8215F890 = { name = "rex_sub_8215F890" } +0x8215FA90 = { name = "rex_sub_8215FA90" } +0x8215FB80 = { name = "rex_sub_8215FB80" } +0x8215FCB0 = { name = "rex_sub_8215FCB0" } +0x8215FE38 = { name = "rex_sub_8215FE38" } +0x8215FFB8 = { name = "rex_sub_8215FFB8" } +0x821601A8 = { name = "rex_sub_821601A8" } +0x821602F8 = { name = "rex_sub_821602F8" } +0x82160558 = { name = "rex_sub_82160558" } +0x82160680 = { name = "rex_sub_82160680" } +0x82160788 = { name = "rex_sub_82160788" } +0x82160868 = { name = "rex_sub_82160868" } +0x82160960 = { name = "rex_sub_82160960" } +0x82160BB8 = { name = "rex_sub_82160BB8" } +0x82160C28 = { name = "rex_sub_82160C28" } +0x82160D18 = { name = "rex_sub_82160D18" } +0x82160E50 = { name = "rex_sub_82160E50" } +0x82160F30 = { name = "rex_sub_82160F30" } +0x82160FC0 = { name = "rex_sub_82160FC0" } +0x821610C8 = { name = "rex_sub_821610C8" } +0x82161218 = { name = "rex_sub_82161218" } +0x82161300 = { name = "rex_sub_82161300" } +0x82161370 = { name = "rex_sub_82161370" } +0x82161758 = { name = "rex_sub_82161758" } +0x82161860 = { name = "rex_sub_82161860" } +0x821619E0 = { name = "rex_sub_821619E0" } +0x82161B08 = { name = "rex_sub_82161B08" } +0x82161BD8 = { name = "rex_sub_82161BD8" } +0x82161C30 = { name = "rex_sub_82161C30" } +0x82161D68 = { name = "rex_sub_82161D68" } +0x82161DE8 = { name = "rex_sub_82161DE8" } +0x82161ED8 = { name = "rex_sub_82161ED8" } +0x82161F60 = { name = "rex_sub_82161F60" } +0x821620C0 = { name = "rex_sub_821620C0" } +0x821621F8 = { name = "rex_sub_821621F8" } +0x82162350 = { name = "rex_sub_82162350" } +0x82162458 = { name = "rex_sub_82162458" } +0x82162548 = { name = "rex_sub_82162548" } +0x82162680 = { name = "rex_sub_82162680" } +0x82162848 = { name = "rex_sub_82162848" } +0x82162968 = { name = "rex_sub_82162968" } +0x82162A38 = { name = "rex_sub_82162A38" } +0x82162AB0 = { name = "rex_sub_82162AB0" } +0x82162BE0 = { name = "rex_sub_82162BE0" } +0x82162CF0 = { name = "rex_sub_82162CF0" } +0x82162E18 = { name = "rex_sub_82162E18" } +0x82162FD0 = { name = "rex_sub_82162FD0" } +0x82163118 = { name = "rex_sub_82163118" } +0x82163260 = { name = "rex_sub_82163260" } +0x82163390 = { name = "rex_sub_82163390" } +0x82163478 = { name = "rex_sub_82163478" } +0x821634E8 = { name = "rex_sub_821634E8" } +0x82163620 = { name = "rex_sub_82163620" } +0x821636E8 = { name = "rex_sub_821636E8" } +0x82163798 = { name = "rex_sub_82163798" } +0x82163870 = { name = "rex_sub_82163870" } +0x82163980 = { name = "rex_sub_82163980" } +0x82163AA8 = { name = "rex_sub_82163AA8" } +0x82163D70 = { name = "rex_sub_82163D70" } +0x82163EE8 = { name = "rex_sub_82163EE8" } +0x82164058 = { name = "rex_sub_82164058" } +0x82164290 = { name = "rex_sub_82164290" } +0x821642F8 = { name = "rex_sub_821642F8" } +0x82164408 = { name = "rex_sub_82164408" } +0x821644D0 = { name = "rex_sub_821644D0" } +0x82164580 = { name = "rex_sub_82164580" } +0x821646E0 = { name = "rex_sub_821646E0" } +0x821647F0 = { name = "rex_sub_821647F0" } +0x82164A78 = { name = "rex_sub_82164A78" } +0x82164BB0 = { name = "rex_sub_82164BB0" } +0x82164DD0 = { name = "rex_sub_82164DD0" } +0x82164F08 = { name = "rex_sub_82164F08" } +0x82164FB0 = { name = "rex_sub_82164FB0" } +0x82165048 = { name = "rex_sub_82165048" } +0x821650C0 = { name = "rex_sub_821650C0" } +0x82165290 = { name = "rex_sub_82165290" } +0x821654B0 = { name = "rex_sub_821654B0" } +0x82165588 = { name = "rex_sub_82165588" } +0x82165658 = { name = "rex_sub_82165658" } +0x821656A0 = { name = "rex_sub_821656A0" } +0x821656F0 = { name = "rex_sub_821656F0" } +0x82165848 = { name = "rex_sub_82165848" } +0x82165978 = { name = "rex_sub_82165978" } +0x82165AE0 = { name = "rex_sub_82165AE0" } +0x82165C10 = { name = "rex_sub_82165C10" } +0x82165CF8 = { name = "rex_sub_82165CF8" } +0x82165DD0 = { name = "rex_sub_82165DD0" } +0x82165E28 = { name = "rex_sub_82165E28" } +0x82165EA8 = { name = "rex_sub_82165EA8" } +0x82165F40 = { name = "rex_sub_82165F40" } +0x82165F88 = { name = "rex_sub_82165F88" } +0x82166088 = { name = "rex_sub_82166088" } +0x821660D0 = { name = "rex_sub_821660D0" } +0x82166118 = { name = "rex_sub_82166118" } +0x82166170 = { name = "rex_sub_82166170" } +0x821661C8 = { name = "rex_sub_821661C8" } +0x82166358 = { name = "rex_sub_82166358" } +0x821663A8 = { name = "rex_sub_821663A8" } +0x82166468 = { name = "rex_sub_82166468" } +0x82166548 = { name = "rex_sub_82166548" } +0x82166628 = { name = "rex_sub_82166628" } +0x821666C8 = { name = "rex_sub_821666C8" } +0x82166710 = { name = "rex_sub_82166710" } +0x821667A0 = { name = "rex_sub_821667A0" } +0x82166890 = { name = "rex_sub_82166890" } +0x82166D48 = { name = "rex_sub_82166D48" } +0x82166F38 = { name = "rex_sub_82166F38" } +0x82167798 = { name = "rex_sub_82167798" } +0x821679D0 = { name = "rex_sub_821679D0" } +0x82167E70 = { name = "rex_sub_82167E70" } +0x82168470 = { name = "rex_sub_82168470" } +0x82168878 = { name = "rex_sub_82168878" } +0x82168BE8 = { name = "rex_sub_82168BE8" } +0x82168C50 = { name = "rex_sub_82168C50" } +0x82168CD0 = { name = "rex_sub_82168CD0" } +0x82168D58 = { name = "rex_sub_82168D58" } +0x82168F20 = { name = "rex_sub_82168F20" } +0x82169068 = { name = "rex_sub_82169068" } +0x82169140 = { name = "rex_sub_82169140" } +0x82169698 = { name = "rex_sub_82169698" } +0x821699A8 = { name = "rex_sub_821699A8" } +0x82169A30 = { name = "rex_sub_82169A30" } +0x82169AA0 = { name = "rex_sub_82169AA0" } +0x82169B90 = { name = "rex_sub_82169B90" } +0x82169CD0 = { name = "rex_sub_82169CD0" } +0x82169DB0 = { name = "rex_sub_82169DB0" } +0x82169EE8 = { name = "rex_sub_82169EE8" } +0x82169FC8 = { name = "rex_sub_82169FC8" } +0x8216A1B0 = { name = "rex_sub_8216A1B0" } +0x8216A2D0 = { name = "rex_sub_8216A2D0" } +0x8216A3B0 = { name = "rex_sub_8216A3B0" } +0x8216A3F8 = { name = "rex_sub_8216A3F8" } +0x8216A450 = { name = "rex_sub_8216A450" } +0x8216A4E8 = { name = "rex_sub_8216A4E8" } +0x8216A688 = { name = "rex_sub_8216A688" } +0x8216A7D0 = { name = "rex_sub_8216A7D0" } +0x8216A8A8 = { name = "rex_sub_8216A8A8" } +0x8216AF00 = { name = "rex_sub_8216AF00" } +0x8216B280 = { name = "rex_sub_8216B280" } +0x8216B378 = { name = "rex_sub_8216B378" } +0x8216B4E8 = { name = "rex_sub_8216B4E8" } +0x8216B6A0 = { name = "rex_sub_8216B6A0" } +0x8216B8F8 = { name = "rex_sub_8216B8F8" } +0x8216B968 = { name = "rex_sub_8216B968" } +0x8216B9B8 = { name = "rex_sub_8216B9B8" } +0x8216BA60 = { name = "rex_sub_8216BA60" } +0x8216BC18 = { name = "rex_sub_8216BC18" } +0x8216BCE8 = { name = "rex_sub_8216BCE8" } +0x8216BF18 = { name = "rex_sub_8216BF18" } +0x8216C010 = { name = "rex_sub_8216C010" } +0x8216C060 = { name = "rex_sub_8216C060" } +0x8216C108 = { name = "rex_sub_8216C108" } +0x8216C230 = { name = "rex_sub_8216C230" } +0x8216C300 = { name = "rex_sub_8216C300" } +0x8216C448 = { name = "rex_sub_8216C448" } +0x8216C4A0 = { name = "rex_sub_8216C4A0" } +0x8216C588 = { name = "rex_sub_8216C588" } +0x8216C600 = { name = "rex_sub_8216C600" } +0x8216C6E0 = { name = "rex_sub_8216C6E0" } +0x8216C730 = { name = "rex_sub_8216C730" } +0x8216C7C0 = { name = "rex_sub_8216C7C0" } +0x8216C8B8 = { name = "rex_sub_8216C8B8" } +0x8216CA90 = { name = "rex_sub_8216CA90" } +0x8216CC58 = { name = "rex_sub_8216CC58" } +0x8216CEE8 = { name = "rex_sub_8216CEE8" } +0x8216CF78 = { name = "rex_sub_8216CF78" } +0x8216D070 = { name = "rex_sub_8216D070" } +0x8216D0C0 = { name = "rex_sub_8216D0C0" } +0x8216D188 = { name = "rex_sub_8216D188" } +0x8216D2F8 = { name = "rex_sub_8216D2F8" } +0x8216D358 = { name = "rex_sub_8216D358" } +0x8216D458 = { name = "rex_sub_8216D458" } +0x8216D608 = { name = "rex_sub_8216D608" } +0x8216D650 = { name = "rex_sub_8216D650" } +0x8216D658 = { name = "rex_sub_8216D658" } +0x8216D870 = { name = "rex_sub_8216D870" } +0x8216D8E0 = { name = "rex_sub_8216D8E0" } +0x8216D978 = { name = "rex_sub_8216D978" } +0x8216DC78 = { name = "rex_sub_8216DC78" } +0x8216DE70 = { name = "rex_sub_8216DE70" } +0x8216E058 = { name = "rex_sub_8216E058" } +0x8216E0D0 = { name = "rex_sub_8216E0D0" } +0x8216E1B8 = { name = "rex_sub_8216E1B8" } +0x8216E278 = { name = "rex_sub_8216E278" } +0x8216E2D8 = { name = "rex_sub_8216E2D8" } +0x8216E340 = { name = "rex_sub_8216E340" } +0x8216E458 = { name = "rex_sub_8216E458" } +0x8216E508 = { name = "rex_sub_8216E508" } +0x8216E5E0 = { name = "rex_sub_8216E5E0" } +0x8216E728 = { name = "rex_sub_8216E728" } +0x8216E800 = { name = "rex_sub_8216E800" } +0x8216E888 = { name = "rex_sub_8216E888" } +0x8216E918 = { name = "rex_sub_8216E918" } +0x8216EA98 = { name = "rex_sub_8216EA98" } +0x8216EB28 = { name = "rex_sub_8216EB28" } +0x8216EC00 = { name = "rex_sub_8216EC00" } +0x8216EC60 = { name = "rex_sub_8216EC60" } +0x8216ED00 = { name = "rex_sub_8216ED00" } +0x8216EEA8 = { name = "rex_sub_8216EEA8" } +0x8216EF08 = { name = "rex_sub_8216EF08" } +0x8216EFF0 = { name = "rex_sub_8216EFF0" } +0x8216F088 = { name = "rex_sub_8216F088" } +0x8216F1D0 = { name = "rex_sub_8216F1D0" } +0x8216F2C0 = { name = "rex_sub_8216F2C0" } +0x8216F3C8 = { name = "rex_sub_8216F3C8" } +0x8216F480 = { name = "rex_sub_8216F480" } +0x8216F560 = { name = "rex_sub_8216F560" } +0x8216F5E8 = { name = "rex_sub_8216F5E8" } +0x8216F9B0 = { name = "rex_sub_8216F9B0" } +0x8216FCE8 = { name = "rex_sub_8216FCE8" } +0x8216FE98 = { name = "rex_sub_8216FE98" } +0x8216FEE0 = { name = "rex_sub_8216FEE0" } +0x8216FFB8 = { name = "rex_sub_8216FFB8" } +0x82170000 = { name = "rex_sub_82170000" } +0x82170078 = { name = "rex_sub_82170078" } +0x821700E0 = { name = "rex_sub_821700E0" } +0x82170150 = { name = "rex_sub_82170150" } +0x82170210 = { name = "rex_sub_82170210" } +0x82170350 = { name = "rex_sub_82170350" } +0x821703A0 = { name = "rex_sub_821703A0" } +0x82170460 = { name = "rex_sub_82170460" } +0x82170540 = { name = "rex_sub_82170540" } +0x82170620 = { name = "rex_sub_82170620" } +0x82170670 = { name = "rex_sub_82170670" } +0x821706C8 = { name = "rex_sub_821706C8" } +0x821707A0 = { name = "rex_sub_821707A0" } +0x82170928 = { name = "rex_sub_82170928" } +0x82170A68 = { name = "rex_sub_82170A68" } +0x82170AB0 = { name = "rex_sub_82170AB0" } +0x82170B88 = { name = "rex_sub_82170B88" } +0x82170CA8 = { name = "rex_sub_82170CA8" } +0x82170D58 = { name = "rex_sub_82170D58" } +0x82170E60 = { name = "rex_sub_82170E60" } +0x82170FA0 = { name = "rex_sub_82170FA0" } +0x82170FE8 = { name = "rex_sub_82170FE8" } +0x82171068 = { name = "rex_sub_82171068" } +0x82171160 = { name = "rex_sub_82171160" } +0x82171258 = { name = "rex_sub_82171258" } +0x82171320 = { name = "rex_sub_82171320" } +0x821713D0 = { name = "rex_sub_821713D0" } +0x82171468 = { name = "rex_sub_82171468" } +0x82171630 = { name = "rex_sub_82171630" } +0x82171A18 = { name = "rex_sub_82171A18" } +0x82171AF8 = { name = "rex_sub_82171AF8" } +0x82171B40 = { name = "rex_sub_82171B40" } +0x82171C08 = { name = "rex_sub_82171C08" } +0x82171E38 = { name = "rex_sub_82171E38" } +0x82172170 = { name = "rex_sub_82172170" } +0x82172270 = { name = "rex_sub_82172270" } +0x82172310 = { name = "rex_sub_82172310" } +0x821723A8 = { name = "rex_sub_821723A8" } +0x82172428 = { name = "rex_sub_82172428" } +0x82172488 = { name = "rex_sub_82172488" } +0x82172790 = { name = "rex_sub_82172790" } +0x82172A38 = { name = "rex_sub_82172A38" } +0x82172B10 = { name = "rex_sub_82172B10" } +0x82173030 = { name = "rex_sub_82173030" } +0x82173210 = { name = "rex_sub_82173210" } +0x82173400 = { name = "rex_sub_82173400" } +0x82173518 = { name = "rex_sub_82173518" } +0x82173828 = { name = "rex_sub_82173828" } +0x82173998 = { name = "rex_sub_82173998" } +0x82173D70 = { name = "rex_sub_82173D70" } +0x82173ED8 = { name = "rex_sub_82173ED8" } +0x82174028 = { name = "rex_sub_82174028" } +0x82174060 = { name = "rex_sub_82174060" } +0x82174138 = { name = "rex_sub_82174138" } +0x82174448 = { name = "rex_sub_82174448" } +0x82174848 = { name = "rex_sub_82174848" } +0x82174888 = { name = "rex_sub_82174888" } +0x82174920 = { name = "rex_sub_82174920" } +0x82174A10 = { name = "rex_sub_82174A10" } +0x82174CB8 = { name = "rex_sub_82174CB8" } +0x82174E38 = { name = "rex_sub_82174E38" } +0x82174F88 = { name = "rex_sub_82174F88" } +0x82175258 = { name = "rex_sub_82175258" } +0x821752A0 = { name = "rex_sub_821752A0" } +0x821754B8 = { name = "rex_sub_821754B8" } +0x821755D0 = { name = "rex_sub_821755D0" } +0x82175700 = { name = "rex_sub_82175700" } +0x82175838 = { name = "rex_sub_82175838" } +0x821758A8 = { name = "rex_sub_821758A8" } +0x82175AD8 = { name = "rex_sub_82175AD8" } +0x82175E28 = { name = "rex_sub_82175E28" } +0x82175E40 = { name = "rex_sub_82175E40" } +0x82175E98 = { name = "rex_sub_82175E98" } +0x82175F10 = { name = "rex_sub_82175F10" } +0x82175F88 = { name = "rex_sub_82175F88" } +0x82176000 = { name = "rex_sub_82176000" } +0x82176078 = { name = "rex_sub_82176078" } +0x821760F0 = { name = "rex_sub_821760F0" } +0x82176168 = { name = "rex_sub_82176168" } +0x821761E0 = { name = "rex_sub_821761E0" } +0x82176258 = { name = "rex_sub_82176258" } +0x821762D0 = { name = "rex_sub_821762D0" } +0x82176348 = { name = "rex_sub_82176348" } +0x821763C0 = { name = "rex_sub_821763C0" } +0x82176438 = { name = "rex_sub_82176438" } +0x821764B0 = { name = "rex_sub_821764B0" } +0x82176758 = { name = "rex_sub_82176758" } +0x82176838 = { name = "rex_sub_82176838" } +0x82176968 = { name = "rex_sub_82176968" } +0x82176BA0 = { name = "rex_sub_82176BA0" } +0x82176C90 = { name = "rex_sub_82176C90" } +0x82176EA8 = { name = "rex_sub_82176EA8" } +0x82177818 = { name = "rex_sub_82177818" } +0x821780E8 = { name = "rex_sub_821780E8" } +0x82178318 = { name = "rex_sub_82178318" } +0x821784A8 = { name = "rex_sub_821784A8" } +0x82178650 = { name = "rex_sub_82178650" } +0x821788F0 = { name = "rex_sub_821788F0" } +0x821793D0 = { name = "rex_sub_821793D0" } +0x82179878 = { name = "rex_sub_82179878" } +0x82179C20 = { name = "rex_sub_82179C20" } +0x82179EA0 = { name = "rex_sub_82179EA0" } +0x8217A1F0 = { name = "rex_sub_8217A1F0" } +0x8217A560 = { name = "rex_sub_8217A560" } +0x8217A698 = { name = "rex_sub_8217A698" } +0x8217A7D0 = { name = "rex_sub_8217A7D0" } +0x8217AA00 = { name = "rex_sub_8217AA00" } +0x8217ACA8 = { name = "rex_sub_8217ACA8" } +0x8217AFA8 = { name = "rex_sub_8217AFA8" } +0x8217B1A0 = { name = "rex_sub_8217B1A0" } +0x8217B458 = { name = "rex_sub_8217B458" } +0x8217B6F8 = { name = "rex_sub_8217B6F8" } +0x8217B910 = { name = "rex_sub_8217B910" } +0x8217BB60 = { name = "rex_sub_8217BB60" } +0x8217C120 = { name = "rex_sub_8217C120" } +0x8217C6E0 = { name = "rex_sub_8217C6E0" } +0x8217C8F8 = { name = "rex_sub_8217C8F8" } +0x8217CA50 = { name = "rex_sub_8217CA50" } +0x8217CBA8 = { name = "rex_sub_8217CBA8" } +0x8217CF10 = { name = "rex_sub_8217CF10" } +0x8217D100 = { name = "rex_sub_8217D100" } +0x8217D538 = { name = "rex_sub_8217D538" } +0x8217D600 = { name = "rex_sub_8217D600" } +0x8217D6A0 = { name = "rex_sub_8217D6A0" } +0x8217D950 = { name = "rex_sub_8217D950" } +0x8217DA40 = { name = "rex_sub_8217DA40" } +0x8217DC88 = { name = "rex_sub_8217DC88" } +0x8217E198 = { name = "rex_sub_8217E198" } +0x8217E2C8 = { name = "rex_sub_8217E2C8" } +0x8217E418 = { name = "rex_sub_8217E418" } +0x8217E528 = { name = "rex_sub_8217E528" } +0x8217E648 = { name = "rex_sub_8217E648" } +0x8217E788 = { name = "rex_sub_8217E788" } +0x8217E940 = { name = "rex_sub_8217E940" } +0x8217EAE8 = { name = "rex_sub_8217EAE8" } +0x8217EC40 = { name = "rex_sub_8217EC40" } +0x8217ED98 = { name = "rex_sub_8217ED98" } +0x8217EED0 = { name = "rex_sub_8217EED0" } +0x8217F078 = { name = "rex_sub_8217F078" } +0x8217F218 = { name = "rex_sub_8217F218" } +0x8217F340 = { name = "rex_sub_8217F340" } +0x8217F418 = { name = "rex_sub_8217F418" } +0x8217F4F0 = { name = "rex_sub_8217F4F0" } +0x8217F670 = { name = "rex_sub_8217F670" } +0x8217F998 = { name = "rex_sub_8217F998" } +0x8217FA28 = { name = "rex_sub_8217FA28" } +0x8217FB40 = { name = "rex_sub_8217FB40" } +0x8217FBD0 = { name = "rex_sub_8217FBD0" } +0x8217FCE8 = { name = "rex_sub_8217FCE8" } +0x8217FD50 = { name = "rex_sub_8217FD50" } +0x8217FDE8 = { name = "rex_sub_8217FDE8" } +0x8217FFA0 = { name = "rex_sub_8217FFA0" } +0x82180008 = { name = "rex_sub_82180008" } +0x82180168 = { name = "rex_sub_82180168" } +0x82180640 = { name = "rex_sub_82180640" } +0x821806A8 = { name = "rex_sub_821806A8" } +0x82180798 = { name = "rex_sub_82180798" } +0x82180A78 = { name = "rex_sub_82180A78" } +0x82180AE0 = { name = "rex_sub_82180AE0" } +0x82180BD0 = { name = "rex_sub_82180BD0" } +0x82180EB0 = { name = "rex_sub_82180EB0" } +0x82180F18 = { name = "rex_sub_82180F18" } +0x82181078 = { name = "rex_sub_82181078" } +0x82181550 = { name = "rex_sub_82181550" } +0x821815B8 = { name = "rex_sub_821815B8" } +0x821816A8 = { name = "rex_sub_821816A8" } +0x82181988 = { name = "rex_sub_82181988" } +0x821819F0 = { name = "rex_sub_821819F0" } +0x82181AE0 = { name = "rex_sub_82181AE0" } +0x82181DC0 = { name = "rex_sub_82181DC0" } +0x82181E28 = { name = "rex_sub_82181E28" } +0x821822C0 = { name = "rex_sub_821822C0" } +0x821823F0 = { name = "rex_sub_821823F0" } +0x82182450 = { name = "rex_sub_82182450" } +0x82182540 = { name = "rex_sub_82182540" } +0x821825B8 = { name = "rex_sub_821825B8" } +0x821828A0 = { name = "rex_sub_821828A0" } +0x82182A08 = { name = "rex_sub_82182A08" } +0x82182A88 = { name = "rex_sub_82182A88" } +0x82182CA0 = { name = "rex_sub_82182CA0" } +0x82182E58 = { name = "rex_sub_82182E58" } +0x82183120 = { name = "rex_sub_82183120" } +0x821831A8 = { name = "rex_sub_821831A8" } +0x82183250 = { name = "rex_sub_82183250" } +0x82183298 = { name = "rex_sub_82183298" } +0x821832E0 = { name = "rex_sub_821832E0" } +0x82183328 = { name = "rex_sub_82183328" } +0x821834C8 = { name = "rex_sub_821834C8" } +0x82183528 = { name = "rex_sub_82183528" } +0x821835C0 = { name = "rex_sub_821835C0" } +0x82183688 = { name = "rex_sub_82183688" } +0x821836D8 = { name = "rex_sub_821836D8" } +0x82183750 = { name = "rex_sub_82183750" } +0x821837D8 = { name = "rex_sub_821837D8" } +0x82183868 = { name = "rex_sub_82183868" } +0x821838B0 = { name = "rex_sub_821838B0" } +0x821839E0 = { name = "rex_sub_821839E0" } +0x82183A80 = { name = "rex_sub_82183A80" } +0x82183AD0 = { name = "rex_sub_82183AD0" } +0x82183B80 = { name = "rex_sub_82183B80" } +0x82183BD0 = { name = "rex_sub_82183BD0" } +0x82183CD8 = { name = "rex_sub_82183CD8" } +0x82183D20 = { name = "rex_sub_82183D20" } +0x82183DA8 = { name = "rex_sub_82183DA8" } +0x82183DB8 = { name = "rex_sub_82183DB8" } +0x82184460 = { name = "rex_sub_82184460" } +0x82184500 = { name = "rex_sub_82184500" } +0x821848A0 = { name = "rex_sub_821848A0" } +0x82184BC0 = { name = "rex_sub_82184BC0" } +0x82184DC8 = { name = "rex_sub_82184DC8" } +0x82184F18 = { name = "rex_sub_82184F18" } +0x82185030 = { name = "rex_sub_82185030" } +0x821850B8 = { name = "rex_sub_821850B8" } +0x82185240 = { name = "rex_sub_82185240" } +0x82185290 = { name = "rex_sub_82185290" } +0x82185340 = { name = "rex_sub_82185340" } +0x82185390 = { name = "rex_sub_82185390" } +0x821854B0 = { name = "rex_sub_821854B0" } +0x82185548 = { name = "rex_sub_82185548" } +0x821856F8 = { name = "rex_sub_821856F8" } +0x821857B0 = { name = "rex_sub_821857B0" } +0x82186080 = { name = "rex_sub_82186080" } +0x82186220 = { name = "rex_sub_82186220" } +0x82186318 = { name = "rex_sub_82186318" } +0x821864A8 = { name = "rex_sub_821864A8" } +0x821864F0 = { name = "rex_sub_821864F0" } +0x82186A10 = { name = "rex_sub_82186A10" } +0x82186A58 = { name = "rex_sub_82186A58" } +0x82186AA0 = { name = "rex_sub_82186AA0" } +0x82186C00 = { name = "rex_sub_82186C00" } +0x82186D10 = { name = "rex_sub_82186D10" } +0x82186D90 = { name = "rex_sub_82186D90" } +0x82186E58 = { name = "rex_sub_82186E58" } +0x82187538 = { name = "rex_sub_82187538" } +0x82187B48 = { name = "rex_sub_82187B48" } +0x82188168 = { name = "rex_sub_82188168" } +0x821888E0 = { name = "rex_sub_821888E0" } +0x82188F50 = { name = "rex_sub_82188F50" } +0x8218A4A0 = { name = "rex_sub_8218A4A0" } +0x8218A4E8 = { name = "rex_sub_8218A4E8" } +0x8218A588 = { name = "rex_sub_8218A588" } +0x8218A5E8 = { name = "rex_sub_8218A5E8" } +0x8218A748 = { name = "rex_sub_8218A748" } +0x8218A8D0 = { name = "rex_sub_8218A8D0" } +0x8218A958 = { name = "rex_sub_8218A958" } +0x8218A960 = { name = "rex_sub_8218A960" } +0x8218AA50 = { name = "rex_sub_8218AA50" } +0x8218AAE0 = { name = "rex_sub_8218AAE0" } +0x8218AC28 = { name = "rex_sub_8218AC28" } +0x8218ACE0 = { name = "rex_sub_8218ACE0" } +0x8218AF08 = { name = "rex_sub_8218AF08" } +0x8218B2F0 = { name = "rex_sub_8218B2F0" } +0x8218B4F8 = { name = "rex_sub_8218B4F8" } +0x8218BC30 = { name = "rex_sub_8218BC30" } +0x8218BD00 = { name = "rex_sub_8218BD00" } +0x8218BDD0 = { name = "rex_sub_8218BDD0" } +0x8218BE48 = { name = "rex_sub_8218BE48" } +0x8218BE98 = { name = "rex_sub_8218BE98" } +0x8218BF48 = { name = "rex_sub_8218BF48" } +0x8218BFE0 = { name = "rex_sub_8218BFE0" } +0x8218C260 = { name = "rex_sub_8218C260" } +0x8218CCD0 = { name = "rex_sub_8218CCD0" } +0x8218CDA8 = { name = "rex_sub_8218CDA8" } +0x8218CF18 = { name = "rex_sub_8218CF18" } +0x8218CF68 = { name = "rex_sub_8218CF68" } +0x8218D088 = { name = "rex_sub_8218D088" } +0x8218D100 = { name = "rex_sub_8218D100" } +0x8218D118 = { name = "rex_sub_8218D118" } +0x8218D160 = { name = "rex_sub_8218D160" } +0x8218D240 = { name = "rex_sub_8218D240" } +0x8218D388 = { name = "rex_sub_8218D388" } +0x8218D4A8 = { name = "rex_sub_8218D4A8" } +0x8218D5C0 = { name = "rex_sub_8218D5C0" } +0x8218D650 = { name = "rex_sub_8218D650" } +0x8218D6B8 = { name = "rex_sub_8218D6B8" } +0x8218D768 = { name = "rex_sub_8218D768" } +0x8218D918 = { name = "rex_sub_8218D918" } +0x8218F318 = { name = "rex_sub_8218F318" } +0x8218F320 = { name = "rex_sub_8218F320" } +0x8218F380 = { name = "rex_sub_8218F380" } +0x8218F4F0 = { name = "rex_sub_8218F4F0" } +0x8218F820 = { name = "rex_sub_8218F820" } +0x8218F8C0 = { name = "rex_sub_8218F8C0" } +0x8218F9C0 = { name = "rex_sub_8218F9C0" } +0x8218FA10 = { name = "rex_sub_8218FA10" } +0x8218FAD8 = { name = "rex_sub_8218FAD8" } +0x8218FB90 = { name = "rex_sub_8218FB90" } +0x8218FC60 = { name = "rex_sub_8218FC60" } +0x8218FCB0 = { name = "rex_sub_8218FCB0" } +0x8218FD30 = { name = "rex_sub_8218FD30" } +0x8218FDD8 = { name = "rex_sub_8218FDD8" } +0x82190060 = { name = "rex_sub_82190060" } +0x82190230 = { name = "rex_sub_82190230" } +0x82190238 = { name = "rex_sub_82190238" } +0x821902B8 = { name = "rex_sub_821902B8" } +0x82190330 = { name = "rex_sub_82190330" } +0x82190428 = { name = "rex_sub_82190428" } +0x82190470 = { name = "rex_sub_82190470" } +0x82190550 = { name = "rex_sub_82190550" } +0x821906C8 = { name = "rex_sub_821906C8" } +0x82190728 = { name = "rex_sub_82190728" } +0x82190800 = { name = "rex_sub_82190800" } +0x82190EE8 = { name = "rex_sub_82190EE8" } +0x82191248 = { name = "rex_sub_82191248" } +0x821912C8 = { name = "rex_sub_821912C8" } +0x82191348 = { name = "rex_sub_82191348" } +0x821913C8 = { name = "rex_sub_821913C8" } +0x82191480 = { name = "rex_sub_82191480" } +0x82191690 = { name = "rex_sub_82191690" } +0x82191718 = { name = "rex_sub_82191718" } +0x821917C8 = { name = "rex_sub_821917C8" } +0x82191AE8 = { name = "rex_sub_82191AE8" } +0x82191D70 = { name = "rex_sub_82191D70" } +0x82192060 = { name = "rex_sub_82192060" } +0x821920C0 = { name = "rex_sub_821920C0" } +0x821922B8 = { name = "rex_sub_821922B8" } +0x821923F0 = { name = "rex_sub_821923F0" } +0x82192488 = { name = "rex_sub_82192488" } +0x821925D8 = { name = "rex_sub_821925D8" } +0x82192778 = { name = "rex_sub_82192778" } +0x821937A8 = { name = "rex_sub_821937A8" } +0x82193820 = { name = "rex_sub_82193820" } +0x82193A28 = { name = "rex_sub_82193A28" } +0x82193B28 = { name = "rex_sub_82193B28" } +0x82193DF8 = { name = "rex_sub_82193DF8" } +0x82194308 = { name = "rex_sub_82194308" } +0x821943C8 = { name = "rex_sub_821943C8" } +0x82194468 = { name = "rex_sub_82194468" } +0x821945E0 = { name = "rex_sub_821945E0" } +0x821946D8 = { name = "rex_sub_821946D8" } +0x82194748 = { name = "rex_sub_82194748" } +0x821947D0 = { name = "rex_sub_821947D0" } +0x82194840 = { name = "rex_sub_82194840" } +0x821948D8 = { name = "rex_sub_821948D8" } +0x821949C8 = { name = "rex_sub_821949C8" } +0x821957A8 = { name = "rex_sub_821957A8" } +0x821958E8 = { name = "rex_sub_821958E8" } +0x82195B68 = { name = "rex_sub_82195B68" } +0x82195BB8 = { name = "rex_sub_82195BB8" } +0x82195C98 = { name = "rex_sub_82195C98" } +0x82195CF8 = { name = "rex_sub_82195CF8" } +0x82195DC8 = { name = "rex_sub_82195DC8" } +0x82195E18 = { name = "rex_sub_82195E18" } +0x82195E68 = { name = "rex_sub_82195E68" } +0x82195F20 = { name = "rex_sub_82195F20" } +0x82195F28 = { name = "rex_sub_82195F28" } +0x82196000 = { name = "rex_sub_82196000" } +0x82196080 = { name = "rex_sub_82196080" } +0x82196110 = { name = "rex_sub_82196110" } +0x82196330 = { name = "rex_sub_82196330" } +0x821963D8 = { name = "rex_sub_821963D8" } +0x821964B8 = { name = "rex_sub_821964B8" } +0x82196590 = { name = "rex_sub_82196590" } +0x82196620 = { name = "rex_sub_82196620" } +0x82196678 = { name = "rex_sub_82196678" } +0x82196778 = { name = "rex_sub_82196778" } +0x82196910 = { name = "rex_sub_82196910" } +0x82196A70 = { name = "rex_sub_82196A70" } +0x82196CD8 = { name = "rex_sub_82196CD8" } +0x82196E40 = { name = "rex_sub_82196E40" } +0x82196F10 = { name = "rex_sub_82196F10" } +0x82196F68 = { name = "rex_sub_82196F68" } +0x82197018 = { name = "rex_sub_82197018" } +0x82197308 = { name = "rex_sub_82197308" } +0x82197360 = { name = "rex_sub_82197360" } +0x82197D38 = { name = "rex_sub_82197D38" } +0x82197D90 = { name = "rex_sub_82197D90" } +0x82197E40 = { name = "rex_sub_82197E40" } +0x82198158 = { name = "rex_sub_82198158" } +0x821981E0 = { name = "rex_sub_821981E0" } +0x82198290 = { name = "rex_sub_82198290" } +0x821983F8 = { name = "rex_sub_821983F8" } +0x82198578 = { name = "rex_sub_82198578" } +0x82198648 = { name = "rex_sub_82198648" } +0x821986C8 = { name = "rex_sub_821986C8" } +0x82198940 = { name = "rex_sub_82198940" } +0x82198A00 = { name = "rex_sub_82198A00" } +0x82198AD8 = { name = "rex_sub_82198AD8" } +0x82198B70 = { name = "rex_sub_82198B70" } +0x82198C20 = { name = "rex_sub_82198C20" } +0x82198EA0 = { name = "rex_sub_82198EA0" } +0x82198F48 = { name = "rex_sub_82198F48" } +0x82199178 = { name = "rex_sub_82199178" } +0x821991D8 = { name = "rex_sub_821991D8" } +0x82199270 = { name = "rex_sub_82199270" } +0x821994C8 = { name = "rex_sub_821994C8" } +0x82199540 = { name = "rex_sub_82199540" } +0x821995A0 = { name = "rex_sub_821995A0" } +0x82199AB0 = { name = "rex_sub_82199AB0" } +0x82199AF8 = { name = "rex_sub_82199AF8" } +0x82199B40 = { name = "rex_sub_82199B40" } +0x82199D88 = { name = "rex_sub_82199D88" } +0x82199DF8 = { name = "rex_sub_82199DF8" } +0x82199E48 = { name = "rex_sub_82199E48" } +0x82199F48 = { name = "rex_sub_82199F48" } +0x82199FA8 = { name = "rex_sub_82199FA8" } +0x8219A060 = { name = "rex_sub_8219A060" } +0x8219A0D8 = { name = "rex_sub_8219A0D8" } +0x8219A170 = { name = "rex_sub_8219A170" } +0x8219A2A8 = { name = "rex_sub_8219A2A8" } +0x8219A338 = { name = "rex_sub_8219A338" } +0x8219A510 = { name = "rex_sub_8219A510" } +0x8219A748 = { name = "rex_sub_8219A748" } +0x8219A9B8 = { name = "rex_sub_8219A9B8" } +0x8219AA48 = { name = "rex_sub_8219AA48" } +0x8219AAE8 = { name = "rex_sub_8219AAE8" } +0x8219AB88 = { name = "rex_sub_8219AB88" } +0x8219AC18 = { name = "rex_sub_8219AC18" } +0x8219ACD8 = { name = "rex_sub_8219ACD8" } +0x8219AEB8 = { name = "rex_sub_8219AEB8" } +0x8219AF28 = { name = "rex_sub_8219AF28" } +0x8219AFC8 = { name = "rex_sub_8219AFC8" } +0x8219B010 = { name = "rex_sub_8219B010" } +0x8219B058 = { name = "rex_sub_8219B058" } +0x8219B0F0 = { name = "rex_sub_8219B0F0" } +0x8219B838 = { name = "rex_sub_8219B838" } +0x8219BAA0 = { name = "rex_sub_8219BAA0" } +0x8219BB38 = { name = "rex_sub_8219BB38" } +0x8219BC40 = { name = "rex_sub_8219BC40" } +0x8219BD18 = { name = "rex_sub_8219BD18" } +0x8219BF38 = { name = "rex_sub_8219BF38" } +0x8219C160 = { name = "rex_sub_8219C160" } +0x8219C1C0 = { name = "rex_sub_8219C1C0" } +0x8219DC30 = { name = "rex_sub_8219DC30" } +0x8219DFB8 = { name = "rex_sub_8219DFB8" } +0x8219FC90 = { name = "rex_sub_8219FC90" } +0x821A1700 = { name = "rex_sub_821A1700" } +0x821A1A88 = { name = "rex_sub_821A1A88" } +0x821A3788 = { name = "rex_sub_821A3788" } +0x821A3860 = { name = "rex_sub_821A3860" } +0x821A3908 = { name = "rex_sub_821A3908" } +0x821A39B0 = { name = "rex_sub_821A39B0" } +0x821A3B78 = { name = "rex_sub_821A3B78" } +0x821A3C50 = { name = "rex_sub_821A3C50" } +0x821A3DB0 = { name = "rex_sub_821A3DB0" } +0x821A3F68 = { name = "rex_sub_821A3F68" } +0x821A45A8 = { name = "rex_sub_821A45A8" } +0x821A4780 = { name = "rex_sub_821A4780" } +0x821A4858 = { name = "rex_sub_821A4858" } +0x821A4E98 = { name = "rex_sub_821A4E98" } +0x821A4EB0 = { name = "rex_sub_821A4EB0" } +0x821A4F80 = { name = "rex_sub_821A4F80" } +0x821A5000 = { name = "rex_sub_821A5000" } +0x821A50C0 = { name = "rex_sub_821A50C0" } +0x821A53A8 = { name = "rex_sub_821A53A8" } +0x821A5518 = { name = "rex_sub_821A5518" } +0x821A5678 = { name = "rex_sub_821A5678" } +0x821A5770 = { name = "rex_sub_821A5770" } +0x821A5820 = { name = "rex_sub_821A5820" } +0x821A5958 = { name = "rex_sub_821A5958" } +0x821A5AA0 = { name = "rex_sub_821A5AA0" } +0x821A5B08 = { name = "rex_sub_821A5B08" } +0x821A5B68 = { name = "rex_sub_821A5B68" } +0x821A5C48 = { name = "rex_sub_821A5C48" } +0x821A5F88 = { name = "rex_sub_821A5F88" } +0x821A6038 = { name = "rex_sub_821A6038" } +0x821A6198 = { name = "rex_sub_821A6198" } +0x821A6240 = { name = "rex_sub_821A6240" } +0x821A62B0 = { name = "rex_sub_821A62B0" } +0x821A6380 = { name = "rex_sub_821A6380" } +0x821A6400 = { name = "rex_sub_821A6400" } +0x821A6500 = { name = "rex_sub_821A6500" } +0x821A6700 = { name = "rex_sub_821A6700" } +0x821A67C0 = { name = "rex_sub_821A67C0" } +0x821A6960 = { name = "rex_sub_821A6960" } +0x821A6A30 = { name = "rex_sub_821A6A30" } +0x821A6A90 = { name = "rex_sub_821A6A90" } +0x821A6BC0 = { name = "rex_sub_821A6BC0" } +0x821A7610 = { name = "rex_sub_821A7610" } +0x821A7670 = { name = "rex_sub_821A7670" } +0x821A7980 = { name = "rex_sub_821A7980" } +0x821A7D18 = { name = "rex_sub_821A7D18" } +0x821A8088 = { name = "rex_sub_821A8088" } +0x821A8148 = { name = "rex_sub_821A8148" } +0x821A8200 = { name = "rex_sub_821A8200" } +0x821A82E0 = { name = "rex_sub_821A82E0" } +0x821A8A30 = { name = "rex_sub_821A8A30" } +0x821A8FB0 = { name = "rex_sub_821A8FB0" } +0x821A9038 = { name = "rex_sub_821A9038" } +0x821A90A0 = { name = "rex_sub_821A90A0" } +0x821A91D0 = { name = "rex_sub_821A91D0" } +0x821A91D8 = { name = "rex_sub_821A91D8" } +0x821A9260 = { name = "rex_sub_821A9260" } +0x821A92C0 = { name = "rex_sub_821A92C0" } +0x821A93A8 = { name = "rex_sub_821A93A8" } +0x821A9480 = { name = "rex_sub_821A9480" } +0x821A9588 = { name = "rex_sub_821A9588" } +0x821A9600 = { name = "rex_sub_821A9600" } +0x821A9670 = { name = "rex_sub_821A9670" } +0x821A9710 = { name = "rex_sub_821A9710" } +0x821A9790 = { name = "rex_sub_821A9790" } +0x821A97F0 = { name = "rex_sub_821A97F0" } +0x821A98A8 = { name = "rex_sub_821A98A8" } +0x821A9978 = { name = "rex_sub_821A9978" } +0x821A99E8 = { name = "rex_sub_821A99E8" } +0x821A9F20 = { name = "rex_sub_821A9F20" } +0x821AA3F8 = { name = "rex_sub_821AA3F8" } +0x821AA690 = { name = "rex_sub_821AA690" } +0x821AA890 = { name = "rex_sub_821AA890" } +0x821AA8D0 = { name = "rex_sub_821AA8D0" } +0x821AA980 = { name = "rex_sub_821AA980" } +0x821AAA78 = { name = "rex_sub_821AAA78" } +0x821AAA80 = { name = "rex_sub_821AAA80" } +0x821AAB00 = { name = "rex_sub_821AAB00" } +0x821AAB80 = { name = "rex_sub_821AAB80" } +0x821AAC40 = { name = "rex_sub_821AAC40" } +0x821AAD08 = { name = "rex_sub_821AAD08" } +0x821AAD58 = { name = "rex_sub_821AAD58" } +0x821AAE78 = { name = "rex_sub_821AAE78" } +0x821AAFB0 = { name = "rex_sub_821AAFB0" } +0x821AB228 = { name = "rex_sub_821AB228" } +0x821AC510 = { name = "rex_sub_821AC510" } +0x821AC580 = { name = "rex_sub_821AC580" } +0x821AC650 = { name = "rex_sub_821AC650" } +0x821AC718 = { name = "rex_sub_821AC718" } +0x821AC840 = { name = "rex_sub_821AC840" } +0x821AC978 = { name = "rex_sub_821AC978" } +0x821ACEF8 = { name = "rex_sub_821ACEF8" } +0x821AD990 = { name = "rex_sub_821AD990" } +0x821ADA48 = { name = "rex_sub_821ADA48" } +0x821ADDF0 = { name = "rex_sub_821ADDF0" } +0x821ADEE8 = { name = "rex_sub_821ADEE8" } +0x821ADF80 = { name = "rex_sub_821ADF80" } +0x821ADFE0 = { name = "rex_sub_821ADFE0" } +0x821AE040 = { name = "rex_sub_821AE040" } +0x821AE1B0 = { name = "rex_sub_821AE1B0" } +0x821AE360 = { name = "rex_sub_821AE360" } +0x821AE4A8 = { name = "rex_sub_821AE4A8" } +0x821AE590 = { name = "rex_sub_821AE590" } +0x821AE968 = { name = "rex_sub_821AE968" } +0x821AE998 = { name = "rex_sub_821AE998" } +0x821AE9D8 = { name = "rex_sub_821AE9D8" } +0x821AED28 = { name = "rex_sub_821AED28" } +0x821AED90 = { name = "rex_sub_821AED90" } +0x821AEE30 = { name = "rex_sub_821AEE30" } +0x821AEE98 = { name = "rex_sub_821AEE98" } +0x821AEF48 = { name = "rex_sub_821AEF48" } +0x821AF210 = { name = "rex_sub_821AF210" } +0x821AF358 = { name = "rex_sub_821AF358" } +0x821AF500 = { name = "rex_sub_821AF500" } +0x821AF5B8 = { name = "rex_sub_821AF5B8" } +0x821AF7C0 = { name = "rex_sub_821AF7C0" } +0x821AF8B0 = { name = "rex_sub_821AF8B0" } +0x821AFDB8 = { name = "rex_sub_821AFDB8" } +0x821AFE10 = { name = "rex_sub_821AFE10" } +0x821AFEC0 = { name = "rex_sub_821AFEC0" } +0x821B0058 = { name = "rex_sub_821B0058" } +0x821B0268 = { name = "rex_sub_821B0268" } +0x821B02C0 = { name = "rex_sub_821B02C0" } +0x821B0408 = { name = "rex_sub_821B0408" } +0x821B05E8 = { name = "rex_sub_821B05E8" } +0x821B0640 = { name = "rex_sub_821B0640" } +0x821B06F0 = { name = "rex_sub_821B06F0" } +0x821B0B88 = { name = "rex_sub_821B0B88" } +0x821B0FA8 = { name = "rex_sub_821B0FA8" } +0x821B1070 = { name = "rex_sub_821B1070" } +0x821B10D0 = { name = "rex_sub_821B10D0" } +0x821B1268 = { name = "rex_sub_821B1268" } +0x821B1B98 = { name = "rex_sub_821B1B98" } +0x821B1C18 = { name = "rex_sub_821B1C18" } +0x821B1C90 = { name = "rex_sub_821B1C90" } +0x821B1D10 = { name = "rex_sub_821B1D10" } +0x821B1DD0 = { name = "rex_sub_821B1DD0" } +0x821B1E78 = { name = "rex_sub_821B1E78" } +0x821B1F58 = { name = "rex_sub_821B1F58" } +0x821B2090 = { name = "rex_sub_821B2090" } +0x821B21E8 = { name = "rex_sub_821B21E8" } +0x821B2250 = { name = "rex_sub_821B2250" } +0x821B2338 = { name = "rex_sub_821B2338" } +0x821B2498 = { name = "rex_sub_821B2498" } +0x821B2A38 = { name = "rex_sub_821B2A38" } +0x821B3248 = { name = "rex_sub_821B3248" } +0x821B3330 = { name = "rex_sub_821B3330" } +0x821B33D8 = { name = "rex_sub_821B33D8" } +0x821B34A8 = { name = "rex_sub_821B34A8" } +0x821B35C0 = { name = "rex_sub_821B35C0" } +0x821B3980 = { name = "rex_sub_821B3980" } +0x821B3CB0 = { name = "rex_sub_821B3CB0" } +0x821B3D20 = { name = "rex_sub_821B3D20" } +0x821B3D98 = { name = "rex_sub_821B3D98" } +0x821B3F10 = { name = "rex_sub_821B3F10" } +0x821B3F78 = { name = "rex_sub_821B3F78" } +0x821B3FE0 = { name = "rex_sub_821B3FE0" } +0x821B4078 = { name = "rex_sub_821B4078" } +0x821B4108 = { name = "rex_sub_821B4108" } +0x821B41C0 = { name = "rex_sub_821B41C0" } +0x821B41C8 = { name = "rex_sub_821B41C8" } +0x821B4250 = { name = "rex_sub_821B4250" } +0x821B42E8 = { name = "rex_sub_821B42E8" } +0x821B4358 = { name = "rex_sub_821B4358" } +0x821B4408 = { name = "rex_sub_821B4408" } +0x821B4458 = { name = "rex_sub_821B4458" } +0x821B4500 = { name = "rex_sub_821B4500" } +0x821B45B8 = { name = "rex_sub_821B45B8" } +0x821B4628 = { name = "rex_sub_821B4628" } +0x821B4730 = { name = "rex_sub_821B4730" } +0x821B47C0 = { name = "rex_sub_821B47C0" } +0x821B4868 = { name = "rex_sub_821B4868" } +0x821B4928 = { name = "rex_sub_821B4928" } +0x821B49C8 = { name = "rex_sub_821B49C8" } +0x821B4A60 = { name = "rex_sub_821B4A60" } +0x821B4B00 = { name = "rex_sub_821B4B00" } +0x821B4B98 = { name = "rex_sub_821B4B98" } +0x821B4C20 = { name = "rex_sub_821B4C20" } +0x821B4CE0 = { name = "rex_sub_821B4CE0" } +0x821B4DA0 = { name = "rex_sub_821B4DA0" } +0x821B4E98 = { name = "rex_sub_821B4E98" } +0x821B53F0 = { name = "rex_sub_821B53F0" } +0x821B5440 = { name = "rex_sub_821B5440" } +0x821B54A8 = { name = "rex_sub_821B54A8" } +0x821B55A0 = { name = "rex_sub_821B55A0" } +0x821B5608 = { name = "rex_sub_821B5608" } +0x821B5668 = { name = "rex_sub_821B5668" } +0x821B5788 = { name = "rex_sub_821B5788" } +0x821B5900 = { name = "rex_sub_821B5900" } +0x821B5950 = { name = "rex_sub_821B5950" } +0x821B5A38 = { name = "rex_sub_821B5A38" } +0x821B5AA8 = { name = "rex_sub_821B5AA8" } +0x821B5B08 = { name = "rex_sub_821B5B08" } +0x821B5BC8 = { name = "rex_sub_821B5BC8" } +0x821B5D80 = { name = "rex_sub_821B5D80" } +0x821B5E70 = { name = "rex_sub_821B5E70" } +0x821B5EC0 = { name = "rex_sub_821B5EC0" } +0x821B5F60 = { name = "rex_sub_821B5F60" } +0x821B5FD8 = { name = "rex_sub_821B5FD8" } +0x821B6100 = { name = "rex_sub_821B6100" } +0x821B6338 = { name = "rex_sub_821B6338" } +0x821B6490 = { name = "rex_sub_821B6490" } +0x821B6568 = { name = "rex_sub_821B6568" } +0x821B65D0 = { name = "rex_sub_821B65D0" } +0x821B6740 = { name = "rex_sub_821B6740" } +0x821B6EE0 = { name = "rex_sub_821B6EE0" } +0x821B6EE8 = { name = "rex_sub_821B6EE8" } +0x821B7040 = { name = "rex_sub_821B7040" } +0x821B70C8 = { name = "rex_sub_821B70C8" } +0x821B7198 = { name = "rex_sub_821B7198" } +0x821B7210 = { name = "rex_sub_821B7210" } +0x821B7298 = { name = "rex_sub_821B7298" } +0x821B7390 = { name = "rex_sub_821B7390" } +0x821B74C0 = { name = "rex_sub_821B74C0" } +0x821B7620 = { name = "rex_sub_821B7620" } +0x821B7978 = { name = "rex_sub_821B7978" } +0x821B79A8 = { name = "rex_sub_821B79A8" } +0x821B7E10 = { name = "rex_sub_821B7E10" } +0x821B8098 = { name = "rex_sub_821B8098" } +0x821B8260 = { name = "rex_sub_821B8260" } +0x821B8360 = { name = "rex_sub_821B8360" } +0x821B8478 = { name = "rex_sub_821B8478" } +0x821B8530 = { name = "rex_sub_821B8530" } +0x821B85F8 = { name = "rex_sub_821B85F8" } +0x821B8668 = { name = "rex_sub_821B8668" } +0x821B86C8 = { name = "rex_sub_821B86C8" } +0x821B8728 = { name = "rex_sub_821B8728" } +0x821B8790 = { name = "rex_sub_821B8790" } +0x821B87D8 = { name = "rex_sub_821B87D8" } +0x821B8820 = { name = "rex_sub_821B8820" } +0x821B8868 = { name = "rex_sub_821B8868" } +0x821B88B0 = { name = "rex_sub_821B88B0" } +0x821B88F8 = { name = "rex_sub_821B88F8" } +0x821B8940 = { name = "rex_sub_821B8940" } +0x821B8990 = { name = "rex_sub_821B8990" } +0x821B89D8 = { name = "rex_sub_821B89D8" } +0x821B8A38 = { name = "rex_sub_821B8A38" } +0x821B8AF8 = { name = "rex_sub_821B8AF8" } +0x821B8B58 = { name = "rex_sub_821B8B58" } +0x821B8BD0 = { name = "rex_sub_821B8BD0" } +0x821B8C48 = { name = "rex_sub_821B8C48" } +0x821B8C90 = { name = "rex_sub_821B8C90" } +0x821B8CE8 = { name = "rex_sub_821B8CE8" } +0x821B8D40 = { name = "rex_sub_821B8D40" } +0x821B8D98 = { name = "rex_sub_821B8D98" } +0x821B8DF0 = { name = "rex_sub_821B8DF0" } +0x821B8E40 = { name = "rex_sub_821B8E40" } +0x821B8EA0 = { name = "rex_sub_821B8EA0" } +0x821B8F00 = { name = "rex_sub_821B8F00" } +0x821B8F48 = { name = "rex_sub_821B8F48" } +0x821B8FB8 = { name = "rex_sub_821B8FB8" } +0x821B9028 = { name = "rex_sub_821B9028" } +0x821B9098 = { name = "rex_sub_821B9098" } +0x821B90F8 = { name = "rex_sub_821B90F8" } +0x821B9158 = { name = "rex_sub_821B9158" } +0x821B91B8 = { name = "rex_sub_821B91B8" } +0x821B9218 = { name = "rex_sub_821B9218" } +0x821B9278 = { name = "rex_sub_821B9278" } +0x821B92D8 = { name = "rex_sub_821B92D8" } +0x821B9330 = { name = "rex_sub_821B9330" } +0x821B9390 = { name = "rex_sub_821B9390" } +0x821B93F0 = { name = "rex_sub_821B93F0" } +0x821B9450 = { name = "rex_sub_821B9450" } +0x821B9788 = { name = "rex_sub_821B9788" } +0x821B9870 = { name = "rex_sub_821B9870" } +0x821B9A00 = { name = "rex_sub_821B9A00" } +0x821BA2C0 = { name = "rex_sub_821BA2C0" } +0x821BA5D0 = { name = "rex_sub_821BA5D0" } +0x821BAA40 = { name = "rex_sub_821BAA40" } +0x821BABB8 = { name = "rex_sub_821BABB8" } +0x821BACD0 = { name = "rex_sub_821BACD0" } +0x821BB180 = { name = "rex_sub_821BB180" } +0x821BB370 = { name = "rex_sub_821BB370" } +0x821BB540 = { name = "rex_sub_821BB540" } +0x821BB5F0 = { name = "rex_sub_821BB5F0" } +0x821BB640 = { name = "rex_sub_821BB640" } +0x821BB690 = { name = "rex_sub_821BB690" } +0x821BB6E0 = { name = "rex_sub_821BB6E0" } +0x821BB730 = { name = "rex_sub_821BB730" } +0x821BB780 = { name = "rex_sub_821BB780" } +0x821BB7D0 = { name = "rex_sub_821BB7D0" } +0x821BB820 = { name = "rex_sub_821BB820" } +0x821BB870 = { name = "rex_sub_821BB870" } +0x821BB8C0 = { name = "rex_sub_821BB8C0" } +0x821BB910 = { name = "rex_sub_821BB910" } +0x821BB960 = { name = "rex_sub_821BB960" } +0x821BB9B0 = { name = "rex_sub_821BB9B0" } +0x821BBA00 = { name = "rex_sub_821BBA00" } +0x821BBA50 = { name = "rex_sub_821BBA50" } +0x821BBAA0 = { name = "rex_sub_821BBAA0" } +0x821BBAF0 = { name = "rex_sub_821BBAF0" } +0x821BBB40 = { name = "rex_sub_821BBB40" } +0x821BBB90 = { name = "rex_sub_821BBB90" } +0x821BBBE0 = { name = "rex_sub_821BBBE0" } +0x821BBC38 = { name = "rex_sub_821BBC38" } +0x821BBC90 = { name = "rex_sub_821BBC90" } +0x821BBCE0 = { name = "rex_sub_821BBCE0" } +0x821BBD30 = { name = "rex_sub_821BBD30" } +0x821BBD88 = { name = "rex_sub_821BBD88" } +0x821BBDE0 = { name = "rex_sub_821BBDE0" } +0x821BBE30 = { name = "rex_sub_821BBE30" } +0x821BBE80 = { name = "rex_sub_821BBE80" } +0x821BBED0 = { name = "rex_sub_821BBED0" } +0x821BBF20 = { name = "rex_sub_821BBF20" } +0x821BBF70 = { name = "rex_sub_821BBF70" } +0x821BBFC0 = { name = "rex_sub_821BBFC0" } +0x821BC010 = { name = "rex_sub_821BC010" } +0x821BC060 = { name = "rex_sub_821BC060" } +0x821BC0B0 = { name = "rex_sub_821BC0B0" } +0x821BC100 = { name = "rex_sub_821BC100" } +0x821BC150 = { name = "rex_sub_821BC150" } +0x821BC1A0 = { name = "rex_sub_821BC1A0" } +0x821BC1F0 = { name = "rex_sub_821BC1F0" } +0x821BC240 = { name = "rex_sub_821BC240" } +0x821BC290 = { name = "rex_sub_821BC290" } +0x821BC2E0 = { name = "rex_sub_821BC2E0" } +0x821BC330 = { name = "rex_sub_821BC330" } +0x821BC380 = { name = "rex_sub_821BC380" } +0x821BC3D0 = { name = "rex_sub_821BC3D0" } +0x821BC420 = { name = "rex_sub_821BC420" } +0x821BC470 = { name = "rex_sub_821BC470" } +0x821BC4C0 = { name = "rex_sub_821BC4C0" } +0x821BC510 = { name = "rex_sub_821BC510" } +0x821BC560 = { name = "rex_sub_821BC560" } +0x821BC5B0 = { name = "rex_sub_821BC5B0" } +0x821BC600 = { name = "rex_sub_821BC600" } +0x821BC650 = { name = "rex_sub_821BC650" } +0x821BC6A0 = { name = "rex_sub_821BC6A0" } +0x821BC6F0 = { name = "rex_sub_821BC6F0" } +0x821BC740 = { name = "rex_sub_821BC740" } +0x821BC790 = { name = "rex_sub_821BC790" } +0x821BC7E0 = { name = "rex_sub_821BC7E0" } +0x821BC830 = { name = "rex_sub_821BC830" } +0x821BC880 = { name = "rex_sub_821BC880" } +0x821BC8D0 = { name = "rex_sub_821BC8D0" } +0x821BC920 = { name = "rex_sub_821BC920" } +0x821BC970 = { name = "rex_sub_821BC970" } +0x821BC9C0 = { name = "rex_sub_821BC9C0" } +0x821BCA10 = { name = "rex_sub_821BCA10" } +0x821BCA60 = { name = "rex_sub_821BCA60" } +0x821BCAB0 = { name = "rex_sub_821BCAB0" } +0x821BCB00 = { name = "rex_sub_821BCB00" } +0x821BCB50 = { name = "rex_sub_821BCB50" } +0x821BCBA0 = { name = "rex_sub_821BCBA0" } +0x821BCBF0 = { name = "rex_sub_821BCBF0" } +0x821BCC40 = { name = "rex_sub_821BCC40" } +0x821BCC90 = { name = "rex_sub_821BCC90" } +0x821BCCE0 = { name = "rex_sub_821BCCE0" } +0x821BCD30 = { name = "rex_sub_821BCD30" } +0x821BCD80 = { name = "rex_sub_821BCD80" } +0x821BCDD0 = { name = "rex_sub_821BCDD0" } +0x821BCED0 = { name = "rex_sub_821BCED0" } +0x821BCFD0 = { name = "rex_sub_821BCFD0" } +0x821BD0F0 = { name = "rex_sub_821BD0F0" } +0x821BD1F0 = { name = "rex_sub_821BD1F0" } +0x821BD2F0 = { name = "rex_sub_821BD2F0" } +0x821BD3F0 = { name = "rex_sub_821BD3F0" } +0x821BD4F0 = { name = "rex_sub_821BD4F0" } +0x821BD5F0 = { name = "rex_sub_821BD5F0" } +0x821BD6F0 = { name = "rex_sub_821BD6F0" } +0x821BD810 = { name = "rex_sub_821BD810" } +0x821BD9B0 = { name = "rex_sub_821BD9B0" } +0x821BDAB0 = { name = "rex_sub_821BDAB0" } +0x821BDBE0 = { name = "rex_sub_821BDBE0" } +0x821BDCF0 = { name = "rex_sub_821BDCF0" } +0x821BDDF0 = { name = "rex_sub_821BDDF0" } +0x821BDEF0 = { name = "rex_sub_821BDEF0" } +0x821BDFF0 = { name = "rex_sub_821BDFF0" } +0x821BE108 = { name = "rex_sub_821BE108" } +0x821BE1F0 = { name = "rex_sub_821BE1F0" } +0x821BE378 = { name = "rex_sub_821BE378" } +0x821BE478 = { name = "rex_sub_821BE478" } +0x821BE590 = { name = "rex_sub_821BE590" } +0x821BE6C8 = { name = "rex_sub_821BE6C8" } +0x821BE7C8 = { name = "rex_sub_821BE7C8" } +0x821BE8C8 = { name = "rex_sub_821BE8C8" } +0x821BE9C8 = { name = "rex_sub_821BE9C8" } +0x821BEAE0 = { name = "rex_sub_821BEAE0" } +0x821BEBE0 = { name = "rex_sub_821BEBE0" } +0x821BECE0 = { name = "rex_sub_821BECE0" } +0x821BEDE0 = { name = "rex_sub_821BEDE0" } +0x821BEEE0 = { name = "rex_sub_821BEEE0" } +0x821BEFE0 = { name = "rex_sub_821BEFE0" } +0x821BF0E0 = { name = "rex_sub_821BF0E0" } +0x821BF1E0 = { name = "rex_sub_821BF1E0" } +0x821BF2F8 = { name = "rex_sub_821BF2F8" } +0x821BF3F8 = { name = "rex_sub_821BF3F8" } +0x821BF4F8 = { name = "rex_sub_821BF4F8" } +0x821BF5F8 = { name = "rex_sub_821BF5F8" } +0x821BF710 = { name = "rex_sub_821BF710" } +0x821BF878 = { name = "rex_sub_821BF878" } +0x821BF918 = { name = "rex_sub_821BF918" } +0x821BF980 = { name = "rex_sub_821BF980" } +0x821BF9C8 = { name = "rex_sub_821BF9C8" } +0x821BFAB8 = { name = "rex_sub_821BFAB8" } +0x821BFB90 = { name = "rex_sub_821BFB90" } +0x821BFC68 = { name = "rex_sub_821BFC68" } +0x821BFED0 = { name = "rex_sub_821BFED0" } +0x821BFFC8 = { name = "rex_sub_821BFFC8" } +0x821C0060 = { name = "rex_sub_821C0060" } +0x821C0DC8 = { name = "rex_sub_821C0DC8" } +0x821C0EC0 = { name = "rex_sub_821C0EC0" } +0x821C1098 = { name = "rex_sub_821C1098" } +0x821C1158 = { name = "rex_sub_821C1158" } +0x821C1368 = { name = "rex_sub_821C1368" } +0x821C13B8 = { name = "rex_sub_821C13B8" } +0x821C14C8 = { name = "rex_sub_821C14C8" } +0x821C1588 = { name = "rex_sub_821C1588" } +0x821C1770 = { name = "rex_sub_821C1770" } +0x821C18A8 = { name = "rex_sub_821C18A8" } +0x821C1988 = { name = "rex_sub_821C1988" } +0x821C1B48 = { name = "rex_sub_821C1B48" } +0x821C1C00 = { name = "rex_sub_821C1C00" } +0x821C1FD0 = { name = "rex_sub_821C1FD0" } +0x821C2170 = { name = "rex_sub_821C2170" } +0x821C25D8 = { name = "rex_sub_821C25D8" } +0x821C2630 = { name = "rex_sub_821C2630" } +0x821C2688 = { name = "rex_sub_821C2688" } +0x821C26B0 = { name = "rex_sub_821C26B0" } +0x821C26F8 = { name = "rex_sub_821C26F8" } +0x821C2740 = { name = "rex_sub_821C2740" } +0x821C27A0 = { name = "rex_sub_821C27A0" } +0x821C2838 = { name = "rex_sub_821C2838" } +0x821C2888 = { name = "rex_sub_821C2888" } +0x821C2930 = { name = "rex_sub_821C2930" } +0x821C29D0 = { name = "rex_sub_821C29D0" } +0x821C29E0 = { name = "rex_sub_821C29E0" } +0x821C2A58 = { name = "rex_sub_821C2A58" } +0x821C2B10 = { name = "rex_sub_821C2B10" } +0x821C2DC8 = { name = "rex_sub_821C2DC8" } +0x821C2EE0 = { name = "rex_sub_821C2EE0" } +0x821C2FD8 = { name = "rex_sub_821C2FD8" } +0x821C3020 = { name = "rex_sub_821C3020" } +0x821C3118 = { name = "rex_sub_821C3118" } +0x821C3160 = { name = "rex_sub_821C3160" } +0x821C31B0 = { name = "rex_sub_821C31B0" } +0x821C3200 = { name = "rex_sub_821C3200" } +0x821C32A0 = { name = "rex_sub_821C32A0" } +0x821C32F0 = { name = "rex_sub_821C32F0" } +0x821C33C0 = { name = "rex_sub_821C33C0" } +0x821C3448 = { name = "rex_sub_821C3448" } +0x821C36B0 = { name = "rex_sub_821C36B0" } +0x821C3710 = { name = "rex_sub_821C3710" } +0x821C3800 = { name = "rex_sub_821C3800" } +0x821C3C08 = { name = "rex_sub_821C3C08" } +0x821C4050 = { name = "rex_sub_821C4050" } +0x821C4420 = { name = "rex_sub_821C4420" } +0x821C4688 = { name = "rex_sub_821C4688" } +0x821C4C78 = { name = "rex_sub_821C4C78" } +0x821C4FB0 = { name = "rex_sub_821C4FB0" } +0x821C5268 = { name = "rex_sub_821C5268" } +0x821C5708 = { name = "rex_sub_821C5708" } +0x821C59C0 = { name = "rex_sub_821C59C0" } +0x821C5AF8 = { name = "rex_sub_821C5AF8" } +0x821C5C68 = { name = "rex_sub_821C5C68" } +0x821C5D18 = { name = "rex_sub_821C5D18" } +0x821C5FF8 = { name = "rex_sub_821C5FF8" } +0x821C63F0 = { name = "rex_sub_821C63F0" } +0x821C6CC8 = { name = "rex_sub_821C6CC8" } +0x821C72F8 = { name = "rex_sub_821C72F8" } +0x821C7660 = { name = "rex_sub_821C7660" } +0x821C7910 = { name = "rex_sub_821C7910" } +0x821C7B30 = { name = "rex_sub_821C7B30" } +0x821C7E50 = { name = "rex_sub_821C7E50" } +0x821C82F0 = { name = "rex_sub_821C82F0" } +0x821C88C0 = { name = "rex_sub_821C88C0" } +0x821C8FF0 = { name = "rex_sub_821C8FF0" } +0x821C93C8 = { name = "rex_sub_821C93C8" } +0x821C9450 = { name = "rex_sub_821C9450" } +0x821C9808 = { name = "rex_sub_821C9808" } +0x821C9B68 = { name = "rex_sub_821C9B68" } +0x821C9C70 = { name = "rex_sub_821C9C70" } +0x821C9DB0 = { name = "rex_sub_821C9DB0" } +0x821C9FB0 = { name = "rex_sub_821C9FB0" } +0x821CA350 = { name = "rex_sub_821CA350" } +0x821CA458 = { name = "rex_sub_821CA458" } +0x821CA4B8 = { name = "rex_sub_821CA4B8" } +0x821CA500 = { name = "rex_sub_821CA500" } +0x821CA570 = { name = "rex_sub_821CA570" } +0x821CA5C0 = { name = "rex_sub_821CA5C0" } +0x821CA620 = { name = "rex_sub_821CA620" } +0x821CA700 = { name = "rex_sub_821CA700" } +0x821CA750 = { name = "rex_sub_821CA750" } +0x821CA860 = { name = "rex_sub_821CA860" } +0x821CA8C0 = { name = "rex_sub_821CA8C0" } +0x821CA940 = { name = "rex_sub_821CA940" } +0x821CAA88 = { name = "rex_sub_821CAA88" } +0x821CB628 = { name = "rex_sub_821CB628" } +0x821CB750 = { name = "rex_sub_821CB750" } +0x821CBB20 = { name = "rex_sub_821CBB20" } +0x821CBB90 = { name = "rex_sub_821CBB90" } +0x821CBC48 = { name = "rex_sub_821CBC48" } +0x821CBF78 = { name = "rex_sub_821CBF78" } +0x821CC008 = { name = "rex_sub_821CC008" } +0x821CC288 = { name = "rex_sub_821CC288" } +0x821CC370 = { name = "rex_sub_821CC370" } +0x821CC400 = { name = "rex_sub_821CC400" } +0x821CC508 = { name = "rex_sub_821CC508" } +0x821CD080 = { name = "rex_sub_821CD080" } +0x821CD0D0 = { name = "rex_sub_821CD0D0" } +0x821CD168 = { name = "rex_sub_821CD168" } +0x821CD2E8 = { name = "rex_sub_821CD2E8" } +0x821CD548 = { name = "rex_sub_821CD548" } +0x821CD738 = { name = "rex_sub_821CD738" } +0x821CD9D8 = { name = "rex_sub_821CD9D8" } +0x821CDB08 = { name = "rex_sub_821CDB08" } +0x821CDC08 = { name = "rex_sub_821CDC08" } +0x821CDD38 = { name = "rex_sub_821CDD38" } +0x821CDE38 = { name = "rex_sub_821CDE38" } +0x821CE068 = { name = "rex_sub_821CE068" } +0x821CE0C0 = { name = "rex_sub_821CE0C0" } +0x821CE1A0 = { name = "rex_sub_821CE1A0" } +0x821CE520 = { name = "rex_sub_821CE520" } +0x821CE6C0 = { name = "rex_sub_821CE6C0" } +0x821CE8E0 = { name = "rex_sub_821CE8E0" } +0x821CE9A0 = { name = "rex_sub_821CE9A0" } +0x821CEDC0 = { name = "rex_sub_821CEDC0" } +0x821CEEF0 = { name = "rex_sub_821CEEF0" } +0x821CF008 = { name = "rex_sub_821CF008" } +0x821CFA20 = { name = "rex_sub_821CFA20" } +0x821CFC08 = { name = "rex_sub_821CFC08" } +0x821CFC70 = { name = "rex_sub_821CFC70" } +0x821CFCE0 = { name = "rex_sub_821CFCE0" } +0x821CFD50 = { name = "rex_sub_821CFD50" } +0x821CFDD8 = { name = "rex_sub_821CFDD8" } +0x821CFE50 = { name = "rex_sub_821CFE50" } +0x821CFEB8 = { name = "rex_sub_821CFEB8" } +0x821CFF10 = { name = "rex_sub_821CFF10" } +0x821D0148 = { name = "rex_sub_821D0148" } +0x821D0388 = { name = "rex_sub_821D0388" } +0x821D0500 = { name = "rex_sub_821D0500" } +0x821D0588 = { name = "rex_sub_821D0588" } +0x821D06A0 = { name = "rex_sub_821D06A0" } +0x821D06E8 = { name = "rex_sub_821D06E8" } +0x821D07D8 = { name = "rex_sub_821D07D8" } +0x821D0B38 = { name = "rex_sub_821D0B38" } +0x821D0C90 = { name = "rex_sub_821D0C90" } +0x821D0CD8 = { name = "rex_sub_821D0CD8" } +0x821D0D78 = { name = "rex_sub_821D0D78" } +0x821D0F30 = { name = "rex_sub_821D0F30" } +0x821D0F78 = { name = "rex_sub_821D0F78" } +0x821D1058 = { name = "rex_sub_821D1058" } +0x821D10A0 = { name = "rex_sub_821D10A0" } +0x821D10E8 = { name = "rex_sub_821D10E8" } +0x821D1148 = { name = "rex_sub_821D1148" } +0x821D1190 = { name = "rex_sub_821D1190" } +0x821D15B8 = { name = "rex_sub_821D15B8" } +0x821D1688 = { name = "rex_sub_821D1688" } +0x821D1778 = { name = "rex_sub_821D1778" } +0x821D1950 = { name = "rex_sub_821D1950" } +0x821D1B90 = { name = "rex_sub_821D1B90" } +0x821D1BA8 = { name = "rex_sub_821D1BA8" } +0x821D1C00 = { name = "rex_sub_821D1C00" } +0x821D1C50 = { name = "rex_sub_821D1C50" } +0x821D1CD0 = { name = "rex_sub_821D1CD0" } +0x821D1D30 = { name = "rex_sub_821D1D30" } +0x821D1E38 = { name = "rex_sub_821D1E38" } +0x821D2040 = { name = "rex_sub_821D2040" } +0x821D20B8 = { name = "rex_sub_821D20B8" } +0x821D2138 = { name = "rex_sub_821D2138" } +0x821D21C8 = { name = "rex_sub_821D21C8" } +0x821D2240 = { name = "rex_sub_821D2240" } +0x821D22C8 = { name = "rex_sub_821D22C8" } +0x821D2490 = { name = "rex_sub_821D2490" } +0x821D2670 = { name = "rex_sub_821D2670" } +0x821D2858 = { name = "rex_sub_821D2858" } +0x821D28C8 = { name = "rex_sub_821D28C8" } +0x821D2A18 = { name = "rex_sub_821D2A18" } +0x821D2B40 = { name = "rex_sub_821D2B40" } +0x821D2C40 = { name = "rex_sub_821D2C40" } +0x821D2D78 = { name = "rex_sub_821D2D78" } +0x821D2DF0 = { name = "rex_sub_821D2DF0" } +0x821D2EE8 = { name = "rex_sub_821D2EE8" } +0x821D3028 = { name = "rex_sub_821D3028" } +0x821D30D8 = { name = "rex_sub_821D30D8" } +0x821D3278 = { name = "rex_sub_821D3278" } +0x821D32E0 = { name = "rex_sub_821D32E0" } +0x821D3398 = { name = "rex_sub_821D3398" } +0x821D3450 = { name = "rex_sub_821D3450" } +0x821D3510 = { name = "rex_sub_821D3510" } +0x821D35C8 = { name = "rex_sub_821D35C8" } +0x821D3680 = { name = "rex_sub_821D3680" } +0x821D3738 = { name = "rex_sub_821D3738" } +0x821D37F8 = { name = "rex_sub_821D37F8" } +0x821D38D0 = { name = "rex_sub_821D38D0" } +0x821D3930 = { name = "rex_sub_821D3930" } +0x821D3990 = { name = "rex_sub_821D3990" } +0x821D3B28 = { name = "rex_sub_821D3B28" } +0x821D3B80 = { name = "rex_sub_821D3B80" } +0x821D3BE8 = { name = "rex_sub_821D3BE8" } +0x821D3CB8 = { name = "rex_sub_821D3CB8" } +0x821D3D50 = { name = "rex_sub_821D3D50" } +0x821D3E10 = { name = "rex_sub_821D3E10" } +0x821D3EA0 = { name = "rex_sub_821D3EA0" } +0x821D3F10 = { name = "rex_sub_821D3F10" } +0x821D3FB8 = { name = "rex_sub_821D3FB8" } +0x821D4078 = { name = "rex_sub_821D4078" } +0x821D4138 = { name = "rex_sub_821D4138" } +0x821D4920 = { name = "rex_sub_821D4920" } +0x821D4968 = { name = "rex_sub_821D4968" } +0x821D4978 = { name = "rex_sub_821D4978" } +0x821D4988 = { name = "rex_sub_821D4988" } +0x821D4A28 = { name = "rex_sub_821D4A28" } +0x821D4A78 = { name = "rex_sub_821D4A78" } +0x821D4B20 = { name = "rex_sub_821D4B20" } +0x821D4B30 = { name = "rex_sub_821D4B30" } +0x821D4C20 = { name = "rex_sub_821D4C20" } +0x821D4CD8 = { name = "rex_sub_821D4CD8" } +0x821D4DE8 = { name = "rex_sub_821D4DE8" } +0x821D4F20 = { name = "rex_sub_821D4F20" } +0x821D5058 = { name = "rex_sub_821D5058" } +0x821D50D0 = { name = "rex_sub_821D50D0" } +0x821D5118 = { name = "rex_sub_821D5118" } +0x821D51C0 = { name = "rex_sub_821D51C0" } +0x821D54E8 = { name = "rex_sub_821D54E8" } +0x821D5600 = { name = "rex_sub_821D5600" } +0x821D5F48 = { name = "rex_sub_821D5F48" } +0x821D6C20 = { name = "rex_sub_821D6C20" } +0x821D7390 = { name = "rex_sub_821D7390" } +0x821D74A8 = { name = "rex_sub_821D74A8" } +0x821D7568 = { name = "rex_sub_821D7568" } +0x821D75F0 = { name = "rex_sub_821D75F0" } +0x821D7708 = { name = "rex_sub_821D7708" } +0x821D77C8 = { name = "rex_sub_821D77C8" } +0x821D7898 = { name = "rex_sub_821D7898" } +0x821D7950 = { name = "rex_sub_821D7950" } +0x821D7A38 = { name = "rex_sub_821D7A38" } +0x821D7AE0 = { name = "rex_sub_821D7AE0" } +0x821D7CD0 = { name = "rex_sub_821D7CD0" } +0x821D7DE0 = { name = "rex_sub_821D7DE0" } +0x821D7EE0 = { name = "rex_sub_821D7EE0" } +0x821D7F28 = { name = "rex_sub_821D7F28" } +0x821D8028 = { name = "rex_sub_821D8028" } +0x821D8080 = { name = "rex_sub_821D8080" } +0x821D81B8 = { name = "rex_sub_821D81B8" } +0x821D8260 = { name = "rex_sub_821D8260" } +0x821D82E0 = { name = "rex_sub_821D82E0" } +0x821D8390 = { name = "rex_sub_821D8390" } +0x821D8430 = { name = "rex_sub_821D8430" } +0x821D8490 = { name = "rex_sub_821D8490" } +0x821D8518 = { name = "rex_sub_821D8518" } +0x821D85D8 = { name = "rex_sub_821D85D8" } +0x821D8728 = { name = "rex_sub_821D8728" } +0x821D87B0 = { name = "rex_sub_821D87B0" } +0x821D88C0 = { name = "rex_sub_821D88C0" } +0x821D8B40 = { name = "rex_sub_821D8B40" } +0x821D8B80 = { name = "rex_sub_821D8B80" } +0x821D8CE8 = { name = "rex_sub_821D8CE8" } +0x821D8D98 = { name = "rex_sub_821D8D98" } +0x821D8E40 = { name = "rex_sub_821D8E40" } +0x821D8FD0 = { name = "rex_sub_821D8FD0" } +0x821D9140 = { name = "rex_sub_821D9140" } +0x821D9498 = { name = "rex_sub_821D9498" } +0x821D94B8 = { name = "rex_sub_821D94B8" } +0x821D95C8 = { name = "rex_sub_821D95C8" } +0x821D9740 = { name = "rex_sub_821D9740" } +0x821D97B0 = { name = "rex_sub_821D97B0" } +0x821D9C88 = { name = "rex_sub_821D9C88" } +0x821D9C90 = { name = "rex_sub_821D9C90" } +0x821D9D38 = { name = "rex_sub_821D9D38" } +0x821D9EF8 = { name = "rex_sub_821D9EF8" } +0x821D9FF8 = { name = "rex_sub_821D9FF8" } +0x821DA0D8 = { name = "rex_sub_821DA0D8" } +0x821DA4D8 = { name = "rex_sub_821DA4D8" } +0x821DA600 = { name = "rex_sub_821DA600" } +0x821DA698 = { name = "rex_sub_821DA698" } +0x821DA978 = { name = "rex_sub_821DA978" } +0x821DABE0 = { name = "rex_sub_821DABE0" } +0x821DAC10 = { name = "rex_sub_821DAC10" } +0x821DAC40 = { name = "rex_sub_821DAC40" } +0x821DAC78 = { name = "rex_sub_821DAC78" } +0x821DAD08 = { name = "rex_sub_821DAD08" } +0x821DAD98 = { name = "rex_sub_821DAD98" } +0x821DAE28 = { name = "rex_sub_821DAE28" } +0x821DAEB8 = { name = "rex_sub_821DAEB8" } +0x821DAF28 = { name = "rex_sub_821DAF28" } +0x821DAF98 = { name = "rex_sub_821DAF98" } +0x821DB008 = { name = "rex_sub_821DB008" } +0x821DB0A0 = { name = "rex_sub_821DB0A0" } +0x821DB108 = { name = "rex_sub_821DB108" } +0x821DB138 = { name = "rex_sub_821DB138" } +0x821DB258 = { name = "rex_sub_821DB258" } +0x821DB290 = { name = "rex_sub_821DB290" } +0x821DB300 = { name = "rex_sub_821DB300" } +0x821DB330 = { name = "rex_sub_821DB330" } +0x821DB370 = { name = "rex_sub_821DB370" } +0x821DB3A0 = { name = "rex_sub_821DB3A0" } +0x821DB3D8 = { name = "rex_sub_821DB3D8" } +0x821DB418 = { name = "rex_sub_821DB418" } +0x821DB450 = { name = "rex_sub_821DB450" } +0x821DB480 = { name = "rex_sub_821DB480" } +0x821DB4B8 = { name = "rex_sub_821DB4B8" } +0x821DB4F0 = { name = "rex_sub_821DB4F0" } +0x821DB520 = { name = "rex_sub_821DB520" } +0x821DB550 = { name = "rex_sub_821DB550" } +0x821DB588 = { name = "rex_sub_821DB588" } +0x821DB5C0 = { name = "rex_sub_821DB5C0" } +0x821DB5F0 = { name = "rex_sub_821DB5F0" } +0x821DB610 = { name = "rex_sub_821DB610" } +0x821DB630 = { name = "rex_sub_821DB630" } +0x821DB650 = { name = "rex_sub_821DB650" } +0x821DB670 = { name = "rex_sub_821DB670" } +0x821DB690 = { name = "rex_sub_821DB690" } +0x821DB6B0 = { name = "rex_sub_821DB6B0" } +0x821DB700 = { name = "rex_sub_821DB700" } +0x821DB718 = { name = "rex_sub_821DB718" } +0x821DB7E0 = { name = "rex_sub_821DB7E0" } +0x821DB888 = { name = "rex_sub_821DB888" } +0x821DB8B8 = { name = "rex_sub_821DB8B8" } +0x821DB8D8 = { name = "rex_sub_821DB8D8" } +0x821DB918 = { name = "rex_sub_821DB918" } +0x821DB958 = { name = "rex_sub_821DB958" } +0x821DB998 = { name = "rex_sub_821DB998" } +0x821DB9D8 = { name = "rex_sub_821DB9D8" } +0x821DB9E8 = { name = "rex_sub_821DB9E8" } +0x821DBA48 = { name = "rex_sub_821DBA48" } +0x821DBAA0 = { name = "rex_sub_821DBAA0" } +0x821DBAF8 = { name = "rex_sub_821DBAF8" } +0x821DBB18 = { name = "rex_sub_821DBB18" } +0x821DBB40 = { name = "rex_sub_821DBB40" } +0x821DBB68 = { name = "rex_sub_821DBB68" } +0x821DBB90 = { name = "rex_sub_821DBB90" } +0x821DBBB8 = { name = "rex_sub_821DBBB8" } +0x821DBBE0 = { name = "rex_sub_821DBBE0" } +0x821DBC08 = { name = "rex_sub_821DBC08" } +0x821DBC28 = { name = "rex_sub_821DBC28" } +0x821DBC48 = { name = "rex_sub_821DBC48" } +0x821DBC70 = { name = "rex_sub_821DBC70" } +0x821DBC98 = { name = "rex_sub_821DBC98" } +0x821DBCC0 = { name = "rex_sub_821DBCC0" } +0x821DBCE8 = { name = "rex_sub_821DBCE8" } +0x821DBD10 = { name = "rex_sub_821DBD10" } +0x821DBD38 = { name = "rex_sub_821DBD38" } +0x821DBE58 = { name = "rex_sub_821DBE58" } +0x821DBEA8 = { name = "rex_sub_821DBEA8" } +0x821DBF58 = { name = "rex_sub_821DBF58" } +0x821DC008 = { name = "rex_sub_821DC008" } +0x821DC0B8 = { name = "rex_sub_821DC0B8" } +0x821DC168 = { name = "rex_sub_821DC168" } +0x821DC1A0 = { name = "rex_sub_821DC1A0" } +0x821DC1D8 = { name = "rex_sub_821DC1D8" } +0x821DC210 = { name = "rex_sub_821DC210" } +0x821DC248 = { name = "rex_sub_821DC248" } +0x821DC278 = { name = "rex_sub_821DC278" } +0x821DC2A0 = { name = "rex_sub_821DC2A0" } +0x821DC2D0 = { name = "rex_sub_821DC2D0" } +0x821DC308 = { name = "rex_sub_821DC308" } +0x821DC338 = { name = "rex_sub_821DC338" } +0x821DC368 = { name = "rex_sub_821DC368" } +0x821DC390 = { name = "rex_sub_821DC390" } +0x821DC3C0 = { name = "rex_sub_821DC3C0" } +0x821DC3F0 = { name = "rex_sub_821DC3F0" } +0x821DC458 = { name = "rex_sub_821DC458" } +0x821DC488 = { name = "rex_sub_821DC488" } +0x821DC4B8 = { name = "rex_sub_821DC4B8" } +0x821DC4E8 = { name = "rex_sub_821DC4E8" } +0x821DC508 = { name = "rex_sub_821DC508" } +0x821DC518 = { name = "rex_sub_821DC518" } +0x821DC538 = { name = "rex_sub_821DC538" } +0x821DC630 = { name = "rex_sub_821DC630" } +0x821DC6C8 = { name = "rex_sub_821DC6C8" } +0x821DC7C0 = { name = "rex_sub_821DC7C0" } +0x821DC8B0 = { name = "rex_sub_821DC8B0" } +0x821DC948 = { name = "rex_sub_821DC948" } +0x821DC9C0 = { name = "rex_sub_821DC9C0" } +0x821DCA68 = { name = "rex_sub_821DCA68" } +0x821DCB08 = { name = "rex_sub_821DCB08" } +0x821DCB88 = { name = "rex_sub_821DCB88" } +0x821DCF28 = { name = "rex_sub_821DCF28" } +0x821DD028 = { name = "rex_sub_821DD028" } +0x821DD0A8 = { name = "rex_sub_821DD0A8" } +0x821DD1C8 = { name = "rex_sub_821DD1C8" } +0x821DD258 = { name = "rex_sub_821DD258" } +0x821DD260 = { name = "rex_sub_821DD260" } +0x821DD5C8 = { name = "rex_sub_821DD5C8" } +0x821DD8A0 = { name = "rex_sub_821DD8A0" } +0x821DD968 = { name = "rex_sub_821DD968" } +0x821DDA30 = { name = "rex_sub_821DDA30" } +0x821DDA88 = { name = "rex_sub_821DDA88" } +0x821DDC58 = { name = "rex_sub_821DDC58" } +0x821DDD70 = { name = "rex_sub_821DDD70" } +0x821DDF08 = { name = "rex_sub_821DDF08" } +0x821DDFF0 = { name = "rex_sub_821DDFF0" } +0x821DE0D8 = { name = "rex_sub_821DE0D8" } +0x821DE138 = { name = "rex_sub_821DE138" } +0x821DE198 = { name = "rex_sub_821DE198" } +0x821DE1F0 = { name = "rex_sub_821DE1F0" } +0x821DE248 = { name = "rex_sub_821DE248" } +0x821DE298 = { name = "rex_sub_821DE298" } +0x821DE2D0 = { name = "rex_sub_821DE2D0" } +0x821DE308 = { name = "rex_sub_821DE308" } +0x821DE4C8 = { name = "rex_sub_821DE4C8" } +0x821DE508 = { name = "rex_sub_821DE508" } +0x821DE600 = { name = "rex_sub_821DE600" } +0x821DE7D0 = { name = "rex_sub_821DE7D0" } +0x821DE7E8 = { name = "rex_sub_821DE7E8" } +0x821DE8D8 = { name = "rex_sub_821DE8D8" } +0x821DE960 = { name = "rex_sub_821DE960" } +0x821DEA38 = { name = "rex_sub_821DEA38" } +0x821DEA48 = { name = "rex_sub_821DEA48" } +0x821DEED0 = { name = "rex_sub_821DEED0" } +0x821DEF18 = { name = "rex_sub_821DEF18" } +0x821DF300 = { name = "rex_sub_821DF300" } +0x821DF758 = { name = "rex_sub_821DF758" } +0x821DF7F0 = { name = "rex_sub_821DF7F0" } +0x821DF878 = { name = "rex_sub_821DF878" } +0x821DF998 = { name = "rex_sub_821DF998" } +0x821DFD08 = { name = "rex_sub_821DFD08" } +0x821DFDA0 = { name = "rex_sub_821DFDA0" } +0x821DFEF8 = { name = "rex_sub_821DFEF8" } +0x821E02C0 = { name = "rex_sub_821E02C0" } +0x821E03C0 = { name = "rex_sub_821E03C0" } +0x821E0830 = { name = "rex_sub_821E0830" } +0x821E0B40 = { name = "rex_sub_821E0B40" } +0x821E0D98 = { name = "rex_sub_821E0D98" } +0x821E0DA8 = { name = "rex_sub_821E0DA8" } +0x821E0EC8 = { name = "rex_sub_821E0EC8" } +0x821E1030 = { name = "rex_sub_821E1030" } +0x821E10C8 = { name = "rex_sub_821E10C8" } +0x821E1248 = { name = "rex_sub_821E1248" } +0x821E1538 = { name = "rex_sub_821E1538" } +0x821E1788 = { name = "rex_sub_821E1788" } +0x821E1CF0 = { name = "rex_sub_821E1CF0" } +0x821E2380 = { name = "rex_sub_821E2380" } +0x821E2440 = { name = "rex_sub_821E2440" } +0x821E2568 = { name = "rex_sub_821E2568" } +0x821E2610 = { name = "rex_sub_821E2610" } +0x821E2758 = { name = "rex_sub_821E2758" } +0x821E2AE0 = { name = "rex_sub_821E2AE0" } +0x821E2BB8 = { name = "rex_sub_821E2BB8" } +0x821E3A08 = { name = "rex_sub_821E3A08" } +0x821E3C08 = { name = "rex_sub_821E3C08" } +0x821E3E98 = { name = "rex_sub_821E3E98" } +0x821E3FC0 = { name = "rex_sub_821E3FC0" } +0x821E4038 = { name = "rex_sub_821E4038" } +0x821E40B8 = { name = "rex_sub_821E40B8" } +0x821E4148 = { name = "rex_sub_821E4148" } +0x821E4210 = { name = "rex_sub_821E4210" } +0x821E4260 = { name = "rex_sub_821E4260" } +0x821E4270 = { name = "rex_sub_821E4270" } +0x821E4320 = { name = "rex_sub_821E4320" } +0x821E4368 = { name = "rex_sub_821E4368" } +0x821E4378 = { name = "rex_sub_821E4378" } +0x821E44C0 = { name = "rex_sub_821E44C0" } +0x821E4630 = { name = "rex_sub_821E4630" } +0x821E4AD0 = { name = "rex_sub_821E4AD0" } +0x821E4F88 = { name = "rex_sub_821E4F88" } +0x821E4FF0 = { name = "rex_sub_821E4FF0" } +0x821E5038 = { name = "rex_sub_821E5038" } +0x821E5150 = { name = "rex_sub_821E5150" } +0x821E51F8 = { name = "rex_sub_821E51F8" } +0x821E52B0 = { name = "rex_sub_821E52B0" } +0x821E54B8 = { name = "rex_sub_821E54B8" } +0x821E5650 = { name = "rex_sub_821E5650" } +0x821E5810 = { name = "rex_sub_821E5810" } +0x821E58D8 = { name = "rex_sub_821E58D8" } +0x821E59C8 = { name = "rex_sub_821E59C8" } +0x821E5B70 = { name = "rex_sub_821E5B70" } +0x821E5D60 = { name = "rex_sub_821E5D60" } +0x821E5E48 = { name = "rex_sub_821E5E48" } +0x821E5FD0 = { name = "rex_sub_821E5FD0" } +0x821E60A8 = { name = "rex_sub_821E60A8" } +0x821E61A8 = { name = "rex_sub_821E61A8" } +0x821E6280 = { name = "rex_sub_821E6280" } +0x821E63F0 = { name = "rex_sub_821E63F0" } +0x821E64A8 = { name = "rex_sub_821E64A8" } +0x821E6520 = { name = "rex_sub_821E6520" } +0x821E6558 = { name = "rex_sub_821E6558" } +0x821E65B0 = { name = "rex_sub_821E65B0" } +0x821E6A08 = { name = "rex_sub_821E6A08" } +0x821E6AC8 = { name = "rex_sub_821E6AC8" } +0x821E6BA0 = { name = "rex_sub_821E6BA0" } +0x821E6CE8 = { name = "rex_sub_821E6CE8" } +0x821E6D40 = { name = "rex_sub_821E6D40" } +0x821E6D80 = { name = "rex_sub_821E6D80" } +0x821E6D90 = { name = "rex_sub_821E6D90" } +0x821E6E08 = { name = "rex_sub_821E6E08" } +0x821E6F20 = { name = "rex_sub_821E6F20" } +0x821E6F90 = { name = "rex_sub_821E6F90" } +0x821E7678 = { name = "rex_sub_821E7678" } +0x821E8CB0 = { name = "rex_sub_821E8CB0" } +0x821E8CE8 = { name = "rex_sub_821E8CE8" } +0x821E8D40 = { name = "rex_sub_821E8D40" } +0x821E8DB8 = { name = "rex_sub_821E8DB8" } +0x821E9078 = { name = "rex_sub_821E9078" } +0x821E9188 = { name = "rex_sub_821E9188" } +0x821E9E98 = { name = "rex_sub_821E9E98" } +0x821E9F50 = { name = "rex_sub_821E9F50" } +0x821EA2F8 = { name = "rex_sub_821EA2F8" } +0x821EA718 = { name = "rex_sub_821EA718" } +0x821EB028 = { name = "rex_sub_821EB028" } +0x821EB110 = { name = "rex_sub_821EB110" } +0x821EB1D8 = { name = "rex_sub_821EB1D8" } +0x821EB2A0 = { name = "rex_sub_821EB2A0" } +0x821EB378 = { name = "rex_sub_821EB378" } +0x821EB428 = { name = "rex_sub_821EB428" } +0x821EB6E0 = { name = "rex_sub_821EB6E0" } +0x821EB778 = { name = "rex_sub_821EB778" } +0x821EB8B8 = { name = "rex_sub_821EB8B8" } +0x821EB998 = { name = "rex_sub_821EB998" } +0x821EBA88 = { name = "rex_sub_821EBA88" } +0x821EBB40 = { name = "rex_sub_821EBB40" } +0x821EBD40 = { name = "rex_sub_821EBD40" } +0x821EC0D8 = { name = "rex_sub_821EC0D8" } +0x821EC198 = { name = "rex_sub_821EC198" } +0x821EC318 = { name = "rex_sub_821EC318" } +0x821EC478 = { name = "rex_sub_821EC478" } +0x821EC5D8 = { name = "rex_sub_821EC5D8" } +0x821ECBE8 = { name = "rex_sub_821ECBE8" } +0x821ECCB8 = { name = "rex_sub_821ECCB8" } +0x821ECD70 = { name = "rex_sub_821ECD70" } +0x821ECEB0 = { name = "rex_sub_821ECEB0" } +0x821ED020 = { name = "rex_sub_821ED020" } +0x821ED0D0 = { name = "rex_sub_821ED0D0" } +0x821ED210 = { name = "rex_sub_821ED210" } +0x821EDA28 = { name = "rex_sub_821EDA28" } +0x821EDB60 = { name = "rex_sub_821EDB60" } +0x821EDD68 = { name = "rex_sub_821EDD68" } +0x821EDE08 = { name = "rex_sub_821EDE08" } +0x821EDE80 = { name = "rex_sub_821EDE80" } +0x821EE0F0 = { name = "rex_sub_821EE0F0" } +0x821EE1A8 = { name = "rex_sub_821EE1A8" } +0x821EE270 = { name = "rex_sub_821EE270" } +0x821EE3A8 = { name = "rex_sub_821EE3A8" } +0x821EE4A0 = { name = "rex_sub_821EE4A0" } +0x821EE5A8 = { name = "rex_sub_821EE5A8" } +0x821EE920 = { name = "rex_sub_821EE920" } +0x821EEAC8 = { name = "rex_sub_821EEAC8" } +0x821EEDE0 = { name = "rex_sub_821EEDE0" } +0x821EEED0 = { name = "rex_sub_821EEED0" } +0x821EEF58 = { name = "rex_sub_821EEF58" } +0x821EF148 = { name = "rex_sub_821EF148" } +0x821EF308 = { name = "rex_sub_821EF308" } +0x821EF458 = { name = "rex_sub_821EF458" } +0x821EF4B8 = { name = "rex_sub_821EF4B8" } +0x821EF4C8 = { name = "rex_sub_821EF4C8" } +0x821EF4E0 = { name = "rex_sub_821EF4E0" } +0x821EF560 = { name = "rex_sub_821EF560" } +0x821EF7C8 = { name = "rex_sub_821EF7C8" } +0x821EF878 = { name = "rex_sub_821EF878" } +0x821EFAF0 = { name = "rex_sub_821EFAF0" } +0x821EFBE0 = { name = "rex_sub_821EFBE0" } +0x821EFCE0 = { name = "rex_sub_821EFCE0" } +0x821EFE78 = { name = "rex_sub_821EFE78" } +0x821F0020 = { name = "rex_sub_821F0020" } +0x821F00C0 = { name = "rex_sub_821F00C0" } +0x821F01D0 = { name = "rex_sub_821F01D0" } +0x821F03A8 = { name = "rex_sub_821F03A8" } +0x821F03B0 = { name = "rex_sub_821F03B0" } +0x821F0AC8 = { name = "rex_sub_821F0AC8" } +0x821F0AD0 = { name = "rex_sub_821F0AD0" } +0x821F0DB0 = { name = "rex_sub_821F0DB0" } +0x821F1068 = { name = "rex_sub_821F1068" } +0x821F1108 = { name = "rex_sub_821F1108" } +0x821F1180 = { name = "rex_sub_821F1180" } +0x821F11A8 = { name = "rex_sub_821F11A8" } +0x821F13D0 = { name = "rex_sub_821F13D0" } +0x821F1678 = { name = "rex_sub_821F1678" } +0x821F1848 = { name = "rex_sub_821F1848" } +0x821F1948 = { name = "rex_sub_821F1948" } +0x821F1A30 = { name = "rex_sub_821F1A30" } +0x821F1C60 = { name = "rex_sub_821F1C60" } +0x821F20A8 = { name = "rex_sub_821F20A8" } +0x821F2248 = { name = "rex_sub_821F2248" } +0x821F2338 = { name = "rex_sub_821F2338" } +0x821F28F8 = { name = "rex_sub_821F28F8" } +0x821F2BC8 = { name = "rex_sub_821F2BC8" } +0x821F3110 = { name = "rex_sub_821F3110" } +0x821F3238 = { name = "rex_sub_821F3238" } +0x821F3408 = { name = "rex_sub_821F3408" } +0x821F3540 = { name = "rex_sub_821F3540" } +0x821F3628 = { name = "rex_sub_821F3628" } +0x821F36F0 = { name = "rex_sub_821F36F0" } +0x821F3710 = { name = "rex_sub_821F3710" } +0x821F3810 = { name = "rex_sub_821F3810" } +0x821F3B28 = { name = "rex_sub_821F3B28" } +0x821F3BD8 = { name = "rex_sub_821F3BD8" } +0x821F3BE0 = { name = "rex_sub_821F3BE0" } +0x821F3BF0 = { name = "rex_sub_821F3BF0" } +0x821F3DA0 = { name = "rex_sub_821F3DA0" } +0x821F3E20 = { name = "rex_sub_821F3E20" } +0x821F3EA0 = { name = "rex_sub_821F3EA0" } +0x821F3F18 = { name = "rex_sub_821F3F18" } +0x821F3F30 = { name = "rex_sub_821F3F30" } +0x821F3FE0 = { name = "rex_sub_821F3FE0" } +0x821F3FE8 = { name = "rex_sub_821F3FE8" } +0x821F4078 = { name = "rex_sub_821F4078" } +0x821F4110 = { name = "rex_sub_821F4110" } +0x821F4128 = { name = "rex_sub_821F4128" } +0x821F4130 = { name = "rex_sub_821F4130" } +0x821F4170 = { name = "rex_sub_821F4170" } +0x821F4210 = { name = "rex_sub_821F4210" } +0x821F4248 = { name = "rex_sub_821F4248" } +0x821F42C8 = { name = "rex_sub_821F42C8" } +0x821F4360 = { name = "rex_sub_821F4360" } +0x821F4368 = { name = "rex_sub_821F4368" } +0x821F4408 = { name = "rex_sub_821F4408" } +0x821F4428 = { name = "rex_sub_821F4428" } +0x821F44B8 = { name = "rex_sub_821F44B8" } +0x821F4518 = { name = "rex_sub_821F4518" } +0x821F4578 = { name = "rex_sub_821F4578" } +0x821F4590 = { name = "rex_sub_821F4590" } +0x821F4618 = { name = "rex_sub_821F4618" } +0x821F4678 = { name = "rex_sub_821F4678" } +0x821F4688 = { name = "rex_sub_821F4688" } +0x821F46A0 = { name = "rex_sub_821F46A0" } +0x821F46C0 = { name = "rex_sub_821F46C0" } +0x821F4780 = { name = "rex_sub_821F4780" } +0x821F47A8 = { name = "rex_sub_821F47A8" } +0x821F47D0 = { name = "rex_sub_821F47D0" } +0x821F47D8 = { name = "rex_sub_821F47D8" } +0x821F4820 = { name = "rex_sub_821F4820" } +0x821F48A0 = { name = "rex_sub_821F48A0" } +0x821F48B8 = { name = "rex_sub_821F48B8" } +0x821F4AB8 = { name = "rex_sub_821F4AB8" } +0x821F4B48 = { name = "rex_sub_821F4B48" } +0x821F4B70 = { name = "rex_sub_821F4B70" } +0x821F4B78 = { name = "rex_sub_821F4B78" } +0x821F4C10 = { name = "rex_sub_821F4C10" } +0x821F4E08 = { name = "rex_sub_821F4E08" } +0x821F4E70 = { name = "rex_sub_821F4E70" } +0x821F4FF8 = { name = "rex_sub_821F4FF8" } +0x821F50A0 = { name = "rex_sub_821F50A0" } +0x821F50A8 = { name = "rex_sub_821F50A8" } +0x821F50F8 = { name = "rex_sub_821F50F8" } +0x821F5190 = { name = "rex_sub_821F5190" } +0x821F51D8 = { name = "rex_sub_821F51D8" } +0x821F5268 = { name = "rex_sub_821F5268" } +0x821F52C0 = { name = "rex_sub_821F52C0" } +0x821F5430 = { name = "rex_sub_821F5430" } +0x821F54C8 = { name = "rex_sub_821F54C8" } +0x821F5508 = { name = "rex_sub_821F5508" } +0x821F5630 = { name = "rex_sub_821F5630" } +0x821F56A0 = { name = "rex_sub_821F56A0" } +0x821F5758 = { name = "rex_sub_821F5758" } +0x821F5798 = { name = "rex_sub_821F5798" } +0x821F5830 = { name = "rex_sub_821F5830" } +0x821F5868 = { name = "rex_sub_821F5868" } +0x821F58D8 = { name = "rex_sub_821F58D8" } +0x821F5988 = { name = "rex_sub_821F5988" } +0x821F5990 = { name = "rex_sub_821F5990" } +0x821F59D0 = { name = "rex_sub_821F59D0" } +0x821F59E0 = { name = "rex_sub_821F59E0" } +0x821F5A78 = { name = "rex_sub_821F5A78" } +0x821F5A98 = { name = "rex_sub_821F5A98" } +0x821F5B18 = { name = "rex_sub_821F5B18" } +0x821F5BA8 = { name = "rex_sub_821F5BA8" } +0x821F5C60 = { name = "rex_sub_821F5C60" } +0x821F5CE8 = { name = "rex_sub_821F5CE8" } +0x821F60C0 = { name = "rex_sub_821F60C0" } +0x821F6180 = { name = "rex_sub_821F6180" } +0x821F64A4 = { name = "rex_sub_821F64A4" } +0x821F6970 = { name = "rex_sub_821F6970" } +0x821F6D00 = { name = "rex_sub_821F6D00" } +0x821F7220 = { name = "rex_sub_821F7220" } +0x821F7398 = { name = "rex_sub_821F7398" } +0x821F73F8 = { name = "rex_sub_821F73F8" } +0x821F7498 = { name = "rex_sub_821F7498" } +0x821F7528 = { name = "rex_sub_821F7528" } +0x821F7530 = { name = "rex_sub_821F7530" } +0x821F7538 = { name = "rex_sub_821F7538" } +0x821F75A0 = { name = "rex_sub_821F75A0" } +0x821F75B8 = { name = "rex_sub_821F75B8" } +0x821F75F0 = { name = "rex_sub_821F75F0" } +0x821F7610 = { name = "rex_sub_821F7610" } +0x821F7668 = { name = "rex_sub_821F7668" } +0x821F76D0 = { name = "rex_sub_821F76D0" } +0x821F7808 = { name = "rex_sub_821F7808" } +0x821F7858 = { name = "rex_sub_821F7858" } +0x821F78C0 = { name = "rex_sub_821F78C0" } +0x821F7940 = { name = "rex_sub_821F7940" } +0x821F79F8 = { name = "rex_sub_821F79F8" } +0x821F7A18 = { name = "rex_sub_821F7A18" } +0x821F7A88 = { name = "rex_sub_821F7A88" } +0x821F7AD0 = { name = "rex_sub_821F7AD0" } +0x821F7B18 = { name = "rex_sub_821F7B18" } +0x821F7B28 = { name = "rex_sub_821F7B28" } +0x821F7C08 = { name = "rex_sub_821F7C08" } +0x821F7C80 = { name = "rex_sub_821F7C80" } +0x821F7CE0 = { name = "rex_sub_821F7CE0" } +0x821F7D50 = { name = "rex_sub_821F7D50" } +0x821F7E28 = { name = "rex_sub_821F7E28" } +0x821F7E80 = { name = "rex_sub_821F7E80" } +0x821F8008 = { name = "rex_sub_821F8008" } +0x821F8088 = { name = "rex_sub_821F8088" } +0x821F8248 = { name = "rex_sub_821F8248" } +0x821F8368 = { name = "rex_sub_821F8368" } +0x821F85F8 = { name = "rex_sub_821F85F8" } +0x821F8A00 = { name = "rex_sub_821F8A00" } +0x821F8B38 = { name = "rex_sub_821F8B38" } +0x821F90A8 = { name = "rex_sub_821F90A8" } +0x821F9150 = { name = "rex_sub_821F9150" } +0x821F92B8 = { name = "rex_sub_821F92B8" } +0x821F94F8 = { name = "rex_sub_821F94F8" } +0x821F9860 = { name = "rex_sub_821F9860" } +0x821F9E10 = { name = "rex_sub_821F9E10" } +0x821FA6A4 = { name = "rex_sub_821FA6A4" } +0x821FA6F8 = { name = "rex_sub_821FA6F8" } +0x821FA98C = { name = "rex_sub_821FA98C" } +0x821FA9E0 = { name = "rex_sub_821FA9E0" } +0x821FB21C = { name = "rex_sub_821FB21C" } +0x821FB298 = { name = "rex_sub_821FB298" } +0x821FB2A8 = { name = "rex_sub_821FB2A8" } +0x821FB500 = { name = "rex_sub_821FB500" } +0x821FB730 = { name = "rex_sub_821FB730" } +0x821FB7D0 = { name = "rex_sub_821FB7D0" } +0x821FB860 = { name = "rex_sub_821FB860" } +0x821FB920 = { name = "rex_sub_821FB920" } +0x821FBAB8 = { name = "rex_sub_821FBAB8" } +0x821FBB50 = { name = "rex_sub_821FBB50" } +0x821FBBE0 = { name = "rex_sub_821FBBE0" } +0x821FBC70 = { name = "rex_sub_821FBC70" } +0x821FBE70 = { name = "rex_sub_821FBE70" } +0x821FBEE0 = { name = "rex_sub_821FBEE0" } +0x821FBF70 = { name = "rex_sub_821FBF70" } +0x821FBFE8 = { name = "rex_sub_821FBFE8" } +0x821FC048 = { name = "rex_sub_821FC048" } +0x821FC0B0 = { name = "rex_sub_821FC0B0" } +0x821FC188 = { name = "rex_sub_821FC188" } +0x821FC228 = { name = "rex_sub_821FC228" } +0x821FC3D8 = { name = "rex_sub_821FC3D8" } +0x821FC438 = { name = "rex_sub_821FC438" } +0x821FC6B8 = { name = "rex_sub_821FC6B8" } +0x821FCA88 = { name = "rex_sub_821FCA88" } +0x821FCCE0 = { name = "rex_sub_821FCCE0" } +0x821FCD98 = { name = "rex_sub_821FCD98" } +0x821FCDA8 = { name = "rex_sub_821FCDA8" } +0x821FCDB0 = { name = "rex_sub_821FCDB0" } +0x821FCDC0 = { name = "rex_sub_821FCDC0" } +0x821FCDD0 = { name = "rex_sub_821FCDD0" } +0x821FCDE0 = { name = "rex_sub_821FCDE0" } +0x821FCDF8 = { name = "rex_sub_821FCDF8" } +0x821FCE10 = { name = "rex_sub_821FCE10" } +0x821FCE30 = { name = "rex_sub_821FCE30" } +0x821FCE98 = { name = "rex_sub_821FCE98" } +0x821FCEB0 = { name = "rex_sub_821FCEB0" } +0x821FCEC0 = { name = "rex_sub_821FCEC0" } +0x821FCED0 = { name = "rex_sub_821FCED0" } +0x821FCF78 = { name = "rex_sub_821FCF78" } +0x821FCF88 = { name = "rex_sub_821FCF88" } +0x821FCF90 = { name = "rex_sub_821FCF90" } +0x821FCFA8 = { name = "rex_sub_821FCFA8" } +0x821FCFB8 = { name = "rex_sub_821FCFB8" } +0x821FCFC8 = { name = "rex_sub_821FCFC8" } +0x821FCFE0 = { name = "rex_sub_821FCFE0" } +0x821FD000 = { name = "rex_sub_821FD000" } +0x821FD020 = { name = "rex_sub_821FD020" } +0x821FD038 = { name = "rex_sub_821FD038" } +0x821FD050 = { name = "rex_sub_821FD050" } +0x821FD068 = { name = "rex_sub_821FD068" } +0x821FD078 = { name = "rex_sub_821FD078" } +0x821FD090 = { name = "rex_sub_821FD090" } +0x821FD0B0 = { name = "rex_sub_821FD0B0" } +0x821FD0C8 = { name = "rex_sub_821FD0C8" } +0x821FD0E8 = { name = "rex_sub_821FD0E8" } +0x821FD100 = { name = "rex_sub_821FD100" } +0x821FD140 = { name = "rex_sub_821FD140" } +0x821FD1C8 = { name = "rex_sub_821FD1C8" } +0x821FD1D8 = { name = "rex_sub_821FD1D8" } +0x821FD260 = { name = "rex_sub_821FD260" } +0x821FD300 = { name = "rex_sub_821FD300" } +0x821FD3E8 = { name = "rex_sub_821FD3E8" } +0x821FD4C0 = { name = "rex_sub_821FD4C0" } +0x821FD660 = { name = "rex_sub_821FD660" } +0x821FD718 = { name = "rex_sub_821FD718" } +0x821FD7C8 = { name = "rex_sub_821FD7C8" } +0x821FD870 = { name = "rex_sub_821FD870" } +0x821FD918 = { name = "rex_sub_821FD918" } +0x821FD9C0 = { name = "rex_sub_821FD9C0" } +0x821FDA68 = { name = "rex_sub_821FDA68" } +0x821FDB40 = { name = "rex_sub_821FDB40" } +0x821FDBD8 = { name = "rex_sub_821FDBD8" } +0x821FDC88 = { name = "rex_sub_821FDC88" } +0x821FDD78 = { name = "rex_sub_821FDD78" } +0x821FDE38 = { name = "rex_sub_821FDE38" } +0x821FDE68 = { name = "rex_sub_821FDE68" } +0x821FDF98 = { name = "rex_sub_821FDF98" } +0x821FE278 = { name = "rex_sub_821FE278" } +0x821FE2C8 = { name = "rex_sub_821FE2C8" } +0x821FE330 = { name = "rex_sub_821FE330" } +0x821FE3A0 = { name = "rex_sub_821FE3A0" } +0x821FE458 = { name = "rex_sub_821FE458" } +0x821FE488 = { name = "rex_sub_821FE488" } +0x821FE4E0 = { name = "rex_sub_821FE4E0" } +0x821FE510 = { name = "rex_sub_821FE510" } +0x821FE560 = { name = "rex_sub_821FE560" } +0x821FE8A0 = { name = "rex_sub_821FE8A0" } +0x821FE8F8 = { name = "rex_sub_821FE8F8" } +0x821FE930 = { name = "rex_sub_821FE930" } +0x821FEA00 = { name = "rex_sub_821FEA00" } +0x821FEA78 = { name = "rex_sub_821FEA78" } +0x821FEB58 = { name = "rex_sub_821FEB58" } +0x821FEC18 = { name = "rex_sub_821FEC18" } +0x821FECA0 = { name = "rex_sub_821FECA0" } +0x821FF468 = { name = "rex_sub_821FF468" } +0x821FF498 = { name = "rex_sub_821FF498" } +0x821FF4B8 = { name = "rex_sub_821FF4B8" } +0x821FF4E0 = { name = "rex_sub_821FF4E0" } +0x821FF530 = { name = "rex_sub_821FF530" } +0x821FF610 = { name = "rex_sub_821FF610" } +0x821FF688 = { name = "rex_sub_821FF688" } +0x821FF708 = { name = "rex_sub_821FF708" } +0x821FF790 = { name = "rex_sub_821FF790" } +0x821FF838 = { name = "rex_sub_821FF838" } +0x821FF870 = { name = "rex_sub_821FF870" } +0x821FF8C8 = { name = "rex_sub_821FF8C8" } +0x821FF8F8 = { name = "rex_sub_821FF8F8" } +0x821FF948 = { name = "rex_sub_821FF948" } +0x821FF950 = { name = "rex_sub_821FF950" } +0x821FF9D0 = { name = "rex_sub_821FF9D0" } +0x821FFA20 = { name = "rex_sub_821FFA20" } +0x821FFA80 = { name = "rex_sub_821FFA80" } +0x821FFB90 = { name = "rex_sub_821FFB90" } +0x821FFC80 = { name = "rex_sub_821FFC80" } +0x821FFD18 = { name = "rex_sub_821FFD18" } +0x821FFD58 = { name = "rex_sub_821FFD58" } +0x821FFE18 = { name = "rex_sub_821FFE18" } +0x821FFEA8 = { name = "rex_sub_821FFEA8" } +0x821FFEE8 = { name = "rex_sub_821FFEE8" } +0x821FFF80 = { name = "rex_sub_821FFF80" } +0x821FFFCC = { name = "rex_sub_821FFFCC" } +0x82200000 = { name = "rex_sub_82200000" } +0x82200044 = { name = "rex_sub_82200044" } +0x82200070 = { name = "rex_sub_82200070" } +0x822000B8 = { name = "rex_sub_822000B8" } +0x82200104 = { name = "rex_sub_82200104" } +0x82200130 = { name = "rex_sub_82200130" } +0x822001B8 = { name = "rex_sub_822001B8" } +0x82200258 = { name = "rex_sub_82200258" } +0x82200418 = { name = "rex_sub_82200418" } +0x82200620 = { name = "rex_sub_82200620" } +0x822006B8 = { name = "rex_sub_822006B8" } +0x82200790 = { name = "rex_sub_82200790" } +0x82200828 = { name = "rex_sub_82200828" } +0x82200958 = { name = "rex_sub_82200958" } +0x82200AA0 = { name = "rex_sub_82200AA0" } +0x82200B40 = { name = "rex_sub_82200B40" } +0x82200BB0 = { name = "rex_sub_82200BB0" } +0x82200CB0 = { name = "rex_sub_82200CB0" } +0x82200EE0 = { name = "rex_sub_82200EE0" } +0x82200FE8 = { name = "rex_sub_82200FE8" } +0x82201068 = { name = "rex_sub_82201068" } +0x82201078 = { name = "rex_sub_82201078" } +0x822010E8 = { name = "rex_sub_822010E8" } +0x82201150 = { name = "rex_sub_82201150" } +0x82201220 = { name = "rex_sub_82201220" } +0x82201368 = { name = "rex_sub_82201368" } +0x822014D0 = { name = "rex_sub_822014D0" } +0x82201530 = { name = "rex_sub_82201530" } +0x822015E8 = { name = "rex_sub_822015E8" } +0x82201610 = { name = "rex_sub_82201610" } +0x82201638 = { name = "rex_sub_82201638" } +0x822016E0 = { name = "rex_sub_822016E0" } +0x82201710 = { name = "rex_sub_82201710" } +0x82201740 = { name = "rex_sub_82201740" } +0x82201768 = { name = "rex_sub_82201768" } +0x82201790 = { name = "rex_sub_82201790" } +0x822017A0 = { name = "rex_sub_822017A0" } +0x82201808 = { name = "rex_sub_82201808" } +0x82201888 = { name = "rex_sub_82201888" } +0x82201A88 = { name = "rex_sub_82201A88" } +0x82201B00 = { name = "rex_sub_82201B00" } +0x82201DA0 = { name = "rex_sub_82201DA0" } +0x82201DC8 = { name = "rex_sub_82201DC8" } +0x82201EF0 = { name = "rex_sub_82201EF0" } +0x82202020 = { name = "rex_sub_82202020" } +0x822020C8 = { name = "rex_sub_822020C8" } +0x822021B0 = { name = "rex_sub_822021B0" } +0x822021D0 = { name = "rex_sub_822021D0" } +0x82202250 = { name = "rex_sub_82202250" } +0x822022F0 = { name = "rex_sub_822022F0" } +0x82202350 = { name = "rex_sub_82202350" } +0x822023D8 = { name = "rex_sub_822023D8" } +0x82202498 = { name = "rex_sub_82202498" } +0x82202588 = { name = "rex_sub_82202588" } +0x822025E0 = { name = "rex_sub_822025E0" } +0x82202650 = { name = "rex_sub_82202650" } +0x82202778 = { name = "rex_sub_82202778" } +0x82202850 = { name = "rex_sub_82202850" } +0x82202920 = { name = "rex_sub_82202920" } +0x82202B58 = { name = "rex_sub_82202B58" } +0x82202BF0 = { name = "rex_sub_82202BF0" } +0x82202C68 = { name = "rex_sub_82202C68" } +0x82202EE0 = { name = "rex_sub_82202EE0" } +0x822030B0 = { name = "rex_sub_822030B0" } +0x82203168 = { name = "rex_sub_82203168" } +0x822033E8 = { name = "rex_sub_822033E8" } +0x82203460 = { name = "rex_sub_82203460" } +0x822035D0 = { name = "rex_sub_822035D0" } +0x82203888 = { name = "rex_sub_82203888" } +0x82203A18 = { name = "rex_sub_82203A18" } +0x82203A38 = { name = "rex_sub_82203A38" } +0x82203AE0 = { name = "rex_sub_82203AE0" } +0x82203B68 = { name = "rex_sub_82203B68" } +0x82203BD8 = { name = "rex_sub_82203BD8" } +0x82203C70 = { name = "rex_sub_82203C70" } +0x82203D28 = { name = "rex_sub_82203D28" } +0x82203DB0 = { name = "rex_sub_82203DB0" } +0x82203E40 = { name = "rex_sub_82203E40" } +0x82203EC0 = { name = "rex_sub_82203EC0" } +0x82203F18 = { name = "rex_sub_82203F18" } +0x82204228 = { name = "rex_sub_82204228" } +0x82204320 = { name = "rex_sub_82204320" } +0x82204388 = { name = "rex_sub_82204388" } +0x822044F8 = { name = "rex_sub_822044F8" } +0x82204550 = { name = "rex_sub_82204550" } +0x822046C8 = { name = "rex_sub_822046C8" } +0x82204738 = { name = "rex_sub_82204738" } +0x822047A8 = { name = "rex_sub_822047A8" } +0x822048B0 = { name = "rex_sub_822048B0" } +0x82204910 = { name = "rex_sub_82204910" } +0x822049D0 = { name = "rex_sub_822049D0" } +0x82204A28 = { name = "rex_sub_82204A28" } +0x82204A90 = { name = "rex_sub_82204A90" } +0x82204B18 = { name = "rex_sub_82204B18" } +0x82204B88 = { name = "rex_sub_82204B88" } +0x82204BF8 = { name = "rex_sub_82204BF8" } +0x82204CA8 = { name = "rex_sub_82204CA8" } +0x82204DC8 = { name = "rex_sub_82204DC8" } +0x82204FC8 = { name = "rex_sub_82204FC8" } +0x822050D0 = { name = "rex_sub_822050D0" } +0x82205100 = { name = "rex_sub_82205100" } +0x82205178 = { name = "rex_sub_82205178" } +0x822053F8 = { name = "rex_sub_822053F8" } +0x82205640 = { name = "rex_sub_82205640" } +0x82205728 = { name = "rex_sub_82205728" } +0x822057D8 = { name = "rex_sub_822057D8" } +0x82205850 = { name = "rex_sub_82205850" } +0x822058C8 = { name = "rex_sub_822058C8" } +0x82205968 = { name = "rex_sub_82205968" } +0x822059F0 = { name = "rex_sub_822059F0" } +0x82205A68 = { name = "rex_sub_82205A68" } +0x82205A90 = { name = "rex_sub_82205A90" } +0x82205B58 = { name = "rex_sub_82205B58" } +0x82205C08 = { name = "rex_sub_82205C08" } +0x82205E70 = { name = "rex_sub_82205E70" } +0x82205F90 = { name = "rex_sub_82205F90" } +0x82206038 = { name = "rex_sub_82206038" } +0x822060F8 = { name = "rex_sub_822060F8" } +0x82206100 = { name = "rex_sub_82206100" } +0x82206218 = { name = "rex_sub_82206218" } +0x82206248 = { name = "rex_sub_82206248" } +0x822063B8 = { name = "rex_sub_822063B8" } +0x82206450 = { name = "rex_sub_82206450" } +0x82206468 = { name = "rex_sub_82206468" } +0x82206520 = { name = "rex_sub_82206520" } +0x82206528 = { name = "rex_sub_82206528" } +0x82206670 = { name = "rex_sub_82206670" } +0x82206678 = { name = "rex_sub_82206678" } +0x82206688 = { name = "rex_sub_82206688" } +0x82206698 = { name = "rex_sub_82206698" } +0x822066A8 = { name = "rex_sub_822066A8" } +0x822066B8 = { name = "rex_sub_822066B8" } +0x822066C8 = { name = "rex_sub_822066C8" } +0x822066D8 = { name = "rex_sub_822066D8" } +0x82206860 = { name = "rex_sub_82206860" } +0x82206868 = { name = "rex_sub_82206868" } +0x822068E0 = { name = "rex_sub_822068E0" } +0x82206C48 = { name = "rex_sub_82206C48" } +0x82206EE0 = { name = "rex_sub_82206EE0" } +0x82206FF8 = { name = "rex_sub_82206FF8" } +0x82207070 = { name = "rex_sub_82207070" } +0x822070E8 = { name = "rex_sub_822070E8" } +0x822073F8 = { name = "rex_sub_822073F8" } +0x82207450 = { name = "rex_sub_82207450" } +0x82207500 = { name = "rex_sub_82207500" } +0x822075F8 = { name = "rex_sub_822075F8" } +0x822076B0 = { name = "rex_sub_822076B0" } +0x82207A30 = { name = "rex_sub_82207A30" } +0x82207C30 = { name = "rex_sub_82207C30" } +0x82207CA0 = { name = "rex_sub_82207CA0" } +0x82207D38 = { name = "rex_sub_82207D38" } +0x82207E68 = { name = "rex_sub_82207E68" } +0x82207EF8 = { name = "rex_sub_82207EF8" } +0x82207FE0 = { name = "rex_sub_82207FE0" } +0x822081A0 = { name = "rex_sub_822081A0" } +0x82208418 = { name = "rex_sub_82208418" } +0x82208628 = { name = "rex_sub_82208628" } +0x82208818 = { name = "rex_sub_82208818" } +0x82208A10 = { name = "rex_sub_82208A10" } +0x82208BE0 = { name = "rex_sub_82208BE0" } +0x82208CD0 = { name = "rex_sub_82208CD0" } +0x82209038 = { name = "rex_sub_82209038" } +0x8220A198 = { name = "rex_sub_8220A198" } +0x8220A388 = { name = "rex_sub_8220A388" } +0x8220A570 = { name = "rex_sub_8220A570" } +0x8220A640 = { name = "rex_sub_8220A640" } +0x8220A6C0 = { name = "rex_sub_8220A6C0" } +0x8220A780 = { name = "rex_sub_8220A780" } +0x8220ACC0 = { name = "rex_sub_8220ACC0" } +0x8220ADC0 = { name = "rex_sub_8220ADC0" } +0x8220AE58 = { name = "rex_sub_8220AE58" } +0x8220AF80 = { name = "rex_sub_8220AF80" } +0x8220B080 = { name = "rex_sub_8220B080" } +0x8220B098 = { name = "rex_sub_8220B098" } +0x8220B110 = { name = "rex_sub_8220B110" } +0x8220B398 = { name = "rex_sub_8220B398" } +0x8220B630 = { name = "rex_sub_8220B630" } +0x8220B688 = { name = "rex_sub_8220B688" } +0x8220B720 = { name = "rex_sub_8220B720" } +0x8220B770 = { name = "rex_sub_8220B770" } +0x8220B7F0 = { name = "rex_sub_8220B7F0" } +0x8220B850 = { name = "rex_sub_8220B850" } +0x8220BA58 = { name = "rex_sub_8220BA58" } +0x8220BB08 = { name = "rex_sub_8220BB08" } +0x8220BB58 = { name = "rex_sub_8220BB58" } +0x8220BC00 = { name = "rex_sub_8220BC00" } +0x8220BC70 = { name = "rex_sub_8220BC70" } +0x8220BCF8 = { name = "rex_sub_8220BCF8" } +0x8220BED0 = { name = "rex_sub_8220BED0" } +0x8220C030 = { name = "rex_sub_8220C030" } +0x8220C1E0 = { name = "rex_sub_8220C1E0" } +0x8220C3F8 = { name = "rex_sub_8220C3F8" } +0x8220C410 = { name = "rex_sub_8220C410" } +0x8220C488 = { name = "rex_sub_8220C488" } +0x8220C4F8 = { name = "rex_sub_8220C4F8" } +0x8220C548 = { name = "rex_sub_8220C548" } +0x8220C668 = { name = "rex_sub_8220C668" } +0x8220C748 = { name = "rex_sub_8220C748" } +0x8220C788 = { name = "rex_sub_8220C788" } +0x8220C7C8 = { name = "rex_sub_8220C7C8" } +0x8220C920 = { name = "rex_sub_8220C920" } +0x8220C950 = { name = "rex_sub_8220C950" } +0x8220C988 = { name = "rex_sub_8220C988" } +0x8220C9B0 = { name = "rex_sub_8220C9B0" } +0x8220CBB8 = { name = "rex_sub_8220CBB8" } +0x8220CDC8 = { name = "rex_sub_8220CDC8" } +0x8220CE70 = { name = "rex_sub_8220CE70" } +0x8220CED0 = { name = "rex_sub_8220CED0" } +0x8220CFB8 = { name = "rex_sub_8220CFB8" } +0x8220D088 = { name = "rex_sub_8220D088" } +0x8220D380 = { name = "rex_sub_8220D380" } +0x8220D428 = { name = "rex_sub_8220D428" } +0x8220D608 = { name = "rex_sub_8220D608" } +0x8220D7A8 = { name = "rex_sub_8220D7A8" } +0x8220D7F0 = { name = "rex_sub_8220D7F0" } +0x8220D930 = { name = "rex_sub_8220D930" } +0x8220DAC0 = { name = "rex_sub_8220DAC0" } +0x8220DC88 = { name = "rex_sub_8220DC88" } +0x8220DCF8 = { name = "rex_sub_8220DCF8" } +0x8220DD48 = { name = "rex_sub_8220DD48" } +0x8220DE98 = { name = "rex_sub_8220DE98" } +0x8220DED0 = { name = "rex_sub_8220DED0" } +0x8220E058 = { name = "rex_sub_8220E058" } +0x8220E1C0 = { name = "rex_sub_8220E1C0" } +0x8220E350 = { name = "rex_sub_8220E350" } +0x8220E5D0 = { name = "rex_sub_8220E5D0" } +0x8220E678 = { name = "rex_sub_8220E678" } +0x8220EAF0 = { name = "rex_sub_8220EAF0" } +0x8220EBF0 = { name = "rex_sub_8220EBF0" } +0x8220ECA0 = { name = "rex_sub_8220ECA0" } +0x8220F0C0 = { name = "rex_sub_8220F0C0" } +0x8220F140 = { name = "rex_sub_8220F140" } +0x8220F330 = { name = "rex_sub_8220F330" } +0x8220F378 = { name = "rex_sub_8220F378" } +0x8220F4A0 = { name = "rex_sub_8220F4A0" } +0x8220F5E0 = { name = "rex_sub_8220F5E0" } +0x8220F9B0 = { name = "rex_sub_8220F9B0" } +0x8220FAD0 = { name = "rex_sub_8220FAD0" } +0x8220FBF8 = { name = "rex_sub_8220FBF8" } +0x8220FEF0 = { name = "rex_sub_8220FEF0" } +0x82210148 = { name = "rex_sub_82210148" } +0x822101B8 = { name = "rex_sub_822101B8" } +0x82210300 = { name = "rex_sub_82210300" } +0x82210410 = { name = "rex_sub_82210410" } +0x82210418 = { name = "rex_sub_82210418" } +0x82210470 = { name = "rex_sub_82210470" } +0x822104E0 = { name = "rex_sub_822104E0" } +0x82210568 = { name = "rex_sub_82210568" } +0x82210720 = { name = "rex_sub_82210720" } +0x822107F0 = { name = "rex_sub_822107F0" } +0x82210830 = { name = "rex_sub_82210830" } +0x822109F0 = { name = "rex_sub_822109F0" } +0x82210B58 = { name = "rex_sub_82210B58" } +0x82210CB8 = { name = "rex_sub_82210CB8" } +0x82210D60 = { name = "rex_sub_82210D60" } +0x82210E08 = { name = "rex_sub_82210E08" } +0x82210E80 = { name = "rex_sub_82210E80" } +0x82210EC8 = { name = "rex_sub_82210EC8" } +0x82210FA0 = { name = "rex_sub_82210FA0" } +0x82211050 = { name = "rex_sub_82211050" } +0x822110D0 = { name = "rex_sub_822110D0" } +0x82211258 = { name = "rex_sub_82211258" } +0x82211540 = { name = "rex_sub_82211540" } +0x82211568 = { name = "rex_sub_82211568" } +0x82211858 = { name = "rex_sub_82211858" } +0x82211990 = { name = "rex_sub_82211990" } +0x822119A0 = { name = "rex_sub_822119A0" } +0x822119B8 = { name = "rex_sub_822119B8" } +0x82211B70 = { name = "rex_sub_82211B70" } +0x82211C40 = { name = "rex_sub_82211C40" } +0x82211E28 = { name = "rex_sub_82211E28" } +0x82211EE0 = { name = "rex_sub_82211EE0" } +0x82211F60 = { name = "rex_sub_82211F60" } +0x82211FE8 = { name = "rex_sub_82211FE8" } +0x82212060 = { name = "rex_sub_82212060" } +0x82212068 = { name = "rex_sub_82212068" } +0x822120A8 = { name = "rex_sub_822120A8" } +0x822120B0 = { name = "rex_sub_822120B0" } +0x82212140 = { name = "rex_sub_82212140" } +0x82212180 = { name = "rex_sub_82212180" } +0x822121C8 = { name = "rex_sub_822121C8" } +0x822121D0 = { name = "rex_sub_822121D0" } +0x82212210 = { name = "rex_sub_82212210" } +0x82212258 = { name = "rex_sub_82212258" } +0x822122D8 = { name = "rex_sub_822122D8" } +0x82212610 = { name = "rex_sub_82212610" } +0x82212668 = { name = "rex_sub_82212668" } +0x822126B8 = { name = "rex_sub_822126B8" } +0x822126F8 = { name = "rex_sub_822126F8" } +0x82212770 = { name = "rex_sub_82212770" } +0x822127D0 = { name = "rex_sub_822127D0" } +0x82212898 = { name = "rex_sub_82212898" } +0x82212920 = { name = "rex_sub_82212920" } +0x82212970 = { name = "rex_sub_82212970" } +0x822129D0 = { name = "rex_sub_822129D0" } +0x82212A30 = { name = "rex_sub_82212A30" } +0x82212AB0 = { name = "rex_sub_82212AB0" } +0x82212C08 = { name = "rex_sub_82212C08" } +0x82212E68 = { name = "rex_sub_82212E68" } +0x82213200 = { name = "rex_sub_82213200" } +0x82213600 = { name = "rex_sub_82213600" } +0x82213650 = { name = "rex_sub_82213650" } +0x822136C0 = { name = "rex_sub_822136C0" } +0x82213788 = { name = "rex_sub_82213788" } +0x82213B10 = { name = "rex_sub_82213B10" } +0x82213BA8 = { name = "rex_sub_82213BA8" } +0x82213BF0 = { name = "rex_sub_82213BF0" } +0x82214088 = { name = "rex_sub_82214088" } +0x82214190 = { name = "rex_sub_82214190" } +0x822142C8 = { name = "rex_sub_822142C8" } +0x82214328 = { name = "rex_sub_82214328" } +0x822143F0 = { name = "rex_sub_822143F0" } +0x82214450 = { name = "rex_sub_82214450" } +0x82214500 = { name = "rex_sub_82214500" } +0x82214568 = { name = "rex_sub_82214568" } +0x82214600 = { name = "rex_sub_82214600" } +0x822146C0 = { name = "rex_sub_822146C0" } +0x82214790 = { name = "rex_sub_82214790" } +0x822147E0 = { name = "rex_sub_822147E0" } +0x822147E8 = { name = "rex_sub_822147E8" } +0x82214848 = { name = "rex_sub_82214848" } +0x82214908 = { name = "rex_sub_82214908" } +0x82214930 = { name = "rex_sub_82214930" } +0x82214AE0 = { name = "rex_sub_82214AE0" } +0x82214BD8 = { name = "rex_sub_82214BD8" } +0x82214C40 = { name = "rex_sub_82214C40" } +0x82214CA0 = { name = "rex_sub_82214CA0" } +0x82214CF8 = { name = "rex_sub_82214CF8" } +0x82214D70 = { name = "rex_sub_82214D70" } +0x82214FA0 = { name = "rex_sub_82214FA0" } +0x822150D8 = { name = "rex_sub_822150D8" } +0x822150E8 = { name = "rex_sub_822150E8" } +0x822150F0 = { name = "rex_sub_822150F0" } +0x822150F8 = { name = "rex_sub_822150F8" } +0x82215150 = { name = "rex_sub_82215150" } +0x822151C0 = { name = "rex_sub_822151C0" } +0x82215240 = { name = "rex_sub_82215240" } +0x82215268 = { name = "rex_sub_82215268" } +0x822152B0 = { name = "rex_sub_822152B0" } +0x82215318 = { name = "rex_sub_82215318" } +0x822153C0 = { name = "rex_sub_822153C0" } +0x82215420 = { name = "rex_sub_82215420" } +0x822154B8 = { name = "rex_sub_822154B8" } +0x82215518 = { name = "rex_sub_82215518" } +0x822155D0 = { name = "rex_sub_822155D0" } +0x822156D0 = { name = "rex_sub_822156D0" } +0x82215750 = { name = "rex_sub_82215750" } +0x82215818 = { name = "rex_sub_82215818" } +0x822158F0 = { name = "rex_sub_822158F0" } +0x82215CA8 = { name = "rex_sub_82215CA8" } +0x82215CE8 = { name = "rex_sub_82215CE8" } +0x82215D80 = { name = "rex_sub_82215D80" } +0x82215DC0 = { name = "rex_sub_82215DC0" } +0x82215E78 = { name = "rex_sub_82215E78" } +0x82215F40 = { name = "rex_sub_82215F40" } +0x82215FC0 = { name = "rex_sub_82215FC0" } +0x82216020 = { name = "rex_sub_82216020" } +0x82216060 = { name = "rex_sub_82216060" } +0x82216118 = { name = "rex_sub_82216118" } +0x82216168 = { name = "rex_sub_82216168" } +0x822161D8 = { name = "rex_sub_822161D8" } +0x82216250 = { name = "rex_sub_82216250" } +0x82216308 = { name = "rex_sub_82216308" } +0x82216358 = { name = "rex_sub_82216358" } +0x822163B8 = { name = "rex_sub_822163B8" } +0x82216430 = { name = "rex_sub_82216430" } +0x822164E8 = { name = "rex_sub_822164E8" } +0x82216568 = { name = "rex_sub_82216568" } +0x822165C8 = { name = "rex_sub_822165C8" } +0x822166B0 = { name = "rex_sub_822166B0" } +0x82216780 = { name = "rex_sub_82216780" } +0x82216800 = { name = "rex_sub_82216800" } +0x82216880 = { name = "rex_sub_82216880" } +0x82216920 = { name = "rex_sub_82216920" } +0x822169C0 = { name = "rex_sub_822169C0" } +0x82216A60 = { name = "rex_sub_82216A60" } +0x82216B00 = { name = "rex_sub_82216B00" } +0x82216D18 = { name = "rex_sub_82216D18" } +0x82216DB8 = { name = "rex_sub_82216DB8" } +0x82216E58 = { name = "rex_sub_82216E58" } +0x82216F28 = { name = "rex_sub_82216F28" } +0x82216FF8 = { name = "rex_sub_82216FF8" } +0x822170C8 = { name = "rex_sub_822170C8" } +0x82217198 = { name = "rex_sub_82217198" } +0x82217268 = { name = "rex_sub_82217268" } +0x82217338 = { name = "rex_sub_82217338" } +0x82217408 = { name = "rex_sub_82217408" } +0x822174D8 = { name = "rex_sub_822174D8" } +0x82217580 = { name = "rex_sub_82217580" } +0x822175E0 = { name = "rex_sub_822175E0" } +0x82217628 = { name = "rex_sub_82217628" } +0x822176C8 = { name = "rex_sub_822176C8" } +0x82217730 = { name = "rex_sub_82217730" } +0x822177B8 = { name = "rex_sub_822177B8" } +0x82217818 = { name = "rex_sub_82217818" } +0x822178C8 = { name = "rex_sub_822178C8" } +0x82217930 = { name = "rex_sub_82217930" } +0x822179A8 = { name = "rex_sub_822179A8" } +0x82217A20 = { name = "rex_sub_82217A20" } +0x82217AC0 = { name = "rex_sub_82217AC0" } +0x82217BC0 = { name = "rex_sub_82217BC0" } +0x82217CA0 = { name = "rex_sub_82217CA0" } +0x82217D88 = { name = "rex_sub_82217D88" } +0x82217E78 = { name = "rex_sub_82217E78" } +0x82217F98 = { name = "rex_sub_82217F98" } +0x822180B0 = { name = "rex_sub_822180B0" } +0x822182A8 = { name = "rex_sub_822182A8" } +0x822183F0 = { name = "rex_sub_822183F0" } +0x82218618 = { name = "rex_sub_82218618" } +0x82218A00 = { name = "rex_sub_82218A00" } +0x82218C20 = { name = "rex_sub_82218C20" } +0x82219330 = { name = "rex_sub_82219330" } +0x82219478 = { name = "rex_sub_82219478" } +0x822196A0 = { name = "rex_sub_822196A0" } +0x82219A88 = { name = "rex_sub_82219A88" } +0x82219CA8 = { name = "rex_sub_82219CA8" } +0x8221A3B8 = { name = "rex_sub_8221A3B8" } +0x8221A500 = { name = "rex_sub_8221A500" } +0x8221A728 = { name = "rex_sub_8221A728" } +0x8221AB10 = { name = "rex_sub_8221AB10" } +0x8221AD30 = { name = "rex_sub_8221AD30" } +0x8221B440 = { name = "rex_sub_8221B440" } +0x8221B588 = { name = "rex_sub_8221B588" } +0x8221B7B0 = { name = "rex_sub_8221B7B0" } +0x8221BB98 = { name = "rex_sub_8221BB98" } +0x8221BDB8 = { name = "rex_sub_8221BDB8" } +0x8221C4C8 = { name = "rex_sub_8221C4C8" } +0x8221C610 = { name = "rex_sub_8221C610" } +0x8221C838 = { name = "rex_sub_8221C838" } +0x8221CC20 = { name = "rex_sub_8221CC20" } +0x8221CE40 = { name = "rex_sub_8221CE40" } +0x8221D550 = { name = "rex_sub_8221D550" } +0x8221D698 = { name = "rex_sub_8221D698" } +0x8221D8C0 = { name = "rex_sub_8221D8C0" } +0x8221DAE0 = { name = "rex_sub_8221DAE0" } +0x8221E1F0 = { name = "rex_sub_8221E1F0" } +0x8221E2F8 = { name = "rex_sub_8221E2F8" } +0x8221E378 = { name = "rex_sub_8221E378" } +0x8221E3F8 = { name = "rex_sub_8221E3F8" } +0x8221E478 = { name = "rex_sub_8221E478" } +0x8221E4F8 = { name = "rex_sub_8221E4F8" } +0x8221E578 = { name = "rex_sub_8221E578" } +0x8221E610 = { name = "rex_sub_8221E610" } +0x8221E708 = { name = "rex_sub_8221E708" } +0x8221E780 = { name = "rex_sub_8221E780" } +0x8221E800 = { name = "rex_sub_8221E800" } +0x8221E880 = { name = "rex_sub_8221E880" } +0x8221E900 = { name = "rex_sub_8221E900" } +0x8221E980 = { name = "rex_sub_8221E980" } +0x8221EA20 = { name = "rex_sub_8221EA20" } +0x8221EAA0 = { name = "rex_sub_8221EAA0" } +0x8221EB18 = { name = "rex_sub_8221EB18" } +0x8221EB90 = { name = "rex_sub_8221EB90" } +0x8221EC10 = { name = "rex_sub_8221EC10" } +0x8221EC90 = { name = "rex_sub_8221EC90" } +0x8221ED08 = { name = "rex_sub_8221ED08" } +0x8221EDB8 = { name = "rex_sub_8221EDB8" } +0x8221EE38 = { name = "rex_sub_8221EE38" } +0x8221EEE0 = { name = "rex_sub_8221EEE0" } +0x8221EF58 = { name = "rex_sub_8221EF58" } +0x8221EFA0 = { name = "rex_sub_8221EFA0" } +0x8221F058 = { name = "rex_sub_8221F058" } +0x8221F0D8 = { name = "rex_sub_8221F0D8" } +0x8221F178 = { name = "rex_sub_8221F178" } +0x8221F250 = { name = "rex_sub_8221F250" } +0x8221F398 = { name = "rex_sub_8221F398" } +0x8221F5C0 = { name = "rex_sub_8221F5C0" } +0x8221F9A8 = { name = "rex_sub_8221F9A8" } +0x8221FBC8 = { name = "rex_sub_8221FBC8" } +0x822202D8 = { name = "rex_sub_822202D8" } +0x82220348 = { name = "rex_sub_82220348" } +0x82220390 = { name = "rex_sub_82220390" } +0x822203F8 = { name = "rex_sub_822203F8" } +0x82220468 = { name = "rex_sub_82220468" } +0x822204D0 = { name = "rex_sub_822204D0" } +0x822206C8 = { name = "rex_sub_822206C8" } +0x822208C0 = { name = "rex_sub_822208C0" } +0x82220980 = { name = "rex_sub_82220980" } +0x822209D8 = { name = "rex_sub_822209D8" } +0x82220A78 = { name = "rex_sub_82220A78" } +0x82220AF0 = { name = "rex_sub_82220AF0" } +0x82220B90 = { name = "rex_sub_82220B90" } +0x82220C08 = { name = "rex_sub_82220C08" } +0x82221060 = { name = "rex_sub_82221060" } +0x82221210 = { name = "rex_sub_82221210" } +0x82221290 = { name = "rex_sub_82221290" } +0x82221310 = { name = "rex_sub_82221310" } +0x82221390 = { name = "rex_sub_82221390" } +0x82221410 = { name = "rex_sub_82221410" } +0x82221490 = { name = "rex_sub_82221490" } +0x82221510 = { name = "rex_sub_82221510" } +0x82221598 = { name = "rex_sub_82221598" } +0x82221618 = { name = "rex_sub_82221618" } +0x82221698 = { name = "rex_sub_82221698" } +0x82221718 = { name = "rex_sub_82221718" } +0x82221798 = { name = "rex_sub_82221798" } +0x82221818 = { name = "rex_sub_82221818" } +0x82221890 = { name = "rex_sub_82221890" } +0x82221910 = { name = "rex_sub_82221910" } +0x82221990 = { name = "rex_sub_82221990" } +0x82221A68 = { name = "rex_sub_82221A68" } +0x82221AF8 = { name = "rex_sub_82221AF8" } +0x82221B70 = { name = "rex_sub_82221B70" } +0x82221BE8 = { name = "rex_sub_82221BE8" } +0x82221C68 = { name = "rex_sub_82221C68" } +0x82221D20 = { name = "rex_sub_82221D20" } +0x82221DD0 = { name = "rex_sub_82221DD0" } +0x82221F18 = { name = "rex_sub_82221F18" } +0x82221F40 = { name = "rex_sub_82221F40" } +0x82222118 = { name = "rex_sub_82222118" } +0x82222168 = { name = "rex_sub_82222168" } +0x822221A0 = { name = "rex_sub_822221A0" } +0x82222228 = { name = "rex_sub_82222228" } +0x822222A8 = { name = "rex_sub_822222A8" } +0x822224A8 = { name = "rex_sub_822224A8" } +0x822225E0 = { name = "rex_sub_822225E0" } +0x82222740 = { name = "rex_sub_82222740" } +0x822227C8 = { name = "rex_sub_822227C8" } +0x82222908 = { name = "rex_sub_82222908" } +0x82222B48 = { name = "rex_sub_82222B48" } +0x82222BF8 = { name = "rex_sub_82222BF8" } +0x82222C70 = { name = "rex_sub_82222C70" } +0x82222D80 = { name = "rex_sub_82222D80" } +0x82222E08 = { name = "rex_sub_82222E08" } +0x82222E68 = { name = "rex_sub_82222E68" } +0x82222F50 = { name = "rex_sub_82222F50" } +0x82222F78 = { name = "rex_sub_82222F78" } +0x82222FF8 = { name = "rex_sub_82222FF8" } +0x82223020 = { name = "rex_sub_82223020" } +0x82223038 = { name = "rex_sub_82223038" } +0x82223220 = { name = "rex_sub_82223220" } +0x82223420 = { name = "rex_sub_82223420" } +0x82223440 = { name = "rex_sub_82223440" } +0x822234A8 = { name = "rex_sub_822234A8" } +0x82223698 = { name = "rex_sub_82223698" } +0x82223888 = { name = "rex_sub_82223888" } +0x822239A8 = { name = "rex_sub_822239A8" } +0x82223A10 = { name = "rex_sub_82223A10" } +0x82223A50 = { name = "rex_sub_82223A50" } +0x82223AC8 = { name = "rex_sub_82223AC8" } +0x82223BC0 = { name = "rex_sub_82223BC0" } +0x82223C50 = { name = "rex_sub_82223C50" } +0x82223DD0 = { name = "rex_sub_82223DD0" } +0x82223F78 = { name = "rex_sub_82223F78" } +0x822240C8 = { name = "rex_sub_822240C8" } +0x82224120 = { name = "rex_sub_82224120" } +0x822241F0 = { name = "rex_sub_822241F0" } +0x82224290 = { name = "rex_sub_82224290" } +0x822242F0 = { name = "rex_sub_822242F0" } +0x82224398 = { name = "rex_sub_82224398" } +0x822244D0 = { name = "rex_sub_822244D0" } +0x82224530 = { name = "rex_sub_82224530" } +0x82224630 = { name = "rex_sub_82224630" } +0x82224640 = { name = "rex_sub_82224640" } +0x822247F0 = { name = "rex_sub_822247F0" } +0x822248B8 = { name = "rex_sub_822248B8" } +0x82224968 = { name = "rex_sub_82224968" } +0x82224A48 = { name = "rex_sub_82224A48" } +0x82224AF8 = { name = "rex_sub_82224AF8" } +0x82224C38 = { name = "rex_sub_82224C38" } +0x82224CD0 = { name = "rex_sub_82224CD0" } +0x82224D38 = { name = "rex_sub_82224D38" } +0x82224EF8 = { name = "rex_sub_82224EF8" } +0x82225080 = { name = "rex_sub_82225080" } +0x822254E8 = { name = "rex_sub_822254E8" } +0x82225690 = { name = "rex_sub_82225690" } +0x822256E0 = { name = "rex_sub_822256E0" } +0x82225790 = { name = "rex_sub_82225790" } +0x82225820 = { name = "rex_sub_82225820" } +0x82225D80 = { name = "rex_sub_82225D80" } +0x82226500 = { name = "rex_sub_82226500" } +0x82226538 = { name = "rex_sub_82226538" } +0x822266E0 = { name = "rex_sub_822266E0" } +0x82226748 = { name = "rex_sub_82226748" } +0x822267D0 = { name = "rex_sub_822267D0" } +0x82226878 = { name = "rex_sub_82226878" } +0x82226930 = { name = "rex_sub_82226930" } +0x822269A0 = { name = "rex_sub_822269A0" } +0x82226A98 = { name = "rex_sub_82226A98" } +0x82226B08 = { name = "rex_sub_82226B08" } +0x82226BA8 = { name = "rex_sub_82226BA8" } +0x82226C58 = { name = "rex_sub_82226C58" } +0x82226CF0 = { name = "rex_sub_82226CF0" } +0x82226D88 = { name = "rex_sub_82226D88" } +0x82226DA0 = { name = "rex_sub_82226DA0" } +0x82226E10 = { name = "rex_sub_82226E10" } +0x82226E18 = { name = "rex_sub_82226E18" } +0x82226E38 = { name = "rex_sub_82226E38" } +0x82226F40 = { name = "rex_sub_82226F40" } +0x82227010 = { name = "rex_sub_82227010" } +0x822270A8 = { name = "rex_sub_822270A8" } +0x82227100 = { name = "rex_sub_82227100" } +0x82227178 = { name = "rex_sub_82227178" } +0x822271C0 = { name = "rex_sub_822271C0" } +0x82227208 = { name = "rex_sub_82227208" } +0x82227270 = { name = "rex_sub_82227270" } +0x822272E8 = { name = "rex_sub_822272E8" } +0x82227380 = { name = "rex_sub_82227380" } +0x822273C8 = { name = "rex_sub_822273C8" } +0x822274C8 = { name = "rex_sub_822274C8" } +0x822275C0 = { name = "rex_sub_822275C0" } +0x82227718 = { name = "rex_sub_82227718" } +0x822277B0 = { name = "rex_sub_822277B0" } +0x82227990 = { name = "rex_sub_82227990" } +0x822279F0 = { name = "rex_sub_822279F0" } +0x82227A78 = { name = "rex_sub_82227A78" } +0x82227BD0 = { name = "rex_sub_82227BD0" } +0x82227CD8 = { name = "rex_sub_82227CD8" } +0x82227D00 = { name = "rex_sub_82227D00" } +0x82227D80 = { name = "rex_sub_82227D80" } +0x82228038 = { name = "rex_sub_82228038" } +0x82228268 = { name = "rex_sub_82228268" } +0x82228320 = { name = "rex_sub_82228320" } +0x822283F0 = { name = "rex_sub_822283F0" } +0x82228480 = { name = "rex_sub_82228480" } +0x82228618 = { name = "rex_sub_82228618" } +0x822286F8 = { name = "rex_sub_822286F8" } +0x82228790 = { name = "rex_sub_82228790" } +0x82228970 = { name = "rex_sub_82228970" } +0x82228EA8 = { name = "rex_sub_82228EA8" } +0x82229050 = { name = "rex_sub_82229050" } +0x82229060 = { name = "rex_sub_82229060" } +0x82229170 = { name = "rex_sub_82229170" } +0x822291C0 = { name = "rex_sub_822291C0" } +0x82229780 = { name = "rex_sub_82229780" } +0x822298B8 = { name = "rex_sub_822298B8" } +0x822299E8 = { name = "rex_sub_822299E8" } +0x82229B18 = { name = "rex_sub_82229B18" } +0x82229C28 = { name = "rex_sub_82229C28" } +0x82229D38 = { name = "rex_sub_82229D38" } +0x82229E48 = { name = "rex_sub_82229E48" } +0x8222A058 = { name = "rex_sub_8222A058" } +0x8222A188 = { name = "rex_sub_8222A188" } +0x8222A2D8 = { name = "rex_sub_8222A2D8" } +0x8222ABF8 = { name = "rex_sub_8222ABF8" } +0x8222B020 = { name = "rex_sub_8222B020" } +0x8222B5A0 = { name = "rex_sub_8222B5A0" } +0x8222B6B0 = { name = "rex_sub_8222B6B0" } +0x8222B750 = { name = "rex_sub_8222B750" } +0x8222BE38 = { name = "rex_sub_8222BE38" } +0x8222C0F0 = { name = "rex_sub_8222C0F0" } +0x8222C658 = { name = "rex_sub_8222C658" } +0x8222CC40 = { name = "rex_sub_8222CC40" } +0x8222CE48 = { name = "rex_sub_8222CE48" } +0x8222CF38 = { name = "rex_sub_8222CF38" } +0x8222D0C0 = { name = "rex_sub_8222D0C0" } +0x8222D3C8 = { name = "rex_sub_8222D3C8" } +0x8222E520 = { name = "rex_sub_8222E520" } +0x8222EB88 = { name = "rex_sub_8222EB88" } +0x8222F3B8 = { name = "rex_sub_8222F3B8" } +0x8222FC00 = { name = "rex_sub_8222FC00" } +0x82230098 = { name = "rex_sub_82230098" } +0x82230A68 = { name = "rex_sub_82230A68" } +0x82230DD8 = { name = "rex_sub_82230DD8" } +0x822322E0 = { name = "rex_sub_822322E0" } +0x82232808 = { name = "rex_sub_82232808" } +0x822328E0 = { name = "rex_sub_822328E0" } +0x82232A98 = { name = "rex_sub_82232A98" } +0x82233208 = { name = "rex_sub_82233208" } +0x82233818 = { name = "rex_sub_82233818" } +0x82233860 = { name = "rex_sub_82233860" } +0x82233E18 = { name = "rex_sub_82233E18" } +0x82233FB0 = { name = "rex_sub_82233FB0" } +0x82234B48 = { name = "rex_sub_82234B48" } +0x82234B88 = { name = "rex_sub_82234B88" } +0x82234D40 = { name = "rex_sub_82234D40" } +0x82234D78 = { name = "rex_sub_82234D78" } +0x82234DA0 = { name = "rex_sub_82234DA0" } +0x82234DA8 = { name = "rex_sub_82234DA8" } +0x82234DB8 = { name = "rex_sub_82234DB8" } +0x82234DC0 = { name = "rex_sub_82234DC0" } +0x82234E00 = { name = "rex_sub_82234E00" } +0x82234E78 = { name = "rex_sub_82234E78" } +0x82234E88 = { name = "rex_sub_82234E88" } +0x82235108 = { name = "rex_sub_82235108" } +0x822352C8 = { name = "rex_sub_822352C8" } +0x82235328 = { name = "rex_sub_82235328" } +0x82235378 = { name = "rex_sub_82235378" } +0x822353D8 = { name = "rex_sub_822353D8" } +0x82235720 = { name = "rex_sub_82235720" } +0x82235788 = { name = "rex_sub_82235788" } +0x82235880 = { name = "rex_sub_82235880" } +0x822358F8 = { name = "rex_sub_822358F8" } +0x82235918 = { name = "rex_sub_82235918" } +0x82235A18 = { name = "rex_sub_82235A18" } +0x82235A38 = { name = "rex_sub_82235A38" } +0x82235A60 = { name = "rex_sub_82235A60" } +0x82235BB8 = { name = "rex_sub_82235BB8" } +0x82235C30 = { name = "rex_sub_82235C30" } +0x82235CD0 = { name = "rex_sub_82235CD0" } +0x82235D20 = { name = "rex_sub_82235D20" } +0x82235DF8 = { name = "rex_sub_82235DF8" } +0x82235E98 = { name = "rex_sub_82235E98" } +0x82235F38 = { name = "rex_sub_82235F38" } +0x82236050 = { name = "rex_sub_82236050" } +0x82236168 = { name = "rex_sub_82236168" } +0x82236228 = { name = "rex_sub_82236228" } +0x82236238 = { name = "rex_sub_82236238" } +0x822362A0 = { name = "rex_sub_822362A0" } +0x82236350 = { name = "rex_sub_82236350" } +0x82236880 = { name = "rex_sub_82236880" } +0x82236958 = { name = "rex_sub_82236958" } +0x82236A40 = { name = "rex_sub_82236A40" } +0x82236C10 = { name = "rex_sub_82236C10" } +0x82236F00 = { name = "rex_sub_82236F00" } +0x82236FD8 = { name = "rex_sub_82236FD8" } +0x82237360 = { name = "rex_sub_82237360" } +0x822374F8 = { name = "rex_sub_822374F8" } +0x82237648 = { name = "rex_sub_82237648" } +0x822378A0 = { name = "rex_sub_822378A0" } +0x82237C90 = { name = "rex_sub_82237C90" } +0x82237DC8 = { name = "rex_sub_82237DC8" } +0x82237FD0 = { name = "rex_sub_82237FD0" } +0x82238218 = { name = "rex_sub_82238218" } +0x822383D8 = { name = "rex_sub_822383D8" } +0x82238670 = { name = "rex_sub_82238670" } +0x82238948 = { name = "rex_sub_82238948" } +0x82239280 = { name = "rex_sub_82239280" } +0x8223A150 = { name = "rex_sub_8223A150" } +0x8223A2E0 = { name = "rex_sub_8223A2E0" } +0x8223B048 = { name = "rex_sub_8223B048" } +0x8223B0F8 = { name = "rex_sub_8223B0F8" } +0x8223B2A8 = { name = "rex_sub_8223B2A8" } +0x8223B848 = { name = "rex_sub_8223B848" } +0x8223B890 = { name = "rex_sub_8223B890" } +0x8223BF58 = { name = "rex_sub_8223BF58" } +0x8223C170 = { name = "rex_sub_8223C170" } +0x8223C660 = { name = "rex_sub_8223C660" } +0x8223DDB0 = { name = "rex_sub_8223DDB0" } +0x8223E680 = { name = "rex_sub_8223E680" } +0x8223E710 = { name = "rex_sub_8223E710" } +0x8223E738 = { name = "rex_sub_8223E738" } +0x8223E7B0 = { name = "rex_sub_8223E7B0" } +0x8223E9B0 = { name = "rex_sub_8223E9B0" } +0x8223EA08 = { name = "rex_sub_8223EA08" } +0x8223EE08 = { name = "rex_sub_8223EE08" } +0x82241048 = { name = "rex_sub_82241048" } +0x822411A0 = { name = "rex_sub_822411A0" } +0x82241218 = { name = "rex_sub_82241218" } +0x82241530 = { name = "rex_sub_82241530" } +0x82241648 = { name = "rex_sub_82241648" } +0x82241758 = { name = "rex_sub_82241758" } +0x82241818 = { name = "rex_sub_82241818" } +0x822419B0 = { name = "rex_sub_822419B0" } +0x82241B68 = { name = "rex_sub_82241B68" } +0x82241C98 = { name = "rex_sub_82241C98" } +0x82241D40 = { name = "rex_sub_82241D40" } +0x822420B0 = { name = "rex_sub_822420B0" } +0x822423C8 = { name = "rex_sub_822423C8" } +0x82242770 = { name = "rex_sub_82242770" } +0x82242B60 = { name = "rex_sub_82242B60" } +0x82242E48 = { name = "rex_sub_82242E48" } +0x82243FF0 = { name = "rex_sub_82243FF0" } +0x82244700 = { name = "rex_sub_82244700" } +0x82244DB8 = { name = "rex_sub_82244DB8" } +0x82246F98 = { name = "rex_sub_82246F98" } +0x82247280 = { name = "rex_sub_82247280" } +0x822476F8 = { name = "rex_sub_822476F8" } +0x82248E98 = { name = "rex_sub_82248E98" } +0x82249110 = { name = "rex_sub_82249110" } +0x82249250 = { name = "rex_sub_82249250" } +0x82249260 = { name = "rex_sub_82249260" } +0x82249270 = { name = "rex_sub_82249270" } +0x822492A8 = { name = "rex_sub_822492A8" } +0x822495D0 = { name = "rex_sub_822495D0" } +0x82249A60 = { name = "rex_sub_82249A60" } +0x82249A80 = { name = "rex_sub_82249A80" } +0x82249A90 = { name = "rex_sub_82249A90" } +0x82249CC8 = { name = "rex_sub_82249CC8" } +0x82249E70 = { name = "rex_sub_82249E70" } +0x82249FB8 = { name = "rex_sub_82249FB8" } +0x82249FC8 = { name = "rex_sub_82249FC8" } +0x8224A038 = { name = "rex_sub_8224A038" } +0x8224A138 = { name = "rex_sub_8224A138" } +0x8224A170 = { name = "rex_sub_8224A170" } +0x8224A1B8 = { name = "rex_sub_8224A1B8" } +0x8224A348 = { name = "rex_sub_8224A348" } +0x8224A430 = { name = "rex_sub_8224A430" } +0x8224A4D0 = { name = "rex_sub_8224A4D0" } +0x8224A938 = { name = "rex_sub_8224A938" } +0x8224AC00 = { name = "rex_sub_8224AC00" } +0x8224B058 = { name = "rex_sub_8224B058" } +0x8224B630 = { name = "rex_sub_8224B630" } +0x8224B7E0 = { name = "rex_sub_8224B7E0" } +0x8224B9B8 = { name = "rex_sub_8224B9B8" } +0x8224BAD0 = { name = "rex_sub_8224BAD0" } +0x8224C1D0 = { name = "rex_sub_8224C1D0" } +0x8224C218 = { name = "rex_sub_8224C218" } +0x8224C250 = { name = "rex_sub_8224C250" } +0x8224C338 = { name = "rex_sub_8224C338" } +0x8224C388 = { name = "rex_sub_8224C388" } +0x8224C3D0 = { name = "rex_sub_8224C3D0" } +0x8224C420 = { name = "rex_sub_8224C420" } +0x8224C4F8 = { name = "rex_sub_8224C4F8" } +0x8224C698 = { name = "rex_sub_8224C698" } +0x8224C6B8 = { name = "rex_sub_8224C6B8" } +0x8224C788 = { name = "rex_sub_8224C788" } +0x8224C798 = { name = "rex_sub_8224C798" } +0x8224C7A8 = { name = "rex_sub_8224C7A8" } +0x8224C7C8 = { name = "rex_sub_8224C7C8" } +0x8224C7E0 = { name = "rex_sub_8224C7E0" } +0x8224C808 = { name = "rex_sub_8224C808" } +0x8224C898 = { name = "rex_sub_8224C898" } +0x8224C8F8 = { name = "rex_sub_8224C8F8" } +0x8224C968 = { name = "rex_sub_8224C968" } +0x8224C9A0 = { name = "rex_sub_8224C9A0" } +0x8224C9D0 = { name = "rex_sub_8224C9D0" } +0x8224CA08 = { name = "rex_sub_8224CA08" } +0x8224CA58 = { name = "rex_sub_8224CA58" } +0x8224CA90 = { name = "rex_sub_8224CA90" } +0x8224CAC8 = { name = "rex_sub_8224CAC8" } +0x8224CB48 = { name = "rex_sub_8224CB48" } +0x8224CBD0 = { name = "rex_sub_8224CBD0" } +0x8224CC00 = { name = "rex_sub_8224CC00" } +0x8224CC30 = { name = "rex_sub_8224CC30" } +0x8224CC90 = { name = "rex_sub_8224CC90" } +0x8224CD08 = { name = "rex_sub_8224CD08" } +0x8224CD70 = { name = "rex_sub_8224CD70" } +0x8224CDB0 = { name = "rex_sub_8224CDB0" } +0x8224CE18 = { name = "rex_sub_8224CE18" } +0x8224CE70 = { name = "rex_sub_8224CE70" } +0x8224CEC8 = { name = "rex_sub_8224CEC8" } +0x8224CEF8 = { name = "rex_sub_8224CEF8" } +0x8224CF70 = { name = "rex_sub_8224CF70" } +0x8224CFE8 = { name = "rex_sub_8224CFE8" } +0x8224D018 = { name = "rex_sub_8224D018" } +0x8224D0F8 = { name = "rex_sub_8224D0F8" } +0x8224D228 = { name = "rex_sub_8224D228" } +0x8224D2C0 = { name = "rex_sub_8224D2C0" } +0x8224D448 = { name = "rex_sub_8224D448" } +0x8224D518 = { name = "rex_sub_8224D518" } +0x8224D6E0 = { name = "rex_sub_8224D6E0" } +0x8224D7F0 = { name = "rex_sub_8224D7F0" } +0x8224D908 = { name = "rex_sub_8224D908" } +0x8224DAF8 = { name = "rex_sub_8224DAF8" } +0x8224DBB8 = { name = "rex_sub_8224DBB8" } +0x8224DBE8 = { name = "rex_sub_8224DBE8" } +0x8224DC18 = { name = "rex_sub_8224DC18" } +0x8224DC48 = { name = "rex_sub_8224DC48" } +0x8224DC78 = { name = "rex_sub_8224DC78" } +0x8224DCD0 = { name = "rex_sub_8224DCD0" } +0x8224DD58 = { name = "rex_sub_8224DD58" } +0x8224DD88 = { name = "rex_sub_8224DD88" } +0x8224DDB8 = { name = "rex_sub_8224DDB8" } +0x8224DDE8 = { name = "rex_sub_8224DDE8" } +0x8224DEA8 = { name = "rex_sub_8224DEA8" } +0x8224DED8 = { name = "rex_sub_8224DED8" } +0x8224DF38 = { name = "rex_sub_8224DF38" } +0x8224DF98 = { name = "rex_sub_8224DF98" } +0x8224DFF8 = { name = "rex_sub_8224DFF8" } +0x8224E0F8 = { name = "rex_sub_8224E0F8" } +0x8224E1A0 = { name = "rex_sub_8224E1A0" } +0x8224E1F0 = { name = "rex_sub_8224E1F0" } +0x8224E3B8 = { name = "rex_sub_8224E3B8" } +0x8224E590 = { name = "rex_sub_8224E590" } +0x8224E600 = { name = "rex_sub_8224E600" } +0x8224E608 = { name = "rex_sub_8224E608" } +0x8224E628 = { name = "rex_sub_8224E628" } +0x8224E638 = { name = "rex_sub_8224E638" } +0x8224E648 = { name = "rex_sub_8224E648" } +0x8224E668 = { name = "rex_sub_8224E668" } +0x8224E758 = { name = "rex_sub_8224E758" } +0x8224E878 = { name = "rex_sub_8224E878" } +0x8224EBC0 = { name = "rex_sub_8224EBC0" } +0x8224EBD0 = { name = "rex_sub_8224EBD0" } +0x8224EC20 = { name = "rex_sub_8224EC20" } +0x8224EC98 = { name = "rex_sub_8224EC98" } +0x8224F010 = { name = "rex_sub_8224F010" } +0x8224F020 = { name = "rex_sub_8224F020" } +0x8224F128 = { name = "rex_sub_8224F128" } +0x8224F198 = { name = "rex_sub_8224F198" } +0x8224F1E0 = { name = "rex_sub_8224F1E0" } +0x8224F230 = { name = "rex_sub_8224F230" } +0x8224F2C8 = { name = "rex_sub_8224F2C8" } +0x8224F318 = { name = "rex_sub_8224F318" } +0x8224F368 = { name = "rex_sub_8224F368" } +0x8224F440 = { name = "rex_sub_8224F440" } +0x8224F530 = { name = "rex_sub_8224F530" } +0x8224F580 = { name = "rex_sub_8224F580" } +0x8224F5B0 = { name = "rex_sub_8224F5B0" } +0x8224F600 = { name = "rex_sub_8224F600" } +0x8224F660 = { name = "rex_sub_8224F660" } +0x8224F6C8 = { name = "rex_sub_8224F6C8" } +0x8224F6D8 = { name = "rex_sub_8224F6D8" } +0x8224F740 = { name = "rex_sub_8224F740" } +0x8224F7B0 = { name = "rex_sub_8224F7B0" } +0x8224F7D0 = { name = "rex_sub_8224F7D0" } +0x8224F800 = { name = "rex_sub_8224F800" } +0x8224F898 = { name = "rex_sub_8224F898" } +0x8224F908 = { name = "rex_sub_8224F908" } +0x8224F9D0 = { name = "rex_sub_8224F9D0" } +0x8224FD48 = { name = "rex_sub_8224FD48" } +0x8224FDB0 = { name = "rex_sub_8224FDB0" } +0x8224FE78 = { name = "rex_sub_8224FE78" } +0x8224FEF0 = { name = "rex_sub_8224FEF0" } +0x8224FF60 = { name = "rex_sub_8224FF60" } +0x82250040 = { name = "rex_sub_82250040" } +0x82250170 = { name = "rex_sub_82250170" } +0x82250220 = { name = "rex_sub_82250220" } +0x822502D0 = { name = "rex_sub_822502D0" } +0x82250398 = { name = "rex_sub_82250398" } +0x82250448 = { name = "rex_sub_82250448" } +0x822504E8 = { name = "rex_sub_822504E8" } +0x82250588 = { name = "rex_sub_82250588" } +0x82250640 = { name = "rex_sub_82250640" } +0x822506E0 = { name = "rex_sub_822506E0" } +0x82250780 = { name = "rex_sub_82250780" } +0x82250830 = { name = "rex_sub_82250830" } +0x822508D8 = { name = "rex_sub_822508D8" } +0x82250A08 = { name = "rex_sub_82250A08" } +0x82250C88 = { name = "rex_sub_82250C88" } +0x82250CE8 = { name = "rex_sub_82250CE8" } +0x82250DB8 = { name = "rex_sub_82250DB8" } +0x82250E78 = { name = "rex_sub_82250E78" } +0x82250F98 = { name = "rex_sub_82250F98" } +0x82251088 = { name = "rex_sub_82251088" } +0x822511F8 = { name = "rex_sub_822511F8" } +0x82251370 = { name = "rex_sub_82251370" } +0x82251440 = { name = "rex_sub_82251440" } +0x82251550 = { name = "rex_sub_82251550" } +0x82251620 = { name = "rex_sub_82251620" } +0x82251788 = { name = "rex_sub_82251788" } +0x82251C10 = { name = "rex_sub_82251C10" } +0x82251F90 = { name = "rex_sub_82251F90" } +0x82252068 = { name = "rex_sub_82252068" } +0x82252AC0 = { name = "rex_sub_82252AC0" } +0x82252E10 = { name = "rex_sub_82252E10" } +0x82252E88 = { name = "rex_sub_82252E88" } +0x82252F50 = { name = "rex_sub_82252F50" } +0x82252FE0 = { name = "rex_sub_82252FE0" } +0x822532F8 = { name = "rex_sub_822532F8" } +0x82253458 = { name = "rex_sub_82253458" } +0x82253530 = { name = "rex_sub_82253530" } +0x82253980 = { name = "rex_sub_82253980" } +0x82253F50 = { name = "rex_sub_82253F50" } +0x82254210 = { name = "rex_sub_82254210" } +0x82254248 = { name = "rex_sub_82254248" } +0x8225424C = { name = "rex_sub_8225424C" } +0x822542A0 = { name = "rex_sub_822542A0" } +0x82254390 = { name = "rex_sub_82254390" } +0x82254540 = { name = "rex_sub_82254540" } +0x822545C8 = { name = "rex_sub_822545C8" } +0x82254620 = { name = "rex_sub_82254620" } +0x82254690 = { name = "rex_sub_82254690" } +0x822546F8 = { name = "rex_sub_822546F8" } +0x82254770 = { name = "rex_sub_82254770" } +0x822547D8 = { name = "rex_sub_822547D8" } +0x82254830 = { name = "rex_sub_82254830" } +0x822548C0 = { name = "rex_sub_822548C0" } +0x82254A60 = { name = "rex_sub_82254A60" } +0x82254AA8 = { name = "rex_sub_82254AA8" } +0x82254CF0 = { name = "rex_sub_82254CF0" } +0x82255040 = { name = "rex_sub_82255040" } +0x82255638 = { name = "rex_sub_82255638" } +0x82255A88 = { name = "rex_sub_82255A88" } +0x82255F38 = { name = "rex_sub_82255F38" } +0x82256070 = { name = "rex_sub_82256070" } +0x82256098 = { name = "rex_sub_82256098" } +0x82256120 = { name = "rex_sub_82256120" } +0x82256170 = { name = "rex_sub_82256170" } +0x822561C0 = { name = "rex_sub_822561C0" } +0x822562E0 = { name = "rex_sub_822562E0" } +0x822563C8 = { name = "rex_sub_822563C8" } +0x822563D0 = { name = "rex_sub_822563D0" } +0x822563E0 = { name = "rex_sub_822563E0" } +0x82256490 = { name = "rex_sub_82256490" } +0x822565D0 = { name = "rex_sub_822565D0" } +0x822566F0 = { name = "rex_sub_822566F0" } +0x82256A40 = { name = "rex_sub_82256A40" } +0x82256AB0 = { name = "rex_sub_82256AB0" } +0x82256BC8 = { name = "rex_sub_82256BC8" } +0x82256C68 = { name = "rex_sub_82256C68" } +0x82256D18 = { name = "rex_sub_82256D18" } +0x82256DD0 = { name = "rex_sub_82256DD0" } +0x82256E80 = { name = "rex_sub_82256E80" } +0x82257218 = { name = "rex_sub_82257218" } +0x82257420 = { name = "rex_sub_82257420" } +0x82257918 = { name = "rex_sub_82257918" } +0x82257AD8 = { name = "rex_sub_82257AD8" } +0x82257FD8 = { name = "rex_sub_82257FD8" } +0x82258068 = { name = "rex_sub_82258068" } +0x82258118 = { name = "rex_sub_82258118" } +0x82258190 = { name = "rex_sub_82258190" } +0x822581F8 = { name = "rex_sub_822581F8" } +0x822585A8 = { name = "rex_sub_822585A8" } +0x82258600 = { name = "rex_sub_82258600" } +0x82258790 = { name = "rex_sub_82258790" } +0x82258858 = { name = "rex_sub_82258858" } +0x822588C0 = { name = "rex_sub_822588C0" } +0x82258918 = { name = "rex_sub_82258918" } +0x822589B8 = { name = "rex_sub_822589B8" } +0x82258A10 = { name = "rex_sub_82258A10" } +0x82258AE0 = { name = "rex_sub_82258AE0" } +0x82258B80 = { name = "rex_sub_82258B80" } +0x82258BE8 = { name = "rex_sub_82258BE8" } +0x82259068 = { name = "rex_sub_82259068" } +0x82259268 = { name = "rex_sub_82259268" } +0x822594D0 = { name = "rex_sub_822594D0" } +0x82259558 = { name = "rex_sub_82259558" } +0x82259680 = { name = "rex_sub_82259680" } +0x82259870 = { name = "rex_sub_82259870" } +0x82259978 = { name = "rex_sub_82259978" } +0x82259A50 = { name = "rex_sub_82259A50" } +0x82259D10 = { name = "rex_sub_82259D10" } +0x8225A080 = { name = "rex_sub_8225A080" } +0x8225A308 = { name = "rex_sub_8225A308" } +0x8225A460 = { name = "rex_sub_8225A460" } +0x8225AEA8 = { name = "rex_sub_8225AEA8" } +0x8225AF30 = { name = "rex_sub_8225AF30" } +0x8225AFB0 = { name = "rex_sub_8225AFB0" } +0x8225B2A0 = { name = "rex_sub_8225B2A0" } +0x8225B440 = { name = "rex_sub_8225B440" } +0x8225B628 = { name = "rex_sub_8225B628" } +0x8225B970 = { name = "rex_sub_8225B970" } +0x8225BDC0 = { name = "rex_sub_8225BDC0" } +0x8225BEA8 = { name = "rex_sub_8225BEA8" } +0x8225BF18 = { name = "rex_sub_8225BF18" } +0x8225BF78 = { name = "rex_sub_8225BF78" } +0x8225BFD8 = { name = "rex_sub_8225BFD8" } +0x8225C078 = { name = "rex_sub_8225C078" } +0x8225C230 = { name = "rex_sub_8225C230" } +0x8225C2B0 = { name = "rex_sub_8225C2B0" } +0x8225C2D8 = { name = "rex_sub_8225C2D8" } +0x8225C300 = { name = "rex_sub_8225C300" } +0x8225C370 = { name = "rex_sub_8225C370" } +0x8225C458 = { name = "rex_sub_8225C458" } +0x8225C4E0 = { name = "rex_sub_8225C4E0" } +0x8225C5E0 = { name = "rex_sub_8225C5E0" } +0x8225C698 = { name = "rex_sub_8225C698" } +0x8225C740 = { name = "rex_sub_8225C740" } +0x8225C980 = { name = "rex_sub_8225C980" } +0x8225CB50 = { name = "rex_sub_8225CB50" } +0x8225CCC0 = { name = "rex_sub_8225CCC0" } +0x8225CF08 = { name = "rex_sub_8225CF08" } +0x8225D1F0 = { name = "rex_sub_8225D1F0" } +0x8225D2A0 = { name = "rex_sub_8225D2A0" } +0x8225D4C0 = { name = "rex_sub_8225D4C0" } +0x8225D558 = { name = "rex_sub_8225D558" } +0x8225D680 = { name = "rex_sub_8225D680" } +0x8225D850 = { name = "rex_sub_8225D850" } +0x8225DA30 = { name = "rex_sub_8225DA30" } +0x8225DD68 = { name = "rex_sub_8225DD68" } +0x8225DDE8 = { name = "rex_sub_8225DDE8" } +0x8225E0C0 = { name = "rex_sub_8225E0C0" } +0x8225E368 = { name = "rex_sub_8225E368" } +0x82260790 = { name = "rex_sub_82260790" } +0x822609F8 = { name = "rex_sub_822609F8" } +0x82260C70 = { name = "rex_sub_82260C70" } +0x82261080 = { name = "rex_sub_82261080" } +0x82261C18 = { name = "rex_sub_82261C18" } +0x82262368 = { name = "rex_sub_82262368" } +0x82262888 = { name = "rex_sub_82262888" } +0x82262DF8 = { name = "rex_sub_82262DF8" } +0x82263100 = { name = "rex_sub_82263100" } +0x822632C8 = { name = "rex_sub_822632C8" } +0x82263760 = { name = "rex_sub_82263760" } +0x82263810 = { name = "rex_sub_82263810" } +0x822638B0 = { name = "rex_sub_822638B0" } +0x82265610 = { name = "rex_sub_82265610" } +0x82265630 = { name = "rex_sub_82265630" } +0x82265638 = { name = "rex_sub_82265638" } +0x82265648 = { name = "rex_sub_82265648" } +0x82265690 = { name = "rex_sub_82265690" } +0x82265810 = { name = "rex_sub_82265810" } +0x822659E0 = { name = "rex_sub_822659E0" } +0x82265A20 = { name = "rex_sub_82265A20" } +0x82265A70 = { name = "rex_sub_82265A70" } +0x82265AE0 = { name = "rex_sub_82265AE0" } +0x82265B50 = { name = "rex_sub_82265B50" } +0x82265B90 = { name = "rex_sub_82265B90" } +0x82265BA0 = { name = "rex_sub_82265BA0" } +0x82265C30 = { name = "rex_sub_82265C30" } +0x82265C40 = { name = "rex_sub_82265C40" } +0x82265CE8 = { name = "rex_sub_82265CE8" } +0x82265D20 = { name = "rex_sub_82265D20" } +0x82265FB0 = { name = "rex_sub_82265FB0" } +0x82265FB8 = { name = "rex_sub_82265FB8" } +0x82266148 = { name = "rex_sub_82266148" } +0x82266190 = { name = "rex_sub_82266190" } +0x822661A0 = { name = "rex_sub_822661A0" } +0x82266210 = { name = "rex_sub_82266210" } +0x82266238 = { name = "rex_sub_82266238" } +0x82266288 = { name = "rex_sub_82266288" } +0x822662F0 = { name = "rex_sub_822662F0" } +0x82266350 = { name = "rex_sub_82266350" } +0x82266498 = { name = "rex_sub_82266498" } +0x822664E0 = { name = "rex_sub_822664E0" } +0x82266500 = { name = "rex_sub_82266500" } +0x82266568 = { name = "rex_sub_82266568" } +0x822665B8 = { name = "rex_sub_822665B8" } +0x82266640 = { name = "rex_sub_82266640" } +0x822666A8 = { name = "rex_sub_822666A8" } +0x822666B8 = { name = "rex_sub_822666B8" } +0x82266778 = { name = "rex_sub_82266778" } +0x82266A38 = { name = "rex_sub_82266A38" } +0x82266AB0 = { name = "rex_sub_82266AB0" } +0x82266B18 = { name = "rex_sub_82266B18" } +0x82266BB0 = { name = "rex_sub_82266BB0" } +0x82266BF0 = { name = "rex_sub_82266BF0" } +0x82266C30 = { name = "rex_sub_82266C30" } +0x82266C70 = { name = "rex_sub_82266C70" } +0x82266CB0 = { name = "rex_sub_82266CB0" } +0x82266CE0 = { name = "rex_sub_82266CE0" } +0x82266D60 = { name = "rex_sub_82266D60" } +0x82266DA8 = { name = "rex_sub_82266DA8" } +0x82266DF8 = { name = "rex_sub_82266DF8" } +0x82266E68 = { name = "rex_sub_82266E68" } +0x82266EA8 = { name = "rex_sub_82266EA8" } +0x82266EC8 = { name = "rex_sub_82266EC8" } +0x82266FB8 = { name = "rex_sub_82266FB8" } +0x82267160 = { name = "rex_sub_82267160" } +0x82267258 = { name = "rex_sub_82267258" } +0x82267398 = { name = "rex_sub_82267398" } +0x82267438 = { name = "rex_sub_82267438" } +0x82267450 = { name = "rex_sub_82267450" } +0x822674B8 = { name = "rex_sub_822674B8" } +0x822674D0 = { name = "rex_sub_822674D0" } +0x82267588 = { name = "rex_sub_82267588" } +0x82267658 = { name = "rex_sub_82267658" } +0x82267738 = { name = "rex_sub_82267738" } +0x82267750 = { name = "rex_sub_82267750" } +0x82267780 = { name = "rex_sub_82267780" } +0x822677B8 = { name = "rex_sub_822677B8" } +0x822677F8 = { name = "rex_sub_822677F8" } +0x82267888 = { name = "rex_sub_82267888" } +0x822678E8 = { name = "rex_sub_822678E8" } +0x82267978 = { name = "rex_sub_82267978" } +0x822679E0 = { name = "rex_sub_822679E0" } +0x82267A48 = { name = "rex_sub_82267A48" } +0x82267AB8 = { name = "rex_sub_82267AB8" } +0x82267B28 = { name = "rex_sub_82267B28" } +0x82267B98 = { name = "rex_sub_82267B98" } +0x82267BB0 = { name = "rex_sub_82267BB0" } +0x82267C18 = { name = "rex_sub_82267C18" } +0x82267CD8 = { name = "rex_sub_82267CD8" } +0x82267D48 = { name = "rex_sub_82267D48" } +0x82267DB8 = { name = "rex_sub_82267DB8" } +0x82267EB8 = { name = "rex_sub_82267EB8" } +0x82267F38 = { name = "rex_sub_82267F38" } +0x82267FC8 = { name = "rex_sub_82267FC8" } +0x82268118 = { name = "rex_sub_82268118" } +0x822681B0 = { name = "rex_sub_822681B0" } +0x82268258 = { name = "rex_sub_82268258" } +0x82268288 = { name = "rex_sub_82268288" } +0x82268380 = { name = "rex_sub_82268380" } +0x822683D0 = { name = "rex_sub_822683D0" } +0x822684D0 = { name = "rex_sub_822684D0" } +0x822685B8 = { name = "rex_sub_822685B8" } +0x82268750 = { name = "rex_sub_82268750" } +0x822688A0 = { name = "rex_sub_822688A0" } +0x82268918 = { name = "rex_sub_82268918" } +0x82268990 = { name = "rex_sub_82268990" } +0x82268A00 = { name = "rex_sub_82268A00" } +0x82268A48 = { name = "rex_sub_82268A48" } +0x82268A68 = { name = "rex_sub_82268A68" } +0x82268B00 = { name = "rex_sub_82268B00" } +0x82268C48 = { name = "rex_sub_82268C48" } +0x82268DE0 = { name = "rex_sub_82268DE0" } +0x82268F78 = { name = "rex_sub_82268F78" } +0x82269160 = { name = "rex_sub_82269160" } +0x822691B8 = { name = "rex_sub_822691B8" } +0x82269248 = { name = "rex_sub_82269248" } +0x822695E8 = { name = "rex_sub_822695E8" } +0x82269660 = { name = "rex_sub_82269660" } +0x82269700 = { name = "rex_sub_82269700" } +0x82269788 = { name = "rex_sub_82269788" } +0x82269800 = { name = "rex_sub_82269800" } +0x822698A0 = { name = "rex_sub_822698A0" } +0x82269988 = { name = "rex_sub_82269988" } +0x82269AA8 = { name = "rex_sub_82269AA8" } +0x82269BA8 = { name = "rex_sub_82269BA8" } +0x82269CD8 = { name = "rex_sub_82269CD8" } +0x82269FD0 = { name = "rex_sub_82269FD0" } +0x8226A210 = { name = "rex_sub_8226A210" } +0x8226A2D0 = { name = "rex_sub_8226A2D0" } +0x8226A530 = { name = "rex_sub_8226A530" } +0x8226A690 = { name = "rex_sub_8226A690" } +0x8226A7B8 = { name = "rex_sub_8226A7B8" } +0x8226A9B0 = { name = "rex_sub_8226A9B0" } +0x8226AAB0 = { name = "rex_sub_8226AAB0" } +0x8226AF70 = { name = "rex_sub_8226AF70" } +0x8226B048 = { name = "rex_sub_8226B048" } +0x8226B0F8 = { name = "rex_sub_8226B0F8" } +0x8226B2F8 = { name = "rex_sub_8226B2F8" } +0x8226BBC8 = { name = "rex_sub_8226BBC8" } +0x8226BED8 = { name = "rex_sub_8226BED8" } +0x8226C068 = { name = "rex_sub_8226C068" } +0x8226CC68 = { name = "rex_sub_8226CC68" } +0x8226CEA0 = { name = "rex_sub_8226CEA0" } +0x8226DE30 = { name = "rex_sub_8226DE30" } +0x8226E5E0 = { name = "rex_sub_8226E5E0" } +0x8226E628 = { name = "rex_sub_8226E628" } +0x8226E860 = { name = "rex_sub_8226E860" } +0x8226E8A8 = { name = "rex_sub_8226E8A8" } +0x8226E988 = { name = "rex_sub_8226E988" } +0x8226EAC0 = { name = "rex_sub_8226EAC0" } +0x8226EB18 = { name = "rex_sub_8226EB18" } +0x8226EB28 = { name = "rex_sub_8226EB28" } +0x8226EBB0 = { name = "rex_sub_8226EBB0" } +0x8226EC10 = { name = "rex_sub_8226EC10" } +0x8226ECA0 = { name = "rex_sub_8226ECA0" } +0x8226ED28 = { name = "rex_sub_8226ED28" } +0x8226EE30 = { name = "rex_sub_8226EE30" } +0x8226EE40 = { name = "rex_sub_8226EE40" } +0x8226EE50 = { name = "rex_sub_8226EE50" } +0x8226EF08 = { name = "rex_sub_8226EF08" } +0x8226F2D8 = { name = "rex_sub_8226F2D8" } +0x8226F500 = { name = "rex_sub_8226F500" } +0x8226F528 = { name = "rex_sub_8226F528" } +0x8226F550 = { name = "rex_sub_8226F550" } +0x8226F690 = { name = "rex_sub_8226F690" } +0x8226F768 = { name = "rex_sub_8226F768" } +0x8226F7E0 = { name = "rex_sub_8226F7E0" } +0x8226F958 = { name = "rex_sub_8226F958" } +0x8226F9C8 = { name = "rex_sub_8226F9C8" } +0x8226FA80 = { name = "rex_sub_8226FA80" } +0x8226FB08 = { name = "rex_sub_8226FB08" } +0x8226FB68 = { name = "rex_sub_8226FB68" } +0x8226FB98 = { name = "rex_sub_8226FB98" } +0x8226FC38 = { name = "rex_sub_8226FC38" } +0x8226FD08 = { name = "rex_sub_8226FD08" } +0x8226FEC0 = { name = "rex_sub_8226FEC0" } +0x8226FF58 = { name = "rex_sub_8226FF58" } +0x8226FFC8 = { name = "rex_sub_8226FFC8" } +0x82270058 = { name = "rex_sub_82270058" } +0x822701B8 = { name = "rex_sub_822701B8" } +0x822704A0 = { name = "rex_sub_822704A0" } +0x82270870 = { name = "rex_sub_82270870" } +0x822708A8 = { name = "rex_sub_822708A8" } +0x822708B8 = { name = "rex_sub_822708B8" } +0x822708D8 = { name = "rex_sub_822708D8" } +0x822708F8 = { name = "rex_sub_822708F8" } +0x82270918 = { name = "rex_sub_82270918" } +0x82270938 = { name = "rex_sub_82270938" } +0x82270958 = { name = "rex_sub_82270958" } +0x82270978 = { name = "rex_sub_82270978" } +0x822709F8 = { name = "rex_sub_822709F8" } +0x82270A30 = { name = "rex_sub_82270A30" } +0x82270A50 = { name = "rex_sub_82270A50" } +0x82270B58 = { name = "rex_sub_82270B58" } +0x82270BC8 = { name = "rex_sub_82270BC8" } +0x82270C18 = { name = "rex_sub_82270C18" } +0x82270CC8 = { name = "rex_sub_82270CC8" } +0x82270D18 = { name = "rex_sub_82270D18" } +0x82270DF0 = { name = "rex_sub_82270DF0" } +0x82270E98 = { name = "rex_sub_82270E98" } +0x82271188 = { name = "rex_sub_82271188" } +0x82271300 = { name = "rex_sub_82271300" } +0x82271350 = { name = "rex_sub_82271350" } +0x822713A0 = { name = "rex_sub_822713A0" } +0x82271448 = { name = "rex_sub_82271448" } +0x82271490 = { name = "rex_sub_82271490" } +0x822714B8 = { name = "rex_sub_822714B8" } +0x82271518 = { name = "rex_sub_82271518" } +0x82271560 = { name = "rex_sub_82271560" } +0x822715C0 = { name = "rex_sub_822715C0" } +0x82271600 = { name = "rex_sub_82271600" } +0x82271610 = { name = "rex_sub_82271610" } +0x82271738 = { name = "rex_sub_82271738" } +0x82271818 = { name = "rex_sub_82271818" } +0x82271908 = { name = "rex_sub_82271908" } +0x822719E8 = { name = "rex_sub_822719E8" } +0x82271AA0 = { name = "rex_sub_82271AA0" } +0x82271B58 = { name = "rex_sub_82271B58" } +0x82271C08 = { name = "rex_sub_82271C08" } +0x82271C30 = { name = "rex_sub_82271C30" } +0x82271C68 = { name = "rex_sub_82271C68" } +0x82271CA0 = { name = "rex_sub_82271CA0" } +0x82271CD8 = { name = "rex_sub_82271CD8" } +0x82271D10 = { name = "rex_sub_82271D10" } +0x82271D48 = { name = "rex_sub_82271D48" } +0x82271D80 = { name = "rex_sub_82271D80" } +0x82271DB8 = { name = "rex_sub_82271DB8" } +0x82271DF0 = { name = "rex_sub_82271DF0" } +0x82271E28 = { name = "rex_sub_82271E28" } +0x82271E60 = { name = "rex_sub_82271E60" } +0x82271E98 = { name = "rex_sub_82271E98" } +0x82271ED0 = { name = "rex_sub_82271ED0" } +0x82271F08 = { name = "rex_sub_82271F08" } +0x82271F40 = { name = "rex_sub_82271F40" } +0x82271F78 = { name = "rex_sub_82271F78" } +0x82271FB0 = { name = "rex_sub_82271FB0" } +0x82271FE8 = { name = "rex_sub_82271FE8" } +0x82272020 = { name = "rex_sub_82272020" } +0x82272058 = { name = "rex_sub_82272058" } +0x82272090 = { name = "rex_sub_82272090" } +0x822720C8 = { name = "rex_sub_822720C8" } +0x82272100 = { name = "rex_sub_82272100" } +0x82272138 = { name = "rex_sub_82272138" } +0x82272170 = { name = "rex_sub_82272170" } +0x822721A8 = { name = "rex_sub_822721A8" } +0x822721E0 = { name = "rex_sub_822721E0" } +0x82272218 = { name = "rex_sub_82272218" } +0x82272250 = { name = "rex_sub_82272250" } +0x82272288 = { name = "rex_sub_82272288" } +0x822722C0 = { name = "rex_sub_822722C0" } +0x822722F8 = { name = "rex_sub_822722F8" } +0x82272330 = { name = "rex_sub_82272330" } +0x82272368 = { name = "rex_sub_82272368" } +0x822723A0 = { name = "rex_sub_822723A0" } +0x822723D8 = { name = "rex_sub_822723D8" } +0x82272410 = { name = "rex_sub_82272410" } +0x82272448 = { name = "rex_sub_82272448" } +0x82272480 = { name = "rex_sub_82272480" } +0x822724B8 = { name = "rex_sub_822724B8" } +0x82272550 = { name = "rex_sub_82272550" } +0x82272598 = { name = "rex_sub_82272598" } +0x82272678 = { name = "rex_sub_82272678" } +0x82272780 = { name = "rex_sub_82272780" } +0x822727E8 = { name = "rex_sub_822727E8" } +0x822729D8 = { name = "rex_sub_822729D8" } +0x822729E0 = { name = "rex_sub_822729E0" } +0x822729E8 = { name = "rex_sub_822729E8" } +0x822729F0 = { name = "rex_sub_822729F0" } +0x822729F8 = { name = "rex_sub_822729F8" } +0x82272A08 = { name = "rex_sub_82272A08" } +0x82272A18 = { name = "rex_sub_82272A18" } +0x82272AB8 = { name = "rex_sub_82272AB8" } +0x82272B10 = { name = "rex_sub_82272B10" } +0x82272D10 = { name = "rex_sub_82272D10" } +0x82272D80 = { name = "rex_sub_82272D80" } +0x82272E48 = { name = "rex_sub_82272E48" } +0x82272F88 = { name = "rex_sub_82272F88" } +0x822730C8 = { name = "rex_sub_822730C8" } +0x82273178 = { name = "rex_sub_82273178" } +0x82273230 = { name = "rex_sub_82273230" } +0x82273238 = { name = "rex_sub_82273238" } +0x82273410 = { name = "rex_sub_82273410" } +0x822735C0 = { name = "rex_sub_822735C0" } +0x82273B30 = { name = "rex_sub_82273B30" } +0x82273B70 = { name = "rex_sub_82273B70" } +0x82273BC0 = { name = "rex_sub_82273BC0" } +0x82273C08 = { name = "rex_sub_82273C08" } +0x82273CC0 = { name = "rex_sub_82273CC0" } +0x82273D78 = { name = "rex_sub_82273D78" } +0x82273DD8 = { name = "rex_sub_82273DD8" } +0x82273E30 = { name = "rex_sub_82273E30" } +0x82273EC0 = { name = "rex_sub_82273EC0" } +0x82273F18 = { name = "rex_sub_82273F18" } +0x82273F30 = { name = "rex_sub_82273F30" } +0x82273FA0 = { name = "rex_sub_82273FA0" } +0x82274010 = { name = "rex_sub_82274010" } +0x82274018 = { name = "rex_sub_82274018" } +0x82274068 = { name = "rex_sub_82274068" } +0x82274088 = { name = "rex_sub_82274088" } +0x822740A8 = { name = "rex_sub_822740A8" } +0x822740B8 = { name = "rex_sub_822740B8" } +0x822740C0 = { name = "rex_sub_822740C0" } +0x82274100 = { name = "rex_sub_82274100" } +0x822747B8 = { name = "rex_sub_822747B8" } +0x822747E8 = { name = "rex_sub_822747E8" } +0x82274878 = { name = "rex_sub_82274878" } +0x82274AA8 = { name = "rex_sub_82274AA8" } +0x82274B20 = { name = "rex_sub_82274B20" } +0x82274C80 = { name = "rex_sub_82274C80" } +0x82274DE0 = { name = "rex_sub_82274DE0" } +0x82274E40 = { name = "rex_sub_82274E40" } +0x82274EA0 = { name = "rex_sub_82274EA0" } +0x82274EB0 = { name = "rex_sub_82274EB0" } +0x82274EF8 = { name = "rex_sub_82274EF8" } +0x82274F38 = { name = "rex_sub_82274F38" } +0x82274F90 = { name = "rex_sub_82274F90" } +0x82275028 = { name = "rex_sub_82275028" } +0x822750E8 = { name = "rex_sub_822750E8" } +0x82275138 = { name = "rex_sub_82275138" } +0x82275148 = { name = "rex_sub_82275148" } +0x82275158 = { name = "rex_sub_82275158" } +0x82275168 = { name = "rex_sub_82275168" } +0x822751E0 = { name = "rex_sub_822751E0" } +0x82275320 = { name = "rex_sub_82275320" } +0x822753F8 = { name = "rex_sub_822753F8" } +0x822754C8 = { name = "rex_sub_822754C8" } +0x82275540 = { name = "rex_sub_82275540" } +0x82275640 = { name = "rex_sub_82275640" } +0x82275740 = { name = "rex_sub_82275740" } +0x822757C8 = { name = "rex_sub_822757C8" } +0x822757E0 = { name = "rex_sub_822757E0" } +0x822757E8 = { name = "rex_sub_822757E8" } +0x82275810 = { name = "rex_sub_82275810" } +0x82275840 = { name = "rex_sub_82275840" } +0x82275A20 = { name = "rex_sub_82275A20" } +0x82275A88 = { name = "rex_sub_82275A88" } +0x82275AF0 = { name = "rex_sub_82275AF0" } +0x82275B58 = { name = "rex_sub_82275B58" } +0x82275BC0 = { name = "rex_sub_82275BC0" } +0x82275C28 = { name = "rex_sub_82275C28" } +0x82275C88 = { name = "rex_sub_82275C88" } +0x82275CE8 = { name = "rex_sub_82275CE8" } +0x82275D60 = { name = "rex_sub_82275D60" } +0x82275DB0 = { name = "rex_sub_82275DB0" } +0x82275E38 = { name = "rex_sub_82275E38" } +0x82275E50 = { name = "rex_sub_82275E50" } +0x82275F88 = { name = "rex_sub_82275F88" } +0x822760B8 = { name = "rex_sub_822760B8" } +0x82276138 = { name = "rex_sub_82276138" } +0x82276318 = { name = "rex_sub_82276318" } +0x822763E8 = { name = "rex_sub_822763E8" } +0x82276510 = { name = "rex_sub_82276510" } +0x822765C8 = { name = "rex_sub_822765C8" } +0x82276680 = { name = "rex_sub_82276680" } +0x82276740 = { name = "rex_sub_82276740" } +0x82276868 = { name = "rex_sub_82276868" } +0x82276890 = { name = "rex_sub_82276890" } +0x82276B08 = { name = "rex_sub_82276B08" } +0x82276DE8 = { name = "rex_sub_82276DE8" } +0x82276EC0 = { name = "rex_sub_82276EC0" } +0x82276F70 = { name = "rex_sub_82276F70" } +0x822770E0 = { name = "rex_sub_822770E0" } +0x822771E8 = { name = "rex_sub_822771E8" } +0x82277320 = { name = "rex_sub_82277320" } +0x82277410 = { name = "rex_sub_82277410" } +0x82277648 = { name = "rex_sub_82277648" } +0x822777F0 = { name = "rex_sub_822777F0" } +0x82277A40 = { name = "rex_sub_82277A40" } +0x82277CA0 = { name = "rex_sub_82277CA0" } +0x82277FD0 = { name = "rex_sub_82277FD0" } +0x82278240 = { name = "rex_sub_82278240" } +0x82278358 = { name = "rex_sub_82278358" } +0x82278450 = { name = "rex_sub_82278450" } +0x82278548 = { name = "rex_sub_82278548" } +0x82278658 = { name = "rex_sub_82278658" } +0x82278B88 = { name = "rex_sub_82278B88" } +0x82278DB0 = { name = "rex_sub_82278DB0" } +0x82278FB0 = { name = "rex_sub_82278FB0" } +0x82279590 = { name = "rex_sub_82279590" } +0x82279718 = { name = "rex_sub_82279718" } +0x82279898 = { name = "rex_sub_82279898" } +0x82279A38 = { name = "rex_sub_82279A38" } +0x82279B28 = { name = "rex_sub_82279B28" } +0x82279EC8 = { name = "rex_sub_82279EC8" } +0x8227A010 = { name = "rex_sub_8227A010" } +0x8227A258 = { name = "rex_sub_8227A258" } +0x8227A400 = { name = "rex_sub_8227A400" } +0x8227A568 = { name = "rex_sub_8227A568" } +0x8227A618 = { name = "rex_sub_8227A618" } +0x8227A860 = { name = "rex_sub_8227A860" } +0x8227B0C0 = { name = "rex_sub_8227B0C0" } +0x8227B510 = { name = "rex_sub_8227B510" } +0x8227BAC0 = { name = "rex_sub_8227BAC0" } +0x8227C098 = { name = "rex_sub_8227C098" } +0x8227C5A8 = { name = "rex_sub_8227C5A8" } +0x8227C608 = { name = "rex_sub_8227C608" } +0x8227CB20 = { name = "rex_sub_8227CB20" } +0x8227CCF0 = { name = "rex_sub_8227CCF0" } +0x8227D3A8 = { name = "rex_sub_8227D3A8" } +0x8227D9F0 = { name = "rex_sub_8227D9F0" } +0x8227DC98 = { name = "rex_sub_8227DC98" } +0x8227DFB0 = { name = "rex_sub_8227DFB0" } +0x8227E2C0 = { name = "rex_sub_8227E2C0" } +0x8227F0C0 = { name = "rex_sub_8227F0C0" } +0x8227F468 = { name = "rex_sub_8227F468" } +0x8227F500 = { name = "rex_sub_8227F500" } +0x8227F770 = { name = "rex_sub_8227F770" } +0x8227F7A0 = { name = "rex_sub_8227F7A0" } +0x8227FA30 = { name = "rex_sub_8227FA30" } +0x8227FBA0 = { name = "rex_sub_8227FBA0" } +0x8227FC00 = { name = "rex_sub_8227FC00" } +0x8227FC58 = { name = "rex_sub_8227FC58" } +0x8227FCF0 = { name = "rex_sub_8227FCF0" } +0x822801E8 = { name = "rex_sub_822801E8" } +0x82280228 = { name = "rex_sub_82280228" } +0x82280280 = { name = "rex_sub_82280280" } +0x822802E0 = { name = "rex_sub_822802E0" } +0x822804C8 = { name = "rex_sub_822804C8" } +0x822804E0 = { name = "rex_sub_822804E0" } +0x822805B8 = { name = "rex_sub_822805B8" } +0x82280630 = { name = "rex_sub_82280630" } +0x822806A0 = { name = "rex_sub_822806A0" } +0x82280710 = { name = "rex_sub_82280710" } +0x82280780 = { name = "rex_sub_82280780" } +0x822807E0 = { name = "rex_sub_822807E0" } +0x82280828 = { name = "rex_sub_82280828" } +0x82280830 = { name = "rex_sub_82280830" } +0x82280838 = { name = "rex_sub_82280838" } +0x822808A0 = { name = "rex_sub_822808A0" } +0x82280A48 = { name = "rex_sub_82280A48" } +0x82280AD0 = { name = "rex_sub_82280AD0" } +0x82280BE8 = { name = "rex_sub_82280BE8" } +0x82280C68 = { name = "rex_sub_82280C68" } +0x82280C78 = { name = "rex_sub_82280C78" } +0x82280CC8 = { name = "rex_sub_82280CC8" } +0x82280E38 = { name = "rex_sub_82280E38" } +0x82280E48 = { name = "rex_sub_82280E48" } +0x82280E88 = { name = "rex_sub_82280E88" } +0x82280ED0 = { name = "rex_sub_82280ED0" } +0x82280F10 = { name = "rex_sub_82280F10" } +0x82280F58 = { name = "rex_sub_82280F58" } +0x82280F60 = { name = "rex_sub_82280F60" } +0x82280FE0 = { name = "rex_sub_82280FE0" } +0x822810E8 = { name = "rex_sub_822810E8" } +0x82281100 = { name = "rex_sub_82281100" } +0x822813C0 = { name = "rex_sub_822813C0" } +0x82281750 = { name = "rex_sub_82281750" } +0x82281A78 = { name = "rex_sub_82281A78" } +0x82281AB0 = { name = "rex_sub_82281AB0" } +0x82281AE8 = { name = "rex_sub_82281AE8" } +0x82281B20 = { name = "rex_sub_82281B20" } +0x82281B58 = { name = "rex_sub_82281B58" } +0x82281BC8 = { name = "rex_sub_82281BC8" } +0x82281D58 = { name = "rex_sub_82281D58" } +0x82281ED8 = { name = "rex_sub_82281ED8" } +0x82281F40 = { name = "rex_sub_82281F40" } +0x82282470 = { name = "rex_sub_82282470" } +0x82282748 = { name = "rex_sub_82282748" } +0x82282788 = { name = "rex_sub_82282788" } +0x82282958 = { name = "rex_sub_82282958" } +0x82282B50 = { name = "rex_sub_82282B50" } +0x82282BC8 = { name = "rex_sub_82282BC8" } +0x82282CA0 = { name = "rex_sub_82282CA0" } +0x82282D20 = { name = "rex_sub_82282D20" } +0x82282FB8 = { name = "rex_sub_82282FB8" } +0x822832A0 = { name = "rex_sub_822832A0" } +0x82283338 = { name = "rex_sub_82283338" } +0x822833D0 = { name = "rex_sub_822833D0" } +0x822834C0 = { name = "rex_sub_822834C0" } +0x82283530 = { name = "rex_sub_82283530" } +0x82283620 = { name = "rex_sub_82283620" } +0x822836A8 = { name = "rex_sub_822836A8" } +0x82283720 = { name = "rex_sub_82283720" } +0x82283728 = { name = "rex_sub_82283728" } +0x82283760 = { name = "rex_sub_82283760" } +0x82283800 = { name = "rex_sub_82283800" } +0x822838A0 = { name = "rex_sub_822838A0" } +0x82283978 = { name = "rex_sub_82283978" } +0x82283A50 = { name = "rex_sub_82283A50" } +0x82283B28 = { name = "rex_sub_82283B28" } +0x82283C00 = { name = "rex_sub_82283C00" } +0x82283CD8 = { name = "rex_sub_82283CD8" } +0x82283D80 = { name = "rex_sub_82283D80" } +0x82283EE8 = { name = "rex_sub_82283EE8" } +0x82283F38 = { name = "rex_sub_82283F38" } +0x82283FC0 = { name = "rex_sub_82283FC0" } +0x82283FE8 = { name = "rex_sub_82283FE8" } +0x82284010 = { name = "rex_sub_82284010" } +0x82284038 = { name = "rex_sub_82284038" } +0x822841B0 = { name = "rex_sub_822841B0" } +0x822841D8 = { name = "rex_sub_822841D8" } +0x82284260 = { name = "rex_sub_82284260" } +0x822842E8 = { name = "rex_sub_822842E8" } +0x82284370 = { name = "rex_sub_82284370" } +0x822843F8 = { name = "rex_sub_822843F8" } +0x82284480 = { name = "rex_sub_82284480" } +0x82284508 = { name = "rex_sub_82284508" } +0x822845A8 = { name = "rex_sub_822845A8" } +0x82284650 = { name = "rex_sub_82284650" } +0x82284738 = { name = "rex_sub_82284738" } +0x82284858 = { name = "rex_sub_82284858" } +0x82284998 = { name = "rex_sub_82284998" } +0x82285180 = { name = "rex_sub_82285180" } +0x822851B8 = { name = "rex_sub_822851B8" } +0x82285C50 = { name = "rex_sub_82285C50" } +0x82285D10 = { name = "rex_sub_82285D10" } +0x82285D60 = { name = "rex_sub_82285D60" } +0x82286668 = { name = "rex_sub_82286668" } +0x82286748 = { name = "rex_sub_82286748" } +0x82286B40 = { name = "rex_sub_82286B40" } +0x82286DB8 = { name = "rex_sub_82286DB8" } +0x82287208 = { name = "rex_sub_82287208" } +0x82287898 = { name = "rex_sub_82287898" } +0x82287A98 = { name = "rex_sub_82287A98" } +0x82287B68 = { name = "rex_sub_82287B68" } +0x82287BB0 = { name = "rex_sub_82287BB0" } +0x82287C60 = { name = "rex_sub_82287C60" } +0x82287CF8 = { name = "rex_sub_82287CF8" } +0x82287F78 = { name = "rex_sub_82287F78" } +0x82288040 = { name = "rex_sub_82288040" } +0x822880C0 = { name = "rex_sub_822880C0" } +0x82288268 = { name = "rex_sub_82288268" } +0x82288358 = { name = "rex_sub_82288358" } +0x822884C8 = { name = "rex_sub_822884C8" } +0x82288590 = { name = "rex_sub_82288590" } +0x82288620 = { name = "rex_sub_82288620" } +0x822886B0 = { name = "rex_sub_822886B0" } +0x82288720 = { name = "rex_sub_82288720" } +0x822889F8 = { name = "rex_sub_822889F8" } +0x82288A90 = { name = "rex_sub_82288A90" } +0x82288BD8 = { name = "rex_sub_82288BD8" } +0x82288C30 = { name = "rex_sub_82288C30" } +0x82288DB8 = { name = "rex_sub_82288DB8" } +0x82288F18 = { name = "rex_sub_82288F18" } +0x82289020 = { name = "rex_sub_82289020" } +0x82289240 = { name = "rex_sub_82289240" } +0x82289440 = { name = "rex_sub_82289440" } +0x822894F8 = { name = "rex_sub_822894F8" } +0x82289538 = { name = "rex_sub_82289538" } +0x82289670 = { name = "rex_sub_82289670" } +0x822896C0 = { name = "rex_sub_822896C0" } +0x82289960 = { name = "rex_sub_82289960" } +0x8228A938 = { name = "rex_sub_8228A938" } +0x8228AB48 = { name = "rex_sub_8228AB48" } +0x8228AC30 = { name = "rex_sub_8228AC30" } +0x8228AD28 = { name = "rex_sub_8228AD28" } +0x8228AE50 = { name = "rex_sub_8228AE50" } +0x8228AEF0 = { name = "rex_sub_8228AEF0" } +0x8228AF78 = { name = "rex_sub_8228AF78" } +0x8228AFF8 = { name = "rex_sub_8228AFF8" } +0x8228B130 = { name = "rex_sub_8228B130" } +0x8228B1D8 = { name = "rex_sub_8228B1D8" } +0x8228B230 = { name = "rex_sub_8228B230" } +0x8228B290 = { name = "rex_sub_8228B290" } +0x8228B300 = { name = "rex_sub_8228B300" } +0x8228B350 = { name = "rex_sub_8228B350" } +0x8228B380 = { name = "rex_sub_8228B380" } +0x8228B3B0 = { name = "rex_sub_8228B3B0" } +0x8228B3D0 = { name = "rex_sub_8228B3D0" } +0x8228B3F0 = { name = "rex_sub_8228B3F0" } +0x8228B468 = { name = "rex_sub_8228B468" } +0x8228B4A0 = { name = "rex_sub_8228B4A0" } +0x8228B4C0 = { name = "rex_sub_8228B4C0" } +0x8228B538 = { name = "rex_sub_8228B538" } +0x8228B550 = { name = "rex_sub_8228B550" } +0x8228B568 = { name = "rex_sub_8228B568" } +0x8228B578 = { name = "rex_sub_8228B578" } +0x8228B590 = { name = "rex_sub_8228B590" } +0x8228B598 = { name = "rex_sub_8228B598" } +0x8228B5A8 = { name = "rex_sub_8228B5A8" } +0x8228B5E0 = { name = "rex_sub_8228B5E0" } +0x8228B680 = { name = "rex_sub_8228B680" } +0x8228B6A0 = { name = "rex_sub_8228B6A0" } +0x8228B6D8 = { name = "rex_sub_8228B6D8" } +0x8228B6F0 = { name = "rex_sub_8228B6F0" } +0x8228B728 = { name = "rex_sub_8228B728" } +0x8228B780 = { name = "rex_sub_8228B780" } +0x8228B7C8 = { name = "rex_sub_8228B7C8" } +0x8228B7F8 = { name = "rex_sub_8228B7F8" } +0x8228B878 = { name = "rex_sub_8228B878" } +0x8228B8F8 = { name = "rex_sub_8228B8F8" } +0x8228B958 = { name = "rex_sub_8228B958" } +0x8228BA58 = { name = "rex_sub_8228BA58" } +0x8228BAD0 = { name = "rex_sub_8228BAD0" } +0x8228BB30 = { name = "rex_sub_8228BB30" } +0x8228BC90 = { name = "rex_sub_8228BC90" } +0x8228BD28 = { name = "rex_sub_8228BD28" } +0x8228BDE8 = { name = "rex_sub_8228BDE8" } +0x8228BE68 = { name = "rex_sub_8228BE68" } +0x8228BE78 = { name = "rex_sub_8228BE78" } +0x8228C568 = { name = "rex_sub_8228C568" } +0x8228C618 = { name = "rex_sub_8228C618" } +0x8228C788 = { name = "rex_sub_8228C788" } +0x8228C8B0 = { name = "rex_sub_8228C8B0" } +0x8228C948 = { name = "rex_sub_8228C948" } +0x8228C9E8 = { name = "rex_sub_8228C9E8" } +0x8228CAC0 = { name = "rex_sub_8228CAC0" } +0x8228CE18 = { name = "rex_sub_8228CE18" } +0x8228CEE8 = { name = "rex_sub_8228CEE8" } +0x8228D1E0 = { name = "rex_sub_8228D1E0" } +0x8228D280 = { name = "rex_sub_8228D280" } +0x8228D3C0 = { name = "rex_sub_8228D3C0" } +0x8228D4F0 = { name = "rex_sub_8228D4F0" } +0x8228D590 = { name = "rex_sub_8228D590" } +0x8228D768 = { name = "rex_sub_8228D768" } +0x8228D7C0 = { name = "rex_sub_8228D7C0" } +0x8228D8E0 = { name = "rex_sub_8228D8E0" } +0x8228D9D0 = { name = "rex_sub_8228D9D0" } +0x8228DA38 = { name = "rex_sub_8228DA38" } +0x8228DA48 = { name = "rex_sub_8228DA48" } +0x8228DAB0 = { name = "rex_sub_8228DAB0" } +0x8228DB18 = { name = "rex_sub_8228DB18" } +0x8228DB78 = { name = "rex_sub_8228DB78" } +0x8228DBC8 = { name = "rex_sub_8228DBC8" } +0x8228DC38 = { name = "rex_sub_8228DC38" } +0x8228DCC8 = { name = "rex_sub_8228DCC8" } +0x8228DD18 = { name = "rex_sub_8228DD18" } +0x8228DD88 = { name = "rex_sub_8228DD88" } +0x8228DE18 = { name = "rex_sub_8228DE18" } +0x8228DE78 = { name = "rex_sub_8228DE78" } +0x8228E150 = { name = "rex_sub_8228E150" } +0x8228E408 = { name = "rex_sub_8228E408" } +0x8228E5B8 = { name = "rex_sub_8228E5B8" } +0x8228E5D8 = { name = "rex_sub_8228E5D8" } +0x8228E5E8 = { name = "rex_sub_8228E5E8" } +0x8228E618 = { name = "rex_sub_8228E618" } +0x8228E6F0 = { name = "rex_sub_8228E6F0" } +0x8228E738 = { name = "rex_sub_8228E738" } +0x8228E808 = { name = "rex_sub_8228E808" } +0x8228E898 = { name = "rex_sub_8228E898" } +0x8228E8E8 = { name = "rex_sub_8228E8E8" } +0x8228E9A0 = { name = "rex_sub_8228E9A0" } +0x8228EA90 = { name = "rex_sub_8228EA90" } +0x8228EBA8 = { name = "rex_sub_8228EBA8" } +0x8228ECC0 = { name = "rex_sub_8228ECC0" } +0x8228ED30 = { name = "rex_sub_8228ED30" } +0x8228EDB0 = { name = "rex_sub_8228EDB0" } +0x8228EE20 = { name = "rex_sub_8228EE20" } +0x8228EF10 = { name = "rex_sub_8228EF10" } +0x8228F000 = { name = "rex_sub_8228F000" } +0x8228F088 = { name = "rex_sub_8228F088" } +0x8228F110 = { name = "rex_sub_8228F110" } +0x8228F198 = { name = "rex_sub_8228F198" } +0x8228F258 = { name = "rex_sub_8228F258" } +0x8228F440 = { name = "rex_sub_8228F440" } +0x8228F578 = { name = "rex_sub_8228F578" } +0x8228F768 = { name = "rex_sub_8228F768" } +0x8228F838 = { name = "rex_sub_8228F838" } +0x8228F948 = { name = "rex_sub_8228F948" } +0x8228FED0 = { name = "rex_sub_8228FED0" } +0x822900B8 = { name = "rex_sub_822900B8" } +0x82290758 = { name = "rex_sub_82290758" } +0x822909D8 = { name = "rex_sub_822909D8" } +0x82290DA0 = { name = "rex_sub_82290DA0" } +0x82291608 = { name = "rex_sub_82291608" } +0x82291BC0 = { name = "rex_sub_82291BC0" } +0x822920F8 = { name = "rex_sub_822920F8" } +0x82292658 = { name = "rex_sub_82292658" } +0x82292B20 = { name = "rex_sub_82292B20" } +0x82292D68 = { name = "rex_sub_82292D68" } +0x82293128 = { name = "rex_sub_82293128" } +0x822937E0 = { name = "rex_sub_822937E0" } +0x82293840 = { name = "rex_sub_82293840" } +0x822938B8 = { name = "rex_sub_822938B8" } +0x822938C0 = { name = "rex_sub_822938C0" } +0x82293960 = { name = "rex_sub_82293960" } +0x82293AD0 = { name = "rex_sub_82293AD0" } +0x82293CC8 = { name = "rex_sub_82293CC8" } +0x82293D10 = { name = "rex_sub_82293D10" } +0x82293D48 = { name = "rex_sub_82293D48" } +0x82293F20 = { name = "rex_sub_82293F20" } +0x82293F70 = { name = "rex_sub_82293F70" } +0x822940A8 = { name = "rex_sub_822940A8" } +0x82294148 = { name = "rex_sub_82294148" } +0x822941C0 = { name = "rex_sub_822941C0" } +0x82294218 = { name = "rex_sub_82294218" } +0x82294270 = { name = "rex_sub_82294270" } +0x82294360 = { name = "rex_sub_82294360" } +0x82294530 = { name = "rex_sub_82294530" } +0x82294BE8 = { name = "rex_sub_82294BE8" } +0x82294C58 = { name = "rex_sub_82294C58" } +0x82294CF8 = { name = "rex_sub_82294CF8" } +0x82294D88 = { name = "rex_sub_82294D88" } +0x82294E30 = { name = "rex_sub_82294E30" } +0x82294FA8 = { name = "rex_sub_82294FA8" } +0x822951A8 = { name = "rex_sub_822951A8" } +0x82295398 = { name = "rex_sub_82295398" } +0x82295420 = { name = "rex_sub_82295420" } +0x82295640 = { name = "rex_sub_82295640" } +0x822960D8 = { name = "rex_sub_822960D8" } +0x82296208 = { name = "rex_sub_82296208" } +0x822963B8 = { name = "rex_sub_822963B8" } +0x822964A0 = { name = "rex_sub_822964A0" } +0x822965B0 = { name = "rex_sub_822965B0" } +0x822969A8 = { name = "rex_sub_822969A8" } +0x822969F8 = { name = "rex_sub_822969F8" } +0x82296D30 = { name = "rex_sub_82296D30" } +0x82296D98 = { name = "rex_sub_82296D98" } +0x82297080 = { name = "rex_sub_82297080" } +0x822970F8 = { name = "rex_sub_822970F8" } +0x822974F8 = { name = "rex_sub_822974F8" } +0x822975F8 = { name = "rex_sub_822975F8" } +0x822976D8 = { name = "rex_sub_822976D8" } +0x82297988 = { name = "rex_sub_82297988" } +0x82297A68 = { name = "rex_sub_82297A68" } +0x82297C80 = { name = "rex_sub_82297C80" } +0x82297D48 = { name = "rex_sub_82297D48" } +0x82297E78 = { name = "rex_sub_82297E78" } +0x82297F48 = { name = "rex_sub_82297F48" } +0x82298070 = { name = "rex_sub_82298070" } +0x82298220 = { name = "rex_sub_82298220" } +0x82298268 = { name = "rex_sub_82298268" } +0x82298438 = { name = "rex_sub_82298438" } +0x82298500 = { name = "rex_sub_82298500" } +0x82298508 = { name = "rex_sub_82298508" } +0x82298630 = { name = "rex_sub_82298630" } +0x822986C0 = { name = "rex_sub_822986C0" } +0x822986E0 = { name = "rex_sub_822986E0" } +0x82298748 = { name = "rex_sub_82298748" } +0x82298A18 = { name = "rex_sub_82298A18" } +0x82298A80 = { name = "rex_sub_82298A80" } +0x82298A98 = { name = "rex_sub_82298A98" } +0x82298B78 = { name = "rex_sub_82298B78" } +0x82298B88 = { name = "rex_sub_82298B88" } +0x82298E18 = { name = "rex_sub_82298E18" } +0x82298EA8 = { name = "rex_sub_82298EA8" } +0x82298F58 = { name = "rex_sub_82298F58" } +0x82298F68 = { name = "rex_sub_82298F68" } +0x82298FE8 = { name = "rex_sub_82298FE8" } +0x82299068 = { name = "rex_sub_82299068" } +0x822990F0 = { name = "rex_sub_822990F0" } +0x82299118 = { name = "rex_sub_82299118" } +0x82299188 = { name = "rex_sub_82299188" } +0x822991F8 = { name = "rex_sub_822991F8" } +0x82299360 = { name = "rex_sub_82299360" } +0x822993F8 = { name = "rex_sub_822993F8" } +0x82299428 = { name = "rex_sub_82299428" } +0x82299430 = { name = "rex_sub_82299430" } +0x822999E8 = { name = "rex_sub_822999E8" } +0x82299A90 = { name = "rex_sub_82299A90" } +0x82299C10 = { name = "rex_sub_82299C10" } +0x82299E18 = { name = "rex_sub_82299E18" } +0x82299F58 = { name = "rex_sub_82299F58" } +0x8229A028 = { name = "rex_sub_8229A028" } +0x8229A1D8 = { name = "rex_sub_8229A1D8" } +0x8229A3D8 = { name = "rex_sub_8229A3D8" } +0x8229A760 = { name = "rex_sub_8229A760" } +0x8229A9B0 = { name = "rex_sub_8229A9B0" } +0x8229AB38 = { name = "rex_sub_8229AB38" } +0x8229ACD0 = { name = "rex_sub_8229ACD0" } +0x8229AD68 = { name = "rex_sub_8229AD68" } +0x8229AF60 = { name = "rex_sub_8229AF60" } +0x8229B640 = { name = "rex_sub_8229B640" } +0x8229BA50 = { name = "rex_sub_8229BA50" } +0x8229BBA0 = { name = "rex_sub_8229BBA0" } +0x8229BC10 = { name = "rex_sub_8229BC10" } +0x8229BC98 = { name = "rex_sub_8229BC98" } +0x8229C4D8 = { name = "rex_sub_8229C4D8" } +0x8229C930 = { name = "rex_sub_8229C930" } +0x8229D2D8 = { name = "rex_sub_8229D2D8" } +0x8229D428 = { name = "rex_sub_8229D428" } +0x8229D460 = { name = "rex_sub_8229D460" } +0x8229D498 = { name = "rex_sub_8229D498" } +0x8229D508 = { name = "rex_sub_8229D508" } +0x8229D568 = { name = "rex_sub_8229D568" } +0x8229D5F8 = { name = "rex_sub_8229D5F8" } +0x8229D658 = { name = "rex_sub_8229D658" } +0x8229D708 = { name = "rex_sub_8229D708" } +0x8229D810 = { name = "rex_sub_8229D810" } +0x8229D830 = { name = "rex_sub_8229D830" } +0x8229D840 = { name = "rex_sub_8229D840" } +0x8229D850 = { name = "rex_sub_8229D850" } +0x8229D868 = { name = "rex_sub_8229D868" } +0x8229DB90 = { name = "rex_sub_8229DB90" } +0x8229DBF8 = { name = "rex_sub_8229DBF8" } +0x8229DC98 = { name = "rex_sub_8229DC98" } +0x8229DCB0 = { name = "rex_sub_8229DCB0" } +0x8229DD10 = { name = "rex_sub_8229DD10" } +0x8229DD40 = { name = "rex_sub_8229DD40" } +0x8229DD68 = { name = "rex_sub_8229DD68" } +0x8229DD78 = { name = "rex_sub_8229DD78" } +0x8229DDF0 = { name = "rex_sub_8229DDF0" } +0x8229DF40 = { name = "rex_sub_8229DF40" } +0x8229E218 = { name = "rex_sub_8229E218" } +0x8229E420 = { name = "rex_sub_8229E420" } +0x8229E4F8 = { name = "rex_sub_8229E4F8" } +0x8229E5A8 = { name = "rex_sub_8229E5A8" } +0x8229E638 = { name = "rex_sub_8229E638" } +0x8229E678 = { name = "rex_sub_8229E678" } +0x8229E900 = { name = "rex_sub_8229E900" } +0x8229FC10 = { name = "rex_sub_8229FC10" } +0x822A0300 = { name = "rex_sub_822A0300" } +0x822A0938 = { name = "rex_sub_822A0938" } +0x822A0BF8 = { name = "rex_sub_822A0BF8" } +0x822A0DE0 = { name = "rex_sub_822A0DE0" } +0x822A1018 = { name = "rex_sub_822A1018" } +0x822A1090 = { name = "rex_sub_822A1090" } +0x822A1100 = { name = "rex_sub_822A1100" } +0x822A1190 = { name = "rex_sub_822A1190" } +0x822A1220 = { name = "rex_sub_822A1220" } +0x822A12E8 = { name = "rex_sub_822A12E8" } +0x822A1358 = { name = "rex_sub_822A1358" } +0x822A13D8 = { name = "rex_sub_822A13D8" } +0x822A1480 = { name = "rex_sub_822A1480" } +0x822A14A8 = { name = "rex_sub_822A14A8" } +0x822A14D0 = { name = "rex_sub_822A14D0" } +0x822A1550 = { name = "rex_sub_822A1550" } +0x822A1618 = { name = "rex_sub_822A1618" } +0x822A1670 = { name = "rex_sub_822A1670" } +0x822A1788 = { name = "rex_sub_822A1788" } +0x822A17C0 = { name = "rex_sub_822A17C0" } +0x822A1808 = { name = "rex_sub_822A1808" } +0x822A1820 = { name = "rex_sub_822A1820" } +0x822A1910 = { name = "rex_sub_822A1910" } +0x822A1A38 = { name = "rex_sub_822A1A38" } +0x822A1AD8 = { name = "rex_sub_822A1AD8" } +0x822A1B58 = { name = "rex_sub_822A1B58" } +0x822A1BE8 = { name = "rex_sub_822A1BE8" } +0x822A1E30 = { name = "rex_sub_822A1E30" } +0x822A1EE8 = { name = "rex_sub_822A1EE8" } +0x822A1F90 = { name = "rex_sub_822A1F90" } +0x822A26C0 = { name = "rex_sub_822A26C0" } +0x822A2708 = { name = "rex_sub_822A2708" } +0x822A27A0 = { name = "rex_sub_822A27A0" } +0x822A2838 = { name = "rex_sub_822A2838" } +0x822A2AC8 = { name = "rex_sub_822A2AC8" } +0x822A2B28 = { name = "rex_sub_822A2B28" } +0x822A2B78 = { name = "rex_sub_822A2B78" } +0x822A2CE8 = { name = "rex_sub_822A2CE8" } +0x822A2D68 = { name = "rex_sub_822A2D68" } +0x822A2DF0 = { name = "rex_sub_822A2DF0" } +0x822A2E40 = { name = "rex_sub_822A2E40" } +0x822A30E8 = { name = "rex_sub_822A30E8" } +0x822A3318 = { name = "rex_sub_822A3318" } +0x822A36A8 = { name = "rex_sub_822A36A8" } +0x822A3B18 = { name = "rex_sub_822A3B18" } +0x822A3EF0 = { name = "rex_sub_822A3EF0" } +0x822A3F30 = { name = "rex_sub_822A3F30" } +0x822A4030 = { name = "rex_sub_822A4030" } +0x822A4188 = { name = "rex_sub_822A4188" } +0x822A4200 = { name = "rex_sub_822A4200" } +0x822A42B8 = { name = "rex_sub_822A42B8" } +0x822A42E0 = { name = "rex_sub_822A42E0" } +0x822A43A0 = { name = "rex_sub_822A43A0" } +0x822A43F8 = { name = "rex_sub_822A43F8" } +0x822A4460 = { name = "rex_sub_822A4460" } +0x822A44B0 = { name = "rex_sub_822A44B0" } +0x822A4570 = { name = "rex_sub_822A4570" } +0x822A48D8 = { name = "rex_sub_822A48D8" } +0x822A4D10 = { name = "rex_sub_822A4D10" } +0x822A51B0 = { name = "rex_sub_822A51B0" } +0x822A52C8 = { name = "rex_sub_822A52C8" } +0x822A5438 = { name = "rex_sub_822A5438" } +0x822A5B60 = { name = "rex_sub_822A5B60" } +0x822A5C48 = { name = "rex_sub_822A5C48" } +0x822A5C90 = { name = "rex_sub_822A5C90" } +0x822A5D78 = { name = "rex_sub_822A5D78" } +0x822A5E90 = { name = "rex_sub_822A5E90" } +0x822A5ED8 = { name = "rex_sub_822A5ED8" } +0x822A5F08 = { name = "rex_sub_822A5F08" } +0x822A5FB8 = { name = "rex_sub_822A5FB8" } +0x822A6038 = { name = "rex_sub_822A6038" } +0x822A60C0 = { name = "rex_sub_822A60C0" } +0x822A6118 = { name = "rex_sub_822A6118" } +0x822A6168 = { name = "rex_sub_822A6168" } +0x822A62C8 = { name = "rex_sub_822A62C8" } +0x822A6370 = { name = "rex_sub_822A6370" } +0x822A63E8 = { name = "rex_sub_822A63E8" } +0x822A6520 = { name = "rex_sub_822A6520" } +0x822A6630 = { name = "rex_sub_822A6630" } +0x822A6728 = { name = "rex_sub_822A6728" } +0x822A6800 = { name = "rex_sub_822A6800" } +0x822A68C8 = { name = "rex_sub_822A68C8" } +0x822A6A28 = { name = "rex_sub_822A6A28" } +0x822A6A60 = { name = "rex_sub_822A6A60" } +0x822A6C30 = { name = "rex_sub_822A6C30" } +0x822A6F10 = { name = "rex_sub_822A6F10" } +0x822A7198 = { name = "rex_sub_822A7198" } +0x822A7618 = { name = "rex_sub_822A7618" } +0x822A76F0 = { name = "rex_sub_822A76F0" } +0x822A78D8 = { name = "rex_sub_822A78D8" } +0x822A7D58 = { name = "rex_sub_822A7D58" } +0x822A7EE0 = { name = "rex_sub_822A7EE0" } +0x822A81A8 = { name = "rex_sub_822A81A8" } +0x822A81B0 = { name = "rex_sub_822A81B0" } +0x822A8200 = { name = "rex_sub_822A8200" } +0x822A82E0 = { name = "rex_sub_822A82E0" } +0x822A8408 = { name = "rex_sub_822A8408" } +0x822A8458 = { name = "rex_sub_822A8458" } +0x822A85E8 = { name = "rex_sub_822A85E8" } +0x822A86B8 = { name = "rex_sub_822A86B8" } +0x822A87B8 = { name = "rex_sub_822A87B8" } +0x822A8830 = { name = "rex_sub_822A8830" } +0x822A8998 = { name = "rex_sub_822A8998" } +0x822A89F0 = { name = "rex_sub_822A89F0" } +0x822A8AD8 = { name = "rex_sub_822A8AD8" } +0x822A8B20 = { name = "rex_sub_822A8B20" } +0x822A8D88 = { name = "rex_sub_822A8D88" } +0x822A8E30 = { name = "rex_sub_822A8E30" } +0x822A8F88 = { name = "rex_sub_822A8F88" } +0x822A9340 = { name = "rex_sub_822A9340" } +0x822A93D0 = { name = "rex_sub_822A93D0" } +0x822A9630 = { name = "rex_sub_822A9630" } +0x822A9B90 = { name = "rex_sub_822A9B90" } +0x822A9B98 = { name = "rex_sub_822A9B98" } +0x822A9C10 = { name = "rex_sub_822A9C10" } +0x822A9FB0 = { name = "rex_sub_822A9FB0" } +0x822AA108 = { name = "rex_sub_822AA108" } +0x822AA240 = { name = "rex_sub_822AA240" } +0x822AA260 = { name = "rex_sub_822AA260" } +0x822AA2A8 = { name = "rex_sub_822AA2A8" } +0x822AA398 = { name = "rex_sub_822AA398" } +0x822AA4A0 = { name = "rex_sub_822AA4A0" } +0x822AA4A8 = { name = "rex_sub_822AA4A8" } +0x822AA8C8 = { name = "rex_sub_822AA8C8" } +0x822AA930 = { name = "rex_sub_822AA930" } +0x822AAA68 = { name = "rex_sub_822AAA68" } +0x822AAB78 = { name = "rex_sub_822AAB78" } +0x822AAC20 = { name = "rex_sub_822AAC20" } +0x822AAD18 = { name = "rex_sub_822AAD18" } +0x822AADF0 = { name = "rex_sub_822AADF0" } +0x822AAE98 = { name = "rex_sub_822AAE98" } +0x822AAF70 = { name = "rex_sub_822AAF70" } +0x822AB090 = { name = "rex_sub_822AB090" } +0x822AB1A0 = { name = "rex_sub_822AB1A0" } +0x822AB400 = { name = "rex_sub_822AB400" } +0x822AB4B8 = { name = "rex_sub_822AB4B8" } +0x822AB5A0 = { name = "rex_sub_822AB5A0" } +0x822AB698 = { name = "rex_sub_822AB698" } +0x822AB718 = { name = "rex_sub_822AB718" } +0x822AB8B0 = { name = "rex_sub_822AB8B0" } +0x822AB908 = { name = "rex_sub_822AB908" } +0x822ABA50 = { name = "rex_sub_822ABA50" } +0x822ABAC8 = { name = "rex_sub_822ABAC8" } +0x822ABAF0 = { name = "rex_sub_822ABAF0" } +0x822ABC28 = { name = "rex_sub_822ABC28" } +0x822ABC58 = { name = "rex_sub_822ABC58" } +0x822ABD28 = { name = "rex_sub_822ABD28" } +0x822ABE90 = { name = "rex_sub_822ABE90" } +0x822AC1B0 = { name = "rex_sub_822AC1B0" } +0x822AC2E8 = { name = "rex_sub_822AC2E8" } +0x822AC400 = { name = "rex_sub_822AC400" } +0x822AC4A8 = { name = "rex_sub_822AC4A8" } +0x822AC538 = { name = "rex_sub_822AC538" } +0x822AC5F8 = { name = "rex_sub_822AC5F8" } +0x822AC778 = { name = "rex_sub_822AC778" } +0x822AC788 = { name = "rex_sub_822AC788" } +0x822AC800 = { name = "rex_sub_822AC800" } +0x822AC830 = { name = "rex_sub_822AC830" } +0x822AC860 = { name = "rex_sub_822AC860" } +0x822AC900 = { name = "rex_sub_822AC900" } +0x822AC948 = { name = "rex_sub_822AC948" } +0x822AC9E0 = { name = "rex_sub_822AC9E0" } +0x822ACA80 = { name = "rex_sub_822ACA80" } +0x822ACB38 = { name = "rex_sub_822ACB38" } +0x822ACB50 = { name = "rex_sub_822ACB50" } +0x822ACB80 = { name = "rex_sub_822ACB80" } +0x822ACD40 = { name = "rex_sub_822ACD40" } +0x822ACF90 = { name = "rex_sub_822ACF90" } +0x822ADB08 = { name = "rex_sub_822ADB08" } +0x822ADDD0 = { name = "rex_sub_822ADDD0" } +0x822AE200 = { name = "rex_sub_822AE200" } +0x822AE540 = { name = "rex_sub_822AE540" } +0x822AE5C8 = { name = "rex_sub_822AE5C8" } +0x822AE758 = { name = "rex_sub_822AE758" } +0x822AE808 = { name = "rex_sub_822AE808" } +0x822AE8A8 = { name = "rex_sub_822AE8A8" } +0x822AE928 = { name = "rex_sub_822AE928" } +0x822AE9B0 = { name = "rex_sub_822AE9B0" } +0x822AEA38 = { name = "rex_sub_822AEA38" } +0x822AEAD0 = { name = "rex_sub_822AEAD0" } +0x822AEB58 = { name = "rex_sub_822AEB58" } +0x822AEBF0 = { name = "rex_sub_822AEBF0" } +0x822AEC88 = { name = "rex_sub_822AEC88" } +0x822AECE8 = { name = "rex_sub_822AECE8" } +0x822AED58 = { name = "rex_sub_822AED58" } +0x822AEDC8 = { name = "rex_sub_822AEDC8" } +0x822AEDF0 = { name = "rex_sub_822AEDF0" } +0x822AEE40 = { name = "rex_sub_822AEE40" } +0x822AEED8 = { name = "rex_sub_822AEED8" } +0x822AEF50 = { name = "rex_sub_822AEF50" } +0x822AEFD0 = { name = "rex_sub_822AEFD0" } +0x822AF000 = { name = "rex_sub_822AF000" } +0x822AF380 = { name = "rex_sub_822AF380" } +0x822AF518 = { name = "rex_sub_822AF518" } +0x822AF5A0 = { name = "rex_sub_822AF5A0" } +0x822AF618 = { name = "rex_sub_822AF618" } +0x822AF640 = { name = "rex_sub_822AF640" } +0x822AF668 = { name = "rex_sub_822AF668" } +0x822AF6E0 = { name = "rex_sub_822AF6E0" } +0x822AF708 = { name = "rex_sub_822AF708" } +0x822AF730 = { name = "rex_sub_822AF730" } +0x822AF750 = { name = "rex_sub_822AF750" } +0x822AF760 = { name = "rex_sub_822AF760" } +0x822AF790 = { name = "rex_sub_822AF790" } +0x822AF7A0 = { name = "rex_sub_822AF7A0" } +0x822AF7E8 = { name = "rex_sub_822AF7E8" } +0x822AF828 = { name = "rex_sub_822AF828" } +0x822AF878 = { name = "rex_sub_822AF878" } +0x822AF888 = { name = "rex_sub_822AF888" } +0x822AF8B0 = { name = "rex_sub_822AF8B0" } +0x822AF8E0 = { name = "rex_sub_822AF8E0" } +0x822AF910 = { name = "rex_sub_822AF910" } +0x822AFCB8 = { name = "rex_sub_822AFCB8" } +0x822B0210 = { name = "rex_sub_822B0210" } +0x822B0230 = { name = "rex_sub_822B0230" } +0x822B0258 = { name = "rex_sub_822B0258" } +0x822B02F0 = { name = "rex_sub_822B02F0" } +0x822B0448 = { name = "rex_sub_822B0448" } +0x822B0490 = { name = "rex_sub_822B0490" } +0x822B04F0 = { name = "rex_sub_822B04F0" } +0x822B0550 = { name = "rex_sub_822B0550" } +0x822B05B0 = { name = "rex_sub_822B05B0" } +0x822B0610 = { name = "rex_sub_822B0610" } +0x822B0670 = { name = "rex_sub_822B0670" } +0x822B06C8 = { name = "rex_sub_822B06C8" } +0x822B0728 = { name = "rex_sub_822B0728" } +0x822B0788 = { name = "rex_sub_822B0788" } +0x822B07D8 = { name = "rex_sub_822B07D8" } +0x822B0800 = { name = "rex_sub_822B0800" } +0x822B0828 = { name = "rex_sub_822B0828" } +0x822B0848 = { name = "rex_sub_822B0848" } +0x822B08F0 = { name = "rex_sub_822B08F0" } +0x822B0958 = { name = "rex_sub_822B0958" } +0x822B0A10 = { name = "rex_sub_822B0A10" } +0x822B0AD8 = { name = "rex_sub_822B0AD8" } +0x822B0BE0 = { name = "rex_sub_822B0BE0" } +0x822B0C50 = { name = "rex_sub_822B0C50" } +0x822B0CE0 = { name = "rex_sub_822B0CE0" } +0x822B0D70 = { name = "rex_sub_822B0D70" } +0x822B0E00 = { name = "rex_sub_822B0E00" } +0x822B0E90 = { name = "rex_sub_822B0E90" } +0x822B0E98 = { name = "rex_sub_822B0E98" } +0x822B0F50 = { name = "rex_sub_822B0F50" } +0x822B0FA0 = { name = "rex_sub_822B0FA0" } +0x822B0FD0 = { name = "rex_sub_822B0FD0" } +0x822B10C0 = { name = "rex_sub_822B10C0" } +0x822B1148 = { name = "rex_sub_822B1148" } +0x822B11B0 = { name = "rex_sub_822B11B0" } +0x822B1218 = { name = "rex_sub_822B1218" } +0x822B12A0 = { name = "rex_sub_822B12A0" } +0x822B13F8 = { name = "rex_sub_822B13F8" } +0x822B1468 = { name = "rex_sub_822B1468" } +0x822B14E0 = { name = "rex_sub_822B14E0" } +0x822B1558 = { name = "rex_sub_822B1558" } +0x822B15E0 = { name = "rex_sub_822B15E0" } +0x822B1668 = { name = "rex_sub_822B1668" } +0x822B1840 = { name = "rex_sub_822B1840" } +0x822B18D0 = { name = "rex_sub_822B18D0" } +0x822B1980 = { name = "rex_sub_822B1980" } +0x822B1B58 = { name = "rex_sub_822B1B58" } +0x822B1BB0 = { name = "rex_sub_822B1BB0" } +0x822B1F00 = { name = "rex_sub_822B1F00" } +0x822B1F50 = { name = "rex_sub_822B1F50" } +0x822B1FA0 = { name = "rex_sub_822B1FA0" } +0x822B2140 = { name = "rex_sub_822B2140" } +0x822B2330 = { name = "rex_sub_822B2330" } +0x822B2468 = { name = "rex_sub_822B2468" } +0x822B2550 = { name = "rex_sub_822B2550" } +0x822B2610 = { name = "rex_sub_822B2610" } +0x822B2808 = { name = "rex_sub_822B2808" } +0x822B29A8 = { name = "rex_sub_822B29A8" } +0x822B2A08 = { name = "rex_sub_822B2A08" } +0x822B2AA0 = { name = "rex_sub_822B2AA0" } +0x822B2B58 = { name = "rex_sub_822B2B58" } +0x822B2E20 = { name = "rex_sub_822B2E20" } +0x822B3148 = { name = "rex_sub_822B3148" } +0x822B3248 = { name = "rex_sub_822B3248" } +0x822B32C8 = { name = "rex_sub_822B32C8" } +0x822B36E0 = { name = "rex_sub_822B36E0" } +0x822B3890 = { name = "rex_sub_822B3890" } +0x822B4888 = { name = "rex_sub_822B4888" } +0x822B4CF8 = { name = "rex_sub_822B4CF8" } +0x822B4F50 = { name = "rex_sub_822B4F50" } +0x822B51A8 = { name = "rex_sub_822B51A8" } +0x822B5280 = { name = "rex_sub_822B5280" } +0x822B5358 = { name = "rex_sub_822B5358" } +0x822B5458 = { name = "rex_sub_822B5458" } +0x822B5708 = { name = "rex_sub_822B5708" } +0x822B57B0 = { name = "rex_sub_822B57B0" } +0x822B5AE8 = { name = "rex_sub_822B5AE8" } +0x822B5F60 = { name = "rex_sub_822B5F60" } +0x822B6018 = { name = "rex_sub_822B6018" } +0x822B6170 = { name = "rex_sub_822B6170" } +0x822B6178 = { name = "rex_sub_822B6178" } +0x822B6190 = { name = "rex_sub_822B6190" } +0x822B62B8 = { name = "rex_sub_822B62B8" } +0x822B6320 = { name = "rex_sub_822B6320" } +0x822B6338 = { name = "rex_sub_822B6338" } +0x822B6350 = { name = "rex_sub_822B6350" } +0x822B6368 = { name = "rex_sub_822B6368" } +0x822B6380 = { name = "rex_sub_822B6380" } +0x822B6398 = { name = "rex_sub_822B6398" } +0x822B63B0 = { name = "rex_sub_822B63B0" } +0x822B63D0 = { name = "rex_sub_822B63D0" } +0x822B63E0 = { name = "rex_sub_822B63E0" } +0x822B6490 = { name = "rex_sub_822B6490" } +0x822B68C8 = { name = "rex_sub_822B68C8" } +0x822B68D8 = { name = "rex_sub_822B68D8" } +0x822B6918 = { name = "rex_sub_822B6918" } +0x822B6AF0 = { name = "rex_sub_822B6AF0" } +0x822B6B88 = { name = "rex_sub_822B6B88" } +0x822B6C80 = { name = "rex_sub_822B6C80" } +0x822B6DA8 = { name = "rex_sub_822B6DA8" } +0x822B7160 = { name = "rex_sub_822B7160" } +0x822B7260 = { name = "rex_sub_822B7260" } +0x822B72C8 = { name = "rex_sub_822B72C8" } +0x822B7328 = { name = "rex_sub_822B7328" } +0x822B7330 = { name = "rex_sub_822B7330" } +0x822B73E0 = { name = "rex_sub_822B73E0" } +0x822B7408 = { name = "rex_sub_822B7408" } +0x822B74B8 = { name = "rex_sub_822B74B8" } +0x822B75B0 = { name = "rex_sub_822B75B0" } +0x822B75E8 = { name = "rex_sub_822B75E8" } +0x822B7650 = { name = "rex_sub_822B7650" } +0x822B7F18 = { name = "rex_sub_822B7F18" } +0x822B7F98 = { name = "rex_sub_822B7F98" } +0x822B81E8 = { name = "rex_sub_822B81E8" } +0x822B8398 = { name = "rex_sub_822B8398" } +0x822B8510 = { name = "rex_sub_822B8510" } +0x822B8690 = { name = "rex_sub_822B8690" } +0x822B8800 = { name = "rex_sub_822B8800" } +0x822B8970 = { name = "rex_sub_822B8970" } +0x822B8AE0 = { name = "rex_sub_822B8AE0" } +0x822B8C50 = { name = "rex_sub_822B8C50" } +0x822B8DC0 = { name = "rex_sub_822B8DC0" } +0x822B8E58 = { name = "rex_sub_822B8E58" } +0x822B8F88 = { name = "rex_sub_822B8F88" } +0x822B9188 = { name = "rex_sub_822B9188" } +0x822B9380 = { name = "rex_sub_822B9380" } +0x822B94B8 = { name = "rex_sub_822B94B8" } +0x822B95F0 = { name = "rex_sub_822B95F0" } +0x822B9600 = { name = "rex_sub_822B9600" } +0x822B9798 = { name = "rex_sub_822B9798" } +0x822B9900 = { name = "rex_sub_822B9900" } +0x822B9AA0 = { name = "rex_sub_822B9AA0" } +0x822B9C38 = { name = "rex_sub_822B9C38" } +0x822B9C70 = { name = "rex_sub_822B9C70" } +0x822B9C78 = { name = "rex_sub_822B9C78" } +0x822B9C88 = { name = "rex_sub_822B9C88" } +0x822B9CE0 = { name = "rex_sub_822B9CE0" } +0x822B9DB0 = { name = "rex_sub_822B9DB0" } +0x822B9FD0 = { name = "rex_sub_822B9FD0" } +0x822BA378 = { name = "rex_sub_822BA378" } +0x822BA3F0 = { name = "rex_sub_822BA3F0" } +0x822BA8B0 = { name = "rex_sub_822BA8B0" } +0x822BA988 = { name = "rex_sub_822BA988" } +0x822BAA48 = { name = "rex_sub_822BAA48" } +0x822BAB30 = { name = "rex_sub_822BAB30" } +0x822BAC38 = { name = "rex_sub_822BAC38" } +0x822BAC40 = { name = "rex_sub_822BAC40" } +0x822BACF0 = { name = "rex_sub_822BACF0" } +0x822BAF80 = { name = "rex_sub_822BAF80" } +0x822BB150 = { name = "rex_sub_822BB150" } +0x822BB290 = { name = "rex_sub_822BB290" } +0x822BB2B8 = { name = "rex_sub_822BB2B8" } +0x822BB2F0 = { name = "rex_sub_822BB2F0" } +0x822BB3C0 = { name = "rex_sub_822BB3C0" } +0x822BB640 = { name = "rex_sub_822BB640" } +0x822BB7C8 = { name = "rex_sub_822BB7C8" } +0x822BB898 = { name = "rex_sub_822BB898" } +0x822BBAA8 = { name = "rex_sub_822BBAA8" } +0x822BBCB8 = { name = "rex_sub_822BBCB8" } +0x822BBE70 = { name = "rex_sub_822BBE70" } +0x822BBF48 = { name = "rex_sub_822BBF48" } +0x822BC190 = { name = "rex_sub_822BC190" } +0x822BC250 = { name = "rex_sub_822BC250" } +0x822BC3E8 = { name = "rex_sub_822BC3E8" } +0x822BC480 = { name = "rex_sub_822BC480" } +0x822BC670 = { name = "rex_sub_822BC670" } +0x822BC718 = { name = "rex_sub_822BC718" } +0x822BC858 = { name = "rex_sub_822BC858" } +0x822BC928 = { name = "rex_sub_822BC928" } +0x822BCA90 = { name = "rex_sub_822BCA90" } +0x822BCAF8 = { name = "rex_sub_822BCAF8" } +0x822BCB80 = { name = "rex_sub_822BCB80" } +0x822BCD20 = { name = "rex_sub_822BCD20" } +0x822BCD70 = { name = "rex_sub_822BCD70" } +0x822BCD80 = { name = "rex_sub_822BCD80" } +0x822BCDB8 = { name = "rex_sub_822BCDB8" } +0x822BCE48 = { name = "rex_sub_822BCE48" } +0x822BCEE8 = { name = "rex_sub_822BCEE8" } +0x822BD100 = { name = "rex_sub_822BD100" } +0x822BD1E0 = { name = "rex_sub_822BD1E0" } +0x822BD410 = { name = "rex_sub_822BD410" } +0x822BD488 = { name = "rex_sub_822BD488" } +0x822BD508 = { name = "rex_sub_822BD508" } +0x822BD558 = { name = "rex_sub_822BD558" } +0x822BD710 = { name = "rex_sub_822BD710" } +0x822BD9E0 = { name = "rex_sub_822BD9E0" } +0x822BDAE8 = { name = "rex_sub_822BDAE8" } +0x822BDF50 = { name = "rex_sub_822BDF50" } +0x822BE0A8 = { name = "rex_sub_822BE0A8" } +0x822BE180 = { name = "rex_sub_822BE180" } +0x822BE2D8 = { name = "rex_sub_822BE2D8" } +0x822BE3A8 = { name = "rex_sub_822BE3A8" } +0x822BE3B8 = { name = "rex_sub_822BE3B8" } +0x822BE468 = { name = "rex_sub_822BE468" } +0x822BE598 = { name = "rex_sub_822BE598" } +0x822BE6B0 = { name = "rex_sub_822BE6B0" } +0x822BE7B0 = { name = "rex_sub_822BE7B0" } +0x822BEA68 = { name = "rex_sub_822BEA68" } +0x822BEB70 = { name = "rex_sub_822BEB70" } +0x822BEC58 = { name = "rex_sub_822BEC58" } +0x822BECC8 = { name = "rex_sub_822BECC8" } +0x822BEDD8 = { name = "rex_sub_822BEDD8" } +0x822BEE00 = { name = "rex_sub_822BEE00" } +0x822BEF50 = { name = "rex_sub_822BEF50" } +0x822BF060 = { name = "rex_sub_822BF060" } +0x822BF3F8 = { name = "rex_sub_822BF3F8" } +0x822BF5F8 = { name = "rex_sub_822BF5F8" } +0x822BF758 = { name = "rex_sub_822BF758" } +0x822BF948 = { name = "rex_sub_822BF948" } +0x822BF9D8 = { name = "rex_sub_822BF9D8" } +0x822BFAE0 = { name = "rex_sub_822BFAE0" } +0x822C0018 = { name = "rex_sub_822C0018" } +0x822C0040 = { name = "rex_sub_822C0040" } +0x822C0228 = { name = "rex_sub_822C0228" } +0x822C0520 = { name = "rex_sub_822C0520" } +0x822C07D8 = { name = "rex_sub_822C07D8" } +0x822C08C0 = { name = "rex_sub_822C08C0" } +0x822C0A28 = { name = "rex_sub_822C0A28" } +0x822C0AD8 = { name = "rex_sub_822C0AD8" } +0x822C0D08 = { name = "rex_sub_822C0D08" } +0x822C0D80 = { name = "rex_sub_822C0D80" } +0x822C0DF8 = { name = "rex_sub_822C0DF8" } +0x822C0FA8 = { name = "rex_sub_822C0FA8" } +0x822C10F0 = { name = "rex_sub_822C10F0" } +0x822C1260 = { name = "rex_sub_822C1260" } +0x822C15B8 = { name = "rex_sub_822C15B8" } +0x822C1610 = { name = "rex_sub_822C1610" } +0x822C1650 = { name = "rex_sub_822C1650" } +0x822C16F0 = { name = "rex_sub_822C16F0" } +0x822C18E8 = { name = "rex_sub_822C18E8" } +0x822C1930 = { name = "rex_sub_822C1930" } +0x822C1A98 = { name = "rex_sub_822C1A98" } +0x822C1C70 = { name = "rex_sub_822C1C70" } +0x822C1CF0 = { name = "rex_sub_822C1CF0" } +0x822C1E40 = { name = "rex_sub_822C1E40" } +0x822C2410 = { name = "rex_sub_822C2410" } +0x822C2CE8 = { name = "rex_sub_822C2CE8" } +0x822C2CF8 = { name = "rex_sub_822C2CF8" } +0x822C2D08 = { name = "rex_sub_822C2D08" } +0x822C2D58 = { name = "rex_sub_822C2D58" } +0x822C2D90 = { name = "rex_sub_822C2D90" } +0x822C2DE8 = { name = "rex_sub_822C2DE8" } +0x822C2E88 = { name = "rex_sub_822C2E88" } +0x822C2E98 = { name = "rex_sub_822C2E98" } +0x822C2F30 = { name = "rex_sub_822C2F30" } +0x822C3070 = { name = "rex_sub_822C3070" } +0x822C3140 = { name = "rex_sub_822C3140" } +0x822C32A0 = { name = "rex_sub_822C32A0" } +0x822C3400 = { name = "rex_sub_822C3400" } +0x822C3540 = { name = "rex_sub_822C3540" } +0x822C3620 = { name = "rex_sub_822C3620" } +0x822C37F0 = { name = "rex_sub_822C37F0" } +0x822C38E0 = { name = "rex_sub_822C38E0" } +0x822C39D0 = { name = "rex_sub_822C39D0" } +0x822C3AE0 = { name = "rex_sub_822C3AE0" } +0x822C3B70 = { name = "rex_sub_822C3B70" } +0x822C4368 = { name = "rex_sub_822C4368" } +0x822C4438 = { name = "rex_sub_822C4438" } +0x822C4448 = { name = "rex_sub_822C4448" } +0x822C4488 = { name = "rex_sub_822C4488" } +0x822C4808 = { name = "rex_sub_822C4808" } +0x822C49E0 = { name = "rex_sub_822C49E0" } +0x822C4AB0 = { name = "rex_sub_822C4AB0" } +0x822C4B58 = { name = "rex_sub_822C4B58" } +0x822C4C10 = { name = "rex_sub_822C4C10" } +0x822C4CE0 = { name = "rex_sub_822C4CE0" } +0x822C4EA8 = { name = "rex_sub_822C4EA8" } +0x822C4EF0 = { name = "rex_sub_822C4EF0" } +0x822C4F40 = { name = "rex_sub_822C4F40" } +0x822C4F90 = { name = "rex_sub_822C4F90" } +0x822C4FB8 = { name = "rex_sub_822C4FB8" } +0x822C4FC0 = { name = "rex_sub_822C4FC0" } +0x822C5108 = { name = "rex_sub_822C5108" } +0x822C5128 = { name = "rex_sub_822C5128" } +0x822C5150 = { name = "rex_sub_822C5150" } +0x822C5258 = { name = "rex_sub_822C5258" } +0x822C5300 = { name = "rex_sub_822C5300" } +0x822C53A8 = { name = "rex_sub_822C53A8" } +0x822C5488 = { name = "rex_sub_822C5488" } +0x822C5680 = { name = "rex_sub_822C5680" } +0x822C5728 = { name = "rex_sub_822C5728" } +0x822C57D8 = { name = "rex_sub_822C57D8" } +0x822C5808 = { name = "rex_sub_822C5808" } +0x822C5830 = { name = "rex_sub_822C5830" } +0x822C5858 = { name = "rex_sub_822C5858" } +0x822C5880 = { name = "rex_sub_822C5880" } +0x822C5950 = { name = "rex_sub_822C5950" } +0x822C5980 = { name = "rex_sub_822C5980" } +0x822C5A00 = { name = "rex_sub_822C5A00" } +0x822C5A10 = { name = "rex_sub_822C5A10" } +0x822C5BD8 = { name = "rex_sub_822C5BD8" } +0x822C6038 = { name = "rex_sub_822C6038" } +0x822C6098 = { name = "rex_sub_822C6098" } +0x822C60E8 = { name = "rex_sub_822C60E8" } +0x822C6118 = { name = "rex_sub_822C6118" } +0x822C6128 = { name = "rex_sub_822C6128" } +0x822C6168 = { name = "rex_sub_822C6168" } +0x822C6188 = { name = "rex_sub_822C6188" } +0x822C6248 = { name = "rex_sub_822C6248" } +0x822C62F0 = { name = "rex_sub_822C62F0" } +0x822C6490 = { name = "rex_sub_822C6490" } +0x822C6508 = { name = "rex_sub_822C6508" } +0x822C6620 = { name = "rex_sub_822C6620" } +0x822C6878 = { name = "rex_sub_822C6878" } +0x822C6900 = { name = "rex_sub_822C6900" } +0x822C6C48 = { name = "rex_sub_822C6C48" } +0x822C6FC8 = { name = "rex_sub_822C6FC8" } +0x822C7188 = { name = "rex_sub_822C7188" } +0x822C7238 = { name = "rex_sub_822C7238" } +0x822C7320 = { name = "rex_sub_822C7320" } +0x822C7370 = { name = "rex_sub_822C7370" } +0x822C74E0 = { name = "rex_sub_822C74E0" } +0x822C7660 = { name = "rex_sub_822C7660" } +0x822C79B0 = { name = "rex_sub_822C79B0" } +0x822C79F0 = { name = "rex_sub_822C79F0" } +0x822C7D48 = { name = "rex_sub_822C7D48" } +0x822C8A38 = { name = "rex_sub_822C8A38" } +0x822C8A48 = { name = "rex_sub_822C8A48" } +0x822C8A58 = { name = "rex_sub_822C8A58" } +0x822C8A68 = { name = "rex_sub_822C8A68" } +0x822C8A78 = { name = "rex_sub_822C8A78" } +0x822C8A88 = { name = "rex_sub_822C8A88" } +0x822C8A98 = { name = "rex_sub_822C8A98" } +0x822C8B50 = { name = "rex_sub_822C8B50" } +0x822C8BC0 = { name = "rex_sub_822C8BC0" } +0x822C8BF8 = { name = "rex_sub_822C8BF8" } +0x822C8C78 = { name = "rex_sub_822C8C78" } +0x822C8EA8 = { name = "rex_sub_822C8EA8" } +0x822C8EE0 = { name = "rex_sub_822C8EE0" } +0x822C9028 = { name = "rex_sub_822C9028" } +0x822C9048 = { name = "rex_sub_822C9048" } +0x822C9130 = { name = "rex_sub_822C9130" } +0x822C9288 = { name = "rex_sub_822C9288" } +0x822C93C8 = { name = "rex_sub_822C93C8" } +0x822C9538 = { name = "rex_sub_822C9538" } +0x822C9558 = { name = "rex_sub_822C9558" } +0x822C9570 = { name = "rex_sub_822C9570" } +0x822C9688 = { name = "rex_sub_822C9688" } +0x822C9748 = { name = "rex_sub_822C9748" } +0x822C97D8 = { name = "rex_sub_822C97D8" } +0x822C9910 = { name = "rex_sub_822C9910" } +0x822C9A08 = { name = "rex_sub_822C9A08" } +0x822C9B18 = { name = "rex_sub_822C9B18" } +0x822C9C98 = { name = "rex_sub_822C9C98" } +0x822C9E70 = { name = "rex_sub_822C9E70" } +0x822C9F10 = { name = "rex_sub_822C9F10" } +0x822C9FB8 = { name = "rex_sub_822C9FB8" } +0x822CA108 = { name = "rex_sub_822CA108" } +0x822CA208 = { name = "rex_sub_822CA208" } +0x822CA368 = { name = "rex_sub_822CA368" } +0x822CA410 = { name = "rex_sub_822CA410" } +0x822CA568 = { name = "rex_sub_822CA568" } +0x822CAA10 = { name = "rex_sub_822CAA10" } +0x822CAA48 = { name = "rex_sub_822CAA48" } +0x822CABA8 = { name = "rex_sub_822CABA8" } +0x822CAC18 = { name = "rex_sub_822CAC18" } +0x822CAC58 = { name = "rex_sub_822CAC58" } +0x822CACA8 = { name = "rex_sub_822CACA8" } +0x822CACE8 = { name = "rex_sub_822CACE8" } +0x822CAD10 = { name = "rex_sub_822CAD10" } +0x822CAF98 = { name = "rex_sub_822CAF98" } +0x822CB108 = { name = "rex_sub_822CB108" } +0x822CB270 = { name = "rex_sub_822CB270" } +0x822CB2D0 = { name = "rex_sub_822CB2D0" } +0x822CB328 = { name = "rex_sub_822CB328" } +0x822CB390 = { name = "rex_sub_822CB390" } +0x822CB3E8 = { name = "rex_sub_822CB3E8" } +0x822CB4A0 = { name = "rex_sub_822CB4A0" } +0x822CB568 = { name = "rex_sub_822CB568" } +0x822CB898 = { name = "rex_sub_822CB898" } +0x822CBC38 = { name = "rex_sub_822CBC38" } +0x822CBCA8 = { name = "rex_sub_822CBCA8" } +0x822CBCF8 = { name = "rex_sub_822CBCF8" } +0x822CC228 = { name = "rex_sub_822CC228" } +0x822CC520 = { name = "rex_sub_822CC520" } +0x822CCAD8 = { name = "rex_sub_822CCAD8" } +0x822CCB50 = { name = "rex_sub_822CCB50" } +0x822CCBF0 = { name = "rex_sub_822CCBF0" } +0x822CCC90 = { name = "rex_sub_822CCC90" } +0x822CCD38 = { name = "rex_sub_822CCD38" } +0x822CCE28 = { name = "rex_sub_822CCE28" } +0x822CCF38 = { name = "rex_sub_822CCF38" } +0x822CD068 = { name = "rex_sub_822CD068" } +0x822CD758 = { name = "rex_sub_822CD758" } +0x822CDB38 = { name = "rex_sub_822CDB38" } +0x822CDE18 = { name = "rex_sub_822CDE18" } +0x822CE2B8 = { name = "rex_sub_822CE2B8" } +0x822CE718 = { name = "rex_sub_822CE718" } +0x822CE7B0 = { name = "rex_sub_822CE7B0" } +0x822CE9A8 = { name = "rex_sub_822CE9A8" } +0x822CEAC0 = { name = "rex_sub_822CEAC0" } +0x822CF018 = { name = "rex_sub_822CF018" } +0x822CF160 = { name = "rex_sub_822CF160" } +0x822CF208 = { name = "rex_sub_822CF208" } +0x822CF248 = { name = "rex_sub_822CF248" } +0x822CF2F8 = { name = "rex_sub_822CF2F8" } +0x822CF510 = { name = "rex_sub_822CF510" } +0x822CF650 = { name = "rex_sub_822CF650" } +0x822CF660 = { name = "rex_sub_822CF660" } +0x822CF6B8 = { name = "rex_sub_822CF6B8" } +0x822CF708 = { name = "rex_sub_822CF708" } +0x822CF810 = { name = "rex_sub_822CF810" } +0x822CF888 = { name = "rex_sub_822CF888" } +0x822CF898 = { name = "rex_sub_822CF898" } +0x822CF938 = { name = "rex_sub_822CF938" } +0x822CF9F8 = { name = "rex_sub_822CF9F8" } +0x822CFA50 = { name = "rex_sub_822CFA50" } +0x822CFAA0 = { name = "rex_sub_822CFAA0" } +0x822CFAB0 = { name = "rex_sub_822CFAB0" } +0x822CFB50 = { name = "rex_sub_822CFB50" } +0x822CFBA8 = { name = "rex_sub_822CFBA8" } +0x822CFBF8 = { name = "rex_sub_822CFBF8" } +0x822CFCE8 = { name = "rex_sub_822CFCE8" } +0x822D0058 = { name = "rex_sub_822D0058" } +0x822D0248 = { name = "rex_sub_822D0248" } +0x822D0638 = { name = "rex_sub_822D0638" } +0x822D09B0 = { name = "rex_sub_822D09B0" } +0x822D0BD8 = { name = "rex_sub_822D0BD8" } +0x822D0CA8 = { name = "rex_sub_822D0CA8" } +0x822D0D68 = { name = "rex_sub_822D0D68" } +0x822D11D8 = { name = "rex_sub_822D11D8" } +0x822D12E0 = { name = "rex_sub_822D12E0" } +0x822D1718 = { name = "rex_sub_822D1718" } +0x822D1F80 = { name = "rex_sub_822D1F80" } +0x822D1F88 = { name = "rex_sub_822D1F88" } +0x822D2038 = { name = "rex_sub_822D2038" } +0x822D22B0 = { name = "rex_sub_822D22B0" } +0x822D25C8 = { name = "rex_sub_822D25C8" } +0x822D27D0 = { name = "rex_sub_822D27D0" } +0x822D2830 = { name = "rex_sub_822D2830" } +0x822D2A40 = { name = "rex_sub_822D2A40" } +0x822D2AA0 = { name = "rex_sub_822D2AA0" } +0x822D2CB0 = { name = "rex_sub_822D2CB0" } +0x822D2D60 = { name = "rex_sub_822D2D60" } +0x822D2F70 = { name = "rex_sub_822D2F70" } +0x822D2FD0 = { name = "rex_sub_822D2FD0" } +0x822D30D0 = { name = "rex_sub_822D30D0" } +0x822D3780 = { name = "rex_sub_822D3780" } +0x822D3978 = { name = "rex_sub_822D3978" } +0x822D3A48 = { name = "rex_sub_822D3A48" } +0x822D3B00 = { name = "rex_sub_822D3B00" } +0x822D3DD8 = { name = "rex_sub_822D3DD8" } +0x822D3E30 = { name = "rex_sub_822D3E30" } +0x822D3EC8 = { name = "rex_sub_822D3EC8" } +0x822D3FB8 = { name = "rex_sub_822D3FB8" } +0x822D40D8 = { name = "rex_sub_822D40D8" } +0x822D41E0 = { name = "rex_sub_822D41E0" } +0x822D4250 = { name = "rex_sub_822D4250" } +0x822D5498 = { name = "rex_sub_822D5498" } +0x822D5578 = { name = "rex_sub_822D5578" } +0x822D5678 = { name = "rex_sub_822D5678" } +0x822D56C0 = { name = "rex_sub_822D56C0" } +0x822D56D8 = { name = "rex_sub_822D56D8" } +0x822D5790 = { name = "rex_sub_822D5790" } +0x822D57C0 = { name = "rex_sub_822D57C0" } +0x822D58B0 = { name = "rex_sub_822D58B0" } +0x822D58F8 = { name = "rex_sub_822D58F8" } +0x822D5970 = { name = "rex_sub_822D5970" } +0x822D5C10 = { name = "rex_sub_822D5C10" } +0x822D5CC0 = { name = "rex_sub_822D5CC0" } +0x822D5DB0 = { name = "rex_sub_822D5DB0" } +0x822D5E30 = { name = "rex_sub_822D5E30" } +0x822D5E78 = { name = "rex_sub_822D5E78" } +0x822D6030 = { name = "rex_sub_822D6030" } +0x822D6180 = { name = "rex_sub_822D6180" } +0x822D66B0 = { name = "rex_sub_822D66B0" } +0x822D6960 = { name = "rex_sub_822D6960" } +0x822D6B38 = { name = "rex_sub_822D6B38" } +0x822D6BC8 = { name = "rex_sub_822D6BC8" } +0x822D6E40 = { name = "rex_sub_822D6E40" } +0x822D6F00 = { name = "rex_sub_822D6F00" } +0x822D6FC0 = { name = "rex_sub_822D6FC0" } +0x822D71C0 = { name = "rex_sub_822D71C0" } +0x822D7230 = { name = "rex_sub_822D7230" } +0x822D72A0 = { name = "rex_sub_822D72A0" } +0x822D7310 = { name = "rex_sub_822D7310" } +0x822D7380 = { name = "rex_sub_822D7380" } +0x822D73F0 = { name = "rex_sub_822D73F0" } +0x822D7460 = { name = "rex_sub_822D7460" } +0x822D7610 = { name = "rex_sub_822D7610" } +0x822D7940 = { name = "rex_sub_822D7940" } +0x822D7A40 = { name = "rex_sub_822D7A40" } +0x822D7BC8 = { name = "rex_sub_822D7BC8" } +0x822D7E18 = { name = "rex_sub_822D7E18" } +0x822D7F78 = { name = "rex_sub_822D7F78" } +0x822D9280 = { name = "rex_sub_822D9280" } +0x822D9788 = { name = "rex_sub_822D9788" } +0x822DA748 = { name = "rex_sub_822DA748" } +0x822DA9A0 = { name = "rex_sub_822DA9A0" } +0x822DAA98 = { name = "rex_sub_822DAA98" } +0x822DACC0 = { name = "rex_sub_822DACC0" } +0x822DAE30 = { name = "rex_sub_822DAE30" } +0x822DAF78 = { name = "rex_sub_822DAF78" } +0x822DAFF8 = { name = "rex_sub_822DAFF8" } +0x822DB060 = { name = "rex_sub_822DB060" } +0x822DB270 = { name = "rex_sub_822DB270" } +0x822DB648 = { name = "rex_sub_822DB648" } +0x822DB7F0 = { name = "rex_sub_822DB7F0" } +0x822DB888 = { name = "rex_sub_822DB888" } +0x822DBA60 = { name = "rex_sub_822DBA60" } +0x822DBAC0 = { name = "rex_sub_822DBAC0" } +0x822DBB38 = { name = "rex_sub_822DBB38" } +0x822DBBC0 = { name = "rex_sub_822DBBC0" } +0x822DBC10 = { name = "rex_sub_822DBC10" } +0x822DBE40 = { name = "rex_sub_822DBE40" } +0x822DBEC0 = { name = "rex_sub_822DBEC0" } +0x822DBFF0 = { name = "rex_sub_822DBFF0" } +0x822DC058 = { name = "rex_sub_822DC058" } +0x822DC1C8 = { name = "rex_sub_822DC1C8" } +0x822DD518 = { name = "rex_sub_822DD518" } +0x822DD578 = { name = "rex_sub_822DD578" } +0x822DD868 = { name = "rex_sub_822DD868" } +0x822DD8C0 = { name = "rex_sub_822DD8C0" } +0x822DD9A0 = { name = "rex_sub_822DD9A0" } +0x822DDA10 = { name = "rex_sub_822DDA10" } +0x822DDB90 = { name = "rex_sub_822DDB90" } +0x822DDD78 = { name = "rex_sub_822DDD78" } +0x822DE218 = { name = "rex_sub_822DE218" } +0x822DF3B8 = { name = "rex_sub_822DF3B8" } +0x822DF418 = { name = "rex_sub_822DF418" } +0x822DF628 = { name = "rex_sub_822DF628" } +0x822DF6B8 = { name = "rex_sub_822DF6B8" } +0x822DF710 = { name = "rex_sub_822DF710" } +0x822DF8E8 = { name = "rex_sub_822DF8E8" } +0x822DF988 = { name = "rex_sub_822DF988" } +0x822DF9F0 = { name = "rex_sub_822DF9F0" } +0x822DFAF0 = { name = "rex_sub_822DFAF0" } +0x822DFE70 = { name = "rex_sub_822DFE70" } +0x822DFEC8 = { name = "rex_sub_822DFEC8" } +0x822DFEF8 = { name = "rex_sub_822DFEF8" } +0x822E01E8 = { name = "rex_sub_822E01E8" } +0x822E0420 = { name = "rex_sub_822E0420" } +0x822E04F8 = { name = "rex_sub_822E04F8" } +0x822E05E8 = { name = "rex_sub_822E05E8" } +0x822E0790 = { name = "rex_sub_822E0790" } +0x822E0828 = { name = "rex_sub_822E0828" } +0x822E0C58 = { name = "rex_sub_822E0C58" } +0x822E0D88 = { name = "rex_sub_822E0D88" } +0x822E0EE8 = { name = "rex_sub_822E0EE8" } +0x822E0F78 = { name = "rex_sub_822E0F78" } +0x822E1130 = { name = "rex_sub_822E1130" } +0x822E1380 = { name = "rex_sub_822E1380" } +0x822E1778 = { name = "rex_sub_822E1778" } +0x822E1AA8 = { name = "rex_sub_822E1AA8" } +0x822E23B8 = { name = "rex_sub_822E23B8" } +0x822E2420 = { name = "rex_sub_822E2420" } +0x822E2530 = { name = "rex_sub_822E2530" } +0x822E2820 = { name = "rex_sub_822E2820" } +0x822E2AB0 = { name = "rex_sub_822E2AB0" } +0x822E2AF0 = { name = "rex_sub_822E2AF0" } +0x822E2B30 = { name = "rex_sub_822E2B30" } +0x822E2EF8 = { name = "rex_sub_822E2EF8" } +0x822E2FD0 = { name = "rex_sub_822E2FD0" } +0x822E3010 = { name = "rex_sub_822E3010" } +0x822E3090 = { name = "rex_sub_822E3090" } +0x822E3110 = { name = "rex_sub_822E3110" } +0x822E3168 = { name = "rex_sub_822E3168" } +0x822E31C8 = { name = "rex_sub_822E31C8" } +0x822E3200 = { name = "rex_sub_822E3200" } +0x822E3248 = { name = "rex_sub_822E3248" } +0x822E3300 = { name = "rex_sub_822E3300" } +0x822E3368 = { name = "rex_sub_822E3368" } +0x822E33C8 = { name = "rex_sub_822E33C8" } +0x822E3418 = { name = "rex_sub_822E3418" } +0x822E3498 = { name = "rex_sub_822E3498" } +0x822E35F0 = { name = "rex_sub_822E35F0" } +0x822E3C38 = { name = "rex_sub_822E3C38" } +0x822E3DF0 = { name = "rex_sub_822E3DF0" } +0x822E3F08 = { name = "rex_sub_822E3F08" } +0x822E4030 = { name = "rex_sub_822E4030" } +0x822E4090 = { name = "rex_sub_822E4090" } +0x822E4260 = { name = "rex_sub_822E4260" } +0x822E4378 = { name = "rex_sub_822E4378" } +0x822E4650 = { name = "rex_sub_822E4650" } +0x822E4E88 = { name = "rex_sub_822E4E88" } +0x822E5088 = { name = "rex_sub_822E5088" } +0x822E5120 = { name = "rex_sub_822E5120" } +0x822E5268 = { name = "rex_sub_822E5268" } +0x822E5310 = { name = "rex_sub_822E5310" } +0x822E5670 = { name = "rex_sub_822E5670" } +0x822E5948 = { name = "rex_sub_822E5948" } +0x822E5C18 = { name = "rex_sub_822E5C18" } +0x822E5D10 = { name = "rex_sub_822E5D10" } +0x822E5E68 = { name = "rex_sub_822E5E68" } +0x822E63E8 = { name = "rex_sub_822E63E8" } +0x822E6478 = { name = "rex_sub_822E6478" } +0x822E66C0 = { name = "rex_sub_822E66C0" } +0x822E68C8 = { name = "rex_sub_822E68C8" } +0x822E6AA0 = { name = "rex_sub_822E6AA0" } +0x822E6CB8 = { name = "rex_sub_822E6CB8" } +0x822E6FB8 = { name = "rex_sub_822E6FB8" } +0x822E71A0 = { name = "rex_sub_822E71A0" } +0x822E7368 = { name = "rex_sub_822E7368" } +0x822E75B8 = { name = "rex_sub_822E75B8" } +0x822E7650 = { name = "rex_sub_822E7650" } +0x822E7700 = { name = "rex_sub_822E7700" } +0x822E7A70 = { name = "rex_sub_822E7A70" } +0x822E7CA8 = { name = "rex_sub_822E7CA8" } +0x822E8268 = { name = "rex_sub_822E8268" } +0x822E8600 = { name = "rex_sub_822E8600" } +0x822E8698 = { name = "rex_sub_822E8698" } +0x822E88E0 = { name = "rex_sub_822E88E0" } +0x822E8B88 = { name = "rex_sub_822E8B88" } +0x822E9060 = { name = "rex_sub_822E9060" } +0x822E9328 = { name = "rex_sub_822E9328" } +0x822E9638 = { name = "rex_sub_822E9638" } +0x822E9A00 = { name = "rex_sub_822E9A00" } +0x822E9E28 = { name = "rex_sub_822E9E28" } +0x822EA250 = { name = "rex_sub_822EA250" } +0x822EA580 = { name = "rex_sub_822EA580" } +0x822EA8C8 = { name = "rex_sub_822EA8C8" } +0x822EAC98 = { name = "rex_sub_822EAC98" } +0x822EB140 = { name = "rex_sub_822EB140" } +0x822EB1B0 = { name = "rex_sub_822EB1B0" } +0x822EB918 = { name = "rex_sub_822EB918" } +0x822EBC98 = { name = "rex_sub_822EBC98" } +0x822EBF68 = { name = "rex_sub_822EBF68" } +0x822EC0D8 = { name = "rex_sub_822EC0D8" } +0x822EC5A0 = { name = "rex_sub_822EC5A0" } +0x822EC998 = { name = "rex_sub_822EC998" } +0x822ECC78 = { name = "rex_sub_822ECC78" } +0x822ED2A0 = { name = "rex_sub_822ED2A0" } +0x822ED310 = { name = "rex_sub_822ED310" } +0x822ED860 = { name = "rex_sub_822ED860" } +0x822EDED0 = { name = "rex_sub_822EDED0" } +0x822EE1C8 = { name = "rex_sub_822EE1C8" } +0x822EE2F0 = { name = "rex_sub_822EE2F0" } +0x822EE3B0 = { name = "rex_sub_822EE3B0" } +0x822EEB40 = { name = "rex_sub_822EEB40" } +0x822EEBC8 = { name = "rex_sub_822EEBC8" } +0x822EEC50 = { name = "rex_sub_822EEC50" } +0x822EEC88 = { name = "rex_sub_822EEC88" } +0x822EED30 = { name = "rex_sub_822EED30" } +0x822EED50 = { name = "rex_sub_822EED50" } +0x822EED80 = { name = "rex_sub_822EED80" } +0x822EEE30 = { name = "rex_sub_822EEE30" } +0x822EEEB8 = { name = "rex_sub_822EEEB8" } +0x822EEEF0 = { name = "rex_sub_822EEEF0" } +0x822EEF28 = { name = "rex_sub_822EEF28" } +0x822EEF58 = { name = "rex_sub_822EEF58" } +0x822EEF80 = { name = "rex_sub_822EEF80" } +0x822EEFC8 = { name = "rex_sub_822EEFC8" } +0x822EF050 = { name = "rex_sub_822EF050" } +0x822EF0D8 = { name = "rex_sub_822EF0D8" } +0x822EF1C0 = { name = "rex_sub_822EF1C0" } +0x822EF208 = { name = "rex_sub_822EF208" } +0x822EF280 = { name = "rex_sub_822EF280" } +0x822EF2E0 = { name = "rex_sub_822EF2E0" } +0x822EF370 = { name = "rex_sub_822EF370" } +0x822EF3F0 = { name = "rex_sub_822EF3F0" } +0x822EF468 = { name = "rex_sub_822EF468" } +0x822EF4D8 = { name = "rex_sub_822EF4D8" } +0x822EF5B8 = { name = "rex_sub_822EF5B8" } +0x822EF5F8 = { name = "rex_sub_822EF5F8" } +0x822EF688 = { name = "rex_sub_822EF688" } +0x822EF6C8 = { name = "rex_sub_822EF6C8" } +0x822EF708 = { name = "rex_sub_822EF708" } +0x822EF758 = { name = "rex_sub_822EF758" } +0x822EF888 = { name = "rex_sub_822EF888" } +0x822EF8C8 = { name = "rex_sub_822EF8C8" } +0x822EF908 = { name = "rex_sub_822EF908" } +0x822EF958 = { name = "rex_sub_822EF958" } +0x822EF9E8 = { name = "rex_sub_822EF9E8" } +0x822EFA70 = { name = "rex_sub_822EFA70" } +0x822EFAB8 = { name = "rex_sub_822EFAB8" } +0x822EFB30 = { name = "rex_sub_822EFB30" } +0x822EFB78 = { name = "rex_sub_822EFB78" } +0x822EFC68 = { name = "rex_sub_822EFC68" } +0x822EFD78 = { name = "rex_sub_822EFD78" } +0x822EFEC8 = { name = "rex_sub_822EFEC8" } +0x822EFF40 = { name = "rex_sub_822EFF40" } +0x822EFF98 = { name = "rex_sub_822EFF98" } +0x822F0018 = { name = "rex_sub_822F0018" } +0x822F0098 = { name = "rex_sub_822F0098" } +0x822F0108 = { name = "rex_sub_822F0108" } +0x822F01B0 = { name = "rex_sub_822F01B0" } +0x822F0288 = { name = "rex_sub_822F0288" } +0x822F0348 = { name = "rex_sub_822F0348" } +0x822F0480 = { name = "rex_sub_822F0480" } +0x822F04D0 = { name = "rex_sub_822F04D0" } +0x822F05E0 = { name = "rex_sub_822F05E0" } +0x822F0728 = { name = "rex_sub_822F0728" } +0x822F07C8 = { name = "rex_sub_822F07C8" } +0x822F0828 = { name = "rex_sub_822F0828" } +0x822F0980 = { name = "rex_sub_822F0980" } +0x822F0BA0 = { name = "rex_sub_822F0BA0" } +0x822F0C20 = { name = "rex_sub_822F0C20" } +0x822F0CA0 = { name = "rex_sub_822F0CA0" } +0x822F0F60 = { name = "rex_sub_822F0F60" } +0x822F1050 = { name = "rex_sub_822F1050" } +0x822F1090 = { name = "rex_sub_822F1090" } +0x822F14F8 = { name = "rex_sub_822F14F8" } +0x822F1508 = { name = "rex_sub_822F1508" } +0x822F1588 = { name = "rex_sub_822F1588" } +0x822F18F0 = { name = "rex_sub_822F18F0" } +0x822F1A10 = { name = "rex_sub_822F1A10" } +0x822F1A80 = { name = "rex_sub_822F1A80" } +0x822F1B60 = { name = "rex_sub_822F1B60" } +0x822F1C00 = { name = "rex_sub_822F1C00" } +0x822F2128 = { name = "rex_sub_822F2128" } +0x822F23E8 = { name = "rex_sub_822F23E8" } +0x822F24A8 = { name = "rex_sub_822F24A8" } +0x822F2698 = { name = "rex_sub_822F2698" } +0x822F2738 = { name = "rex_sub_822F2738" } +0x822F27D0 = { name = "rex_sub_822F27D0" } +0x822F2860 = { name = "rex_sub_822F2860" } +0x822F2910 = { name = "rex_sub_822F2910" } +0x822F2A68 = { name = "rex_sub_822F2A68" } +0x822F2B00 = { name = "rex_sub_822F2B00" } +0x822F2C00 = { name = "rex_sub_822F2C00" } +0x822F2DA8 = { name = "rex_sub_822F2DA8" } +0x822F2E28 = { name = "rex_sub_822F2E28" } +0x822F2E80 = { name = "rex_sub_822F2E80" } +0x822F3060 = { name = "rex_sub_822F3060" } +0x822F3110 = { name = "rex_sub_822F3110" } +0x822F31D0 = { name = "rex_sub_822F31D0" } +0x822F3268 = { name = "rex_sub_822F3268" } +0x822F3480 = { name = "rex_sub_822F3480" } +0x822F34C8 = { name = "rex_sub_822F34C8" } +0x822F3578 = { name = "rex_sub_822F3578" } +0x822F35C8 = { name = "rex_sub_822F35C8" } +0x822F3788 = { name = "rex_sub_822F3788" } +0x822F3948 = { name = "rex_sub_822F3948" } +0x822F3A88 = { name = "rex_sub_822F3A88" } +0x822F4338 = { name = "rex_sub_822F4338" } +0x822F4450 = { name = "rex_sub_822F4450" } +0x822F4760 = { name = "rex_sub_822F4760" } +0x822F4968 = { name = "rex_sub_822F4968" } +0x822F5270 = { name = "rex_sub_822F5270" } +0x822F54C8 = { name = "rex_sub_822F54C8" } +0x822F57B0 = { name = "rex_sub_822F57B0" } +0x822F5860 = { name = "rex_sub_822F5860" } +0x822F58C8 = { name = "rex_sub_822F58C8" } +0x822F5CA0 = { name = "rex_sub_822F5CA0" } +0x822F5D50 = { name = "rex_sub_822F5D50" } +0x822F5E10 = { name = "rex_sub_822F5E10" } +0x822F6248 = { name = "rex_sub_822F6248" } +0x822F6460 = { name = "rex_sub_822F6460" } +0x822F6568 = { name = "rex_sub_822F6568" } +0x822F6728 = { name = "rex_sub_822F6728" } +0x822F6A18 = { name = "rex_sub_822F6A18" } +0x822F6BD0 = { name = "rex_sub_822F6BD0" } +0x822F6D10 = { name = "rex_sub_822F6D10" } +0x822F7200 = { name = "rex_sub_822F7200" } +0x822F7490 = { name = "rex_sub_822F7490" } +0x822F7590 = { name = "rex_sub_822F7590" } +0x822F8698 = { name = "rex_sub_822F8698" } +0x822F8A10 = { name = "rex_sub_822F8A10" } +0x822F8AB8 = { name = "rex_sub_822F8AB8" } +0x822F8C48 = { name = "rex_sub_822F8C48" } +0x822F8E58 = { name = "rex_sub_822F8E58" } +0x822F8F08 = { name = "rex_sub_822F8F08" } +0x822F9188 = { name = "rex_sub_822F9188" } +0x822F9230 = { name = "rex_sub_822F9230" } +0x822F9580 = { name = "rex_sub_822F9580" } +0x822F9938 = { name = "rex_sub_822F9938" } +0x822F99E8 = { name = "rex_sub_822F99E8" } +0x822F9A98 = { name = "rex_sub_822F9A98" } +0x822F9B48 = { name = "rex_sub_822F9B48" } +0x822F9CA0 = { name = "rex_sub_822F9CA0" } +0x822FAC30 = { name = "rex_sub_822FAC30" } +0x822FAF00 = { name = "rex_sub_822FAF00" } +0x822FAFC8 = { name = "rex_sub_822FAFC8" } +0x822FB0B0 = { name = "rex_sub_822FB0B0" } +0x822FB108 = { name = "rex_sub_822FB108" } +0x822FB3E8 = { name = "rex_sub_822FB3E8" } +0x822FB918 = { name = "rex_sub_822FB918" } +0x822FBB30 = { name = "rex_sub_822FBB30" } +0x822FBB70 = { name = "rex_sub_822FBB70" } +0x822FBBD8 = { name = "rex_sub_822FBBD8" } +0x822FBC18 = { name = "rex_sub_822FBC18" } +0x822FBC88 = { name = "rex_sub_822FBC88" } +0x822FBC98 = { name = "rex_sub_822FBC98" } +0x822FBCB0 = { name = "rex_sub_822FBCB0" } +0x822FBD20 = { name = "rex_sub_822FBD20" } +0x822FBE80 = { name = "rex_sub_822FBE80" } +0x822FBF90 = { name = "rex_sub_822FBF90" } +0x822FC2B0 = { name = "rex_sub_822FC2B0" } +0x822FC470 = { name = "rex_sub_822FC470" } +0x822FC838 = { name = "rex_sub_822FC838" } +0x822FC880 = { name = "rex_sub_822FC880" } +0x822FC8E0 = { name = "rex_sub_822FC8E0" } +0x822FC960 = { name = "rex_sub_822FC960" } +0x822FCA08 = { name = "rex_sub_822FCA08" } +0x822FCA58 = { name = "rex_sub_822FCA58" } +0x822FCC30 = { name = "rex_sub_822FCC30" } +0x822FCC50 = { name = "rex_sub_822FCC50" } +0x822FCCC0 = { name = "rex_sub_822FCCC0" } +0x822FCD40 = { name = "rex_sub_822FCD40" } +0x822FCDD8 = { name = "rex_sub_822FCDD8" } +0x822FCE60 = { name = "rex_sub_822FCE60" } +0x822FCEB0 = { name = "rex_sub_822FCEB0" } +0x822FCF20 = { name = "rex_sub_822FCF20" } +0x822FCF70 = { name = "rex_sub_822FCF70" } +0x822FCFC0 = { name = "rex_sub_822FCFC0" } +0x822FD000 = { name = "rex_sub_822FD000" } +0x822FD348 = { name = "rex_sub_822FD348" } +0x822FD890 = { name = "rex_sub_822FD890" } +0x822FD9A0 = { name = "rex_sub_822FD9A0" } +0x822FDAC0 = { name = "rex_sub_822FDAC0" } +0x822FDEF8 = { name = "rex_sub_822FDEF8" } +0x822FE268 = { name = "rex_sub_822FE268" } +0x822FE2E8 = { name = "rex_sub_822FE2E8" } +0x822FE598 = { name = "rex_sub_822FE598" } +0x822FE6A0 = { name = "rex_sub_822FE6A0" } +0x822FE760 = { name = "rex_sub_822FE760" } +0x822FECC0 = { name = "rex_sub_822FECC0" } +0x822FF708 = { name = "rex_sub_822FF708" } +0x822FF8A8 = { name = "rex_sub_822FF8A8" } +0x822FFA00 = { name = "rex_sub_822FFA00" } +0x822FFBA8 = { name = "rex_sub_822FFBA8" } +0x822FFC08 = { name = "rex_sub_822FFC08" } +0x822FFD50 = { name = "rex_sub_822FFD50" } +0x822FFD70 = { name = "rex_sub_822FFD70" } +0x822FFD80 = { name = "rex_sub_822FFD80" } +0x822FFDC0 = { name = "rex_sub_822FFDC0" } +0x822FFE18 = { name = "rex_sub_822FFE18" } +0x822FFE70 = { name = "rex_sub_822FFE70" } +0x822FFEB0 = { name = "rex_sub_822FFEB0" } +0x82300018 = { name = "rex_sub_82300018" } +0x82300230 = { name = "rex_sub_82300230" } +0x823002D0 = { name = "rex_sub_823002D0" } +0x823004E0 = { name = "rex_sub_823004E0" } +0x82300598 = { name = "rex_sub_82300598" } +0x82300668 = { name = "rex_sub_82300668" } +0x82300808 = { name = "rex_sub_82300808" } +0x82302710 = { name = "rex_sub_82302710" } +0x82302750 = { name = "rex_sub_82302750" } +0x82302760 = { name = "rex_sub_82302760" } +0x82302810 = { name = "rex_sub_82302810" } +0x82302870 = { name = "rex_sub_82302870" } +0x82302CF8 = { name = "rex_sub_82302CF8" } +0x82303298 = { name = "rex_sub_82303298" } +0x823032B0 = { name = "rex_sub_823032B0" } +0x823033A0 = { name = "rex_sub_823033A0" } +0x82303480 = { name = "rex_sub_82303480" } +0x82303528 = { name = "rex_sub_82303528" } +0x823035A8 = { name = "rex_sub_823035A8" } +0x82303608 = { name = "rex_sub_82303608" } +0x82303780 = { name = "rex_sub_82303780" } +0x82303900 = { name = "rex_sub_82303900" } +0x82303A50 = { name = "rex_sub_82303A50" } +0x82303EB8 = { name = "rex_sub_82303EB8" } +0x823046A0 = { name = "rex_sub_823046A0" } +0x82305278 = { name = "rex_sub_82305278" } +0x82305C20 = { name = "rex_sub_82305C20" } +0x82306620 = { name = "rex_sub_82306620" } +0x82306810 = { name = "rex_sub_82306810" } +0x82306880 = { name = "rex_sub_82306880" } +0x823068B0 = { name = "rex_sub_823068B0" } +0x82306918 = { name = "rex_sub_82306918" } +0x82306AA0 = { name = "rex_sub_82306AA0" } +0x82306BE0 = { name = "rex_sub_82306BE0" } +0x82306BF0 = { name = "rex_sub_82306BF0" } +0x82306D08 = { name = "rex_sub_82306D08" } +0x82306DA8 = { name = "rex_sub_82306DA8" } +0x82306DB8 = { name = "rex_sub_82306DB8" } +0x82306DD8 = { name = "rex_sub_82306DD8" } +0x82306DF8 = { name = "rex_sub_82306DF8" } +0x82306E70 = { name = "rex_sub_82306E70" } +0x82306EA8 = { name = "rex_sub_82306EA8" } +0x82306EE8 = { name = "rex_sub_82306EE8" } +0x82306F68 = { name = "rex_sub_82306F68" } +0x82307000 = { name = "rex_sub_82307000" } +0x82307018 = { name = "rex_sub_82307018" } +0x82307030 = { name = "rex_sub_82307030" } +0x82307048 = { name = "rex_sub_82307048" } +0x82307090 = { name = "rex_sub_82307090" } +0x823070D8 = { name = "rex_sub_823070D8" } +0x823070E8 = { name = "rex_sub_823070E8" } +0x82307188 = { name = "rex_sub_82307188" } +0x82307210 = { name = "rex_sub_82307210" } +0x823072C8 = { name = "rex_sub_823072C8" } +0x82307840 = { name = "rex_sub_82307840" } +0x82307898 = { name = "rex_sub_82307898" } +0x82307908 = { name = "rex_sub_82307908" } +0x82307918 = { name = "rex_sub_82307918" } +0x82307938 = { name = "rex_sub_82307938" } +0x823086D0 = { name = "rex_sub_823086D0" } +0x82308858 = { name = "rex_sub_82308858" } +0x823089E0 = { name = "rex_sub_823089E0" } +0x82308AC8 = { name = "rex_sub_82308AC8" } +0x82308B00 = { name = "rex_sub_82308B00" } +0x82308BD0 = { name = "rex_sub_82308BD0" } +0x82308C08 = { name = "rex_sub_82308C08" } +0x82308D08 = { name = "rex_sub_82308D08" } +0x82308D40 = { name = "rex_sub_82308D40" } +0x82308E18 = { name = "rex_sub_82308E18" } +0x82308E78 = { name = "rex_sub_82308E78" } +0x82308E88 = { name = "rex_sub_82308E88" } +0x82308EC8 = { name = "rex_sub_82308EC8" } +0x82308FB0 = { name = "rex_sub_82308FB0" } +0x823090C0 = { name = "rex_sub_823090C0" } +0x82309208 = { name = "rex_sub_82309208" } +0x82309340 = { name = "rex_sub_82309340" } +0x823094A8 = { name = "rex_sub_823094A8" } +0x82309560 = { name = "rex_sub_82309560" } +0x82309670 = { name = "rex_sub_82309670" } +0x823097E8 = { name = "rex_sub_823097E8" } +0x82309908 = { name = "rex_sub_82309908" } +0x82309A70 = { name = "rex_sub_82309A70" } +0x82309C88 = { name = "rex_sub_82309C88" } +0x82309D10 = { name = "rex_sub_82309D10" } +0x8230A588 = { name = "rex_sub_8230A588" } +0x8230A7F8 = { name = "rex_sub_8230A7F8" } +0x8230A9F8 = { name = "rex_sub_8230A9F8" } +0x8230AC18 = { name = "rex_sub_8230AC18" } +0x8230B058 = { name = "rex_sub_8230B058" } +0x8230B160 = { name = "rex_sub_8230B160" } +0x8230B520 = { name = "rex_sub_8230B520" } +0x8230B5F0 = { name = "rex_sub_8230B5F0" } +0x8230B800 = { name = "rex_sub_8230B800" } +0x8230B930 = { name = "rex_sub_8230B930" } +0x8230BBD8 = { name = "rex_sub_8230BBD8" } +0x8230BE40 = { name = "rex_sub_8230BE40" } +0x8230C798 = { name = "rex_sub_8230C798" } +0x8230C948 = { name = "rex_sub_8230C948" } +0x8230D008 = { name = "rex_sub_8230D008" } +0x8230D268 = { name = "rex_sub_8230D268" } +0x8230D3F0 = { name = "rex_sub_8230D3F0" } +0x8230D650 = { name = "rex_sub_8230D650" } +0x8230D7C0 = { name = "rex_sub_8230D7C0" } +0x8230DAD8 = { name = "rex_sub_8230DAD8" } +0x8230EB98 = { name = "rex_sub_8230EB98" } +0x8230EBE8 = { name = "rex_sub_8230EBE8" } +0x8230F388 = { name = "rex_sub_8230F388" } +0x8230F658 = { name = "rex_sub_8230F658" } +0x8230F878 = { name = "rex_sub_8230F878" } +0x8230F900 = { name = "rex_sub_8230F900" } +0x8230FC68 = { name = "rex_sub_8230FC68" } +0x8230FF00 = { name = "rex_sub_8230FF00" } +0x823102A0 = { name = "rex_sub_823102A0" } +0x82310610 = { name = "rex_sub_82310610" } +0x82310B70 = { name = "rex_sub_82310B70" } +0x823112B0 = { name = "rex_sub_823112B0" } +0x82311488 = { name = "rex_sub_82311488" } +0x82312BD8 = { name = "rex_sub_82312BD8" } +0x82312CB8 = { name = "rex_sub_82312CB8" } +0x82312EB8 = { name = "rex_sub_82312EB8" } +0x82313300 = { name = "rex_sub_82313300" } +0x82313800 = { name = "rex_sub_82313800" } +0x823141C8 = { name = "rex_sub_823141C8" } +0x823148C8 = { name = "rex_sub_823148C8" } +0x82314AC0 = { name = "rex_sub_82314AC0" } +0x82314FB8 = { name = "rex_sub_82314FB8" } +0x823151E8 = { name = "rex_sub_823151E8" } +0x82315D78 = { name = "rex_sub_82315D78" } +0x82315FC8 = { name = "rex_sub_82315FC8" } +0x82316CC8 = { name = "rex_sub_82316CC8" } +0x82316DD0 = { name = "rex_sub_82316DD0" } +0x82316ED8 = { name = "rex_sub_82316ED8" } +0x82316FE0 = { name = "rex_sub_82316FE0" } +0x823170E8 = { name = "rex_sub_823170E8" } +0x82317300 = { name = "rex_sub_82317300" } +0x82317518 = { name = "rex_sub_82317518" } +0x82317730 = { name = "rex_sub_82317730" } +0x82317948 = { name = "rex_sub_82317948" } +0x82317970 = { name = "rex_sub_82317970" } +0x82317B68 = { name = "rex_sub_82317B68" } +0x82317B78 = { name = "rex_sub_82317B78" } +0x82317B98 = { name = "rex_sub_82317B98" } +0x82317F10 = { name = "rex_sub_82317F10" } +0x82318020 = { name = "rex_sub_82318020" } +0x82318038 = { name = "rex_sub_82318038" } +0x82318048 = { name = "rex_sub_82318048" } +0x82318100 = { name = "rex_sub_82318100" } +0x82318128 = { name = "rex_sub_82318128" } +0x82318F30 = { name = "rex_sub_82318F30" } +0x82318F80 = { name = "rex_sub_82318F80" } +0x82318FF8 = { name = "rex_sub_82318FF8" } +0x82319070 = { name = "rex_sub_82319070" } +0x823191B0 = { name = "rex_sub_823191B0" } +0x82319238 = { name = "rex_sub_82319238" } +0x823192C0 = { name = "rex_sub_823192C0" } +0x82319310 = { name = "rex_sub_82319310" } +0x82319360 = { name = "rex_sub_82319360" } +0x82319428 = { name = "rex_sub_82319428" } +0x823194D8 = { name = "rex_sub_823194D8" } +0x82319570 = { name = "rex_sub_82319570" } +0x82319608 = { name = "rex_sub_82319608" } +0x82319620 = { name = "rex_sub_82319620" } +0x82319638 = { name = "rex_sub_82319638" } +0x82319718 = { name = "rex_sub_82319718" } +0x82319730 = { name = "rex_sub_82319730" } +0x82319748 = { name = "rex_sub_82319748" } +0x82319760 = { name = "rex_sub_82319760" } +0x823197E8 = { name = "rex_sub_823197E8" } +0x82319988 = { name = "rex_sub_82319988" } +0x82319D30 = { name = "rex_sub_82319D30" } +0x82319DA8 = { name = "rex_sub_82319DA8" } +0x82319E18 = { name = "rex_sub_82319E18" } +0x8231A640 = { name = "rex_sub_8231A640" } +0x8231ABA0 = { name = "rex_sub_8231ABA0" } +0x8231AF28 = { name = "rex_sub_8231AF28" } +0x8231B260 = { name = "rex_sub_8231B260" } +0x8231B360 = { name = "rex_sub_8231B360" } +0x8231B5E0 = { name = "rex_sub_8231B5E0" } +0x8231B9D0 = { name = "rex_sub_8231B9D0" } +0x8231B9F0 = { name = "rex_sub_8231B9F0" } +0x8231BFF0 = { name = "rex_sub_8231BFF0" } +0x8231C178 = { name = "rex_sub_8231C178" } +0x8231C6E0 = { name = "rex_sub_8231C6E0" } +0x8231C8B0 = { name = "rex_sub_8231C8B0" } +0x8231CD78 = { name = "rex_sub_8231CD78" } +0x8231CDF8 = { name = "rex_sub_8231CDF8" } +0x8231CE60 = { name = "rex_sub_8231CE60" } +0x8231CF78 = { name = "rex_sub_8231CF78" } +0x8231CFF8 = { name = "rex_sub_8231CFF8" } +0x8231D058 = { name = "rex_sub_8231D058" } +0x8231D0C0 = { name = "rex_sub_8231D0C0" } +0x8231D1A8 = { name = "rex_sub_8231D1A8" } +0x8231D240 = { name = "rex_sub_8231D240" } +0x8231D968 = { name = "rex_sub_8231D968" } +0x8231DBD8 = { name = "rex_sub_8231DBD8" } +0x8231E610 = { name = "rex_sub_8231E610" } +0x8231E8B0 = { name = "rex_sub_8231E8B0" } +0x8231E9B8 = { name = "rex_sub_8231E9B8" } +0x8231ED68 = { name = "rex_sub_8231ED68" } +0x8231F0D0 = { name = "rex_sub_8231F0D0" } +0x8231F1C8 = { name = "rex_sub_8231F1C8" } +0x8231F2C0 = { name = "rex_sub_8231F2C0" } +0x8231F480 = { name = "rex_sub_8231F480" } +0x8231F598 = { name = "rex_sub_8231F598" } +0x8231F7C0 = { name = "rex_sub_8231F7C0" } +0x8231F9B0 = { name = "rex_sub_8231F9B0" } +0x8231FB78 = { name = "rex_sub_8231FB78" } +0x8231FC38 = { name = "rex_sub_8231FC38" } +0x8231FDF0 = { name = "rex_sub_8231FDF0" } +0x8231FF48 = { name = "rex_sub_8231FF48" } +0x8231FFE0 = { name = "rex_sub_8231FFE0" } +0x82320040 = { name = "rex_sub_82320040" } +0x82320140 = { name = "rex_sub_82320140" } +0x823201D8 = { name = "rex_sub_823201D8" } +0x82320238 = { name = "rex_sub_82320238" } +0x82320338 = { name = "rex_sub_82320338" } +0x823203D0 = { name = "rex_sub_823203D0" } +0x82320430 = { name = "rex_sub_82320430" } +0x82320530 = { name = "rex_sub_82320530" } +0x82320568 = { name = "rex_sub_82320568" } +0x823205F8 = { name = "rex_sub_823205F8" } +0x82320690 = { name = "rex_sub_82320690" } +0x82320728 = { name = "rex_sub_82320728" } +0x823207C0 = { name = "rex_sub_823207C0" } +0x82320900 = { name = "rex_sub_82320900" } +0x82320C40 = { name = "rex_sub_82320C40" } +0x82320CF8 = { name = "rex_sub_82320CF8" } +0x82320D88 = { name = "rex_sub_82320D88" } +0x82320E58 = { name = "rex_sub_82320E58" } +0x82320F78 = { name = "rex_sub_82320F78" } +0x82321080 = { name = "rex_sub_82321080" } +0x82321288 = { name = "rex_sub_82321288" } +0x823214F8 = { name = "rex_sub_823214F8" } +0x82321A58 = { name = "rex_sub_82321A58" } +0x82321CA8 = { name = "rex_sub_82321CA8" } +0x82321F28 = { name = "rex_sub_82321F28" } +0x823220A0 = { name = "rex_sub_823220A0" } +0x823221A8 = { name = "rex_sub_823221A8" } +0x82322258 = { name = "rex_sub_82322258" } +0x82322350 = { name = "rex_sub_82322350" } +0x823224F0 = { name = "rex_sub_823224F0" } +0x82322668 = { name = "rex_sub_82322668" } +0x823229E8 = { name = "rex_sub_823229E8" } +0x82322A50 = { name = "rex_sub_82322A50" } +0x82322B10 = { name = "rex_sub_82322B10" } +0x82322C58 = { name = "rex_sub_82322C58" } +0x82322D28 = { name = "rex_sub_82322D28" } +0x82322E60 = { name = "rex_sub_82322E60" } +0x82322F28 = { name = "rex_sub_82322F28" } +0x82323008 = { name = "rex_sub_82323008" } +0x823230D8 = { name = "rex_sub_823230D8" } +0x82323198 = { name = "rex_sub_82323198" } +0x82323410 = { name = "rex_sub_82323410" } +0x82323BC8 = { name = "rex_sub_82323BC8" } +0x82323E80 = { name = "rex_sub_82323E80" } +0x82323EE8 = { name = "rex_sub_82323EE8" } +0x823243A0 = { name = "rex_sub_823243A0" } +0x82324408 = { name = "rex_sub_82324408" } +0x82324600 = { name = "rex_sub_82324600" } +0x823247D8 = { name = "rex_sub_823247D8" } +0x82324BD8 = { name = "rex_sub_82324BD8" } +0x82324C18 = { name = "rex_sub_82324C18" } +0x82324ED0 = { name = "rex_sub_82324ED0" } +0x823254C0 = { name = "rex_sub_823254C0" } +0x823259C8 = { name = "rex_sub_823259C8" } +0x82325D18 = { name = "rex_sub_82325D18" } +0x82325F88 = { name = "rex_sub_82325F88" } +0x82326498 = { name = "rex_sub_82326498" } +0x82326708 = { name = "rex_sub_82326708" } +0x82326BA0 = { name = "rex_sub_82326BA0" } +0x82326BB0 = { name = "rex_sub_82326BB0" } +0x82326BF0 = { name = "rex_sub_82326BF0" } +0x82326C38 = { name = "rex_sub_82326C38" } +0x82326CA8 = { name = "rex_sub_82326CA8" } +0x82326D80 = { name = "rex_sub_82326D80" } +0x82326DC8 = { name = "rex_sub_82326DC8" } +0x82326DD8 = { name = "rex_sub_82326DD8" } +0x82326E30 = { name = "rex_sub_82326E30" } +0x82326F30 = { name = "rex_sub_82326F30" } +0x82326FE0 = { name = "rex_sub_82326FE0" } +0x82327088 = { name = "rex_sub_82327088" } +0x82327130 = { name = "rex_sub_82327130" } +0x823271E8 = { name = "rex_sub_823271E8" } +0x823272A0 = { name = "rex_sub_823272A0" } +0x82327358 = { name = "rex_sub_82327358" } +0x82327410 = { name = "rex_sub_82327410" } +0x823274C8 = { name = "rex_sub_823274C8" } +0x82327580 = { name = "rex_sub_82327580" } +0x82327600 = { name = "rex_sub_82327600" } +0x82327660 = { name = "rex_sub_82327660" } +0x823276C0 = { name = "rex_sub_823276C0" } +0x82327738 = { name = "rex_sub_82327738" } +0x82327908 = { name = "rex_sub_82327908" } +0x823279E8 = { name = "rex_sub_823279E8" } +0x82327A90 = { name = "rex_sub_82327A90" } +0x82327B28 = { name = "rex_sub_82327B28" } +0x82327B70 = { name = "rex_sub_82327B70" } +0x82327BE0 = { name = "rex_sub_82327BE0" } +0x82327C38 = { name = "rex_sub_82327C38" } +0x82327CB0 = { name = "rex_sub_82327CB0" } +0x82327D60 = { name = "rex_sub_82327D60" } +0x82327D80 = { name = "rex_sub_82327D80" } +0x82327E28 = { name = "rex_sub_82327E28" } +0x82327E88 = { name = "rex_sub_82327E88" } +0x82327F28 = { name = "rex_sub_82327F28" } +0x82327F70 = { name = "rex_sub_82327F70" } +0x82327FC8 = { name = "rex_sub_82327FC8" } +0x82328020 = { name = "rex_sub_82328020" } +0x82328078 = { name = "rex_sub_82328078" } +0x82328088 = { name = "rex_sub_82328088" } +0x823280E8 = { name = "rex_sub_823280E8" } +0x82328208 = { name = "rex_sub_82328208" } +0x82328328 = { name = "rex_sub_82328328" } +0x82328480 = { name = "rex_sub_82328480" } +0x82328598 = { name = "rex_sub_82328598" } +0x823286B0 = { name = "rex_sub_823286B0" } +0x82328800 = { name = "rex_sub_82328800" } +0x82328820 = { name = "rex_sub_82328820" } +0x82328840 = { name = "rex_sub_82328840" } +0x82328860 = { name = "rex_sub_82328860" } +0x823288E0 = { name = "rex_sub_823288E0" } +0x82328940 = { name = "rex_sub_82328940" } +0x82328A70 = { name = "rex_sub_82328A70" } +0x82328F48 = { name = "rex_sub_82328F48" } +0x82328F80 = { name = "rex_sub_82328F80" } +0x82328F98 = { name = "rex_sub_82328F98" } +0x82329038 = { name = "rex_sub_82329038" } +0x823290A0 = { name = "rex_sub_823290A0" } +0x82329160 = { name = "rex_sub_82329160" } +0x82329218 = { name = "rex_sub_82329218" } +0x82329488 = { name = "rex_sub_82329488" } +0x82329860 = { name = "rex_sub_82329860" } +0x823298A8 = { name = "rex_sub_823298A8" } +0x82329B40 = { name = "rex_sub_82329B40" } +0x82329F40 = { name = "rex_sub_82329F40" } +0x82329F80 = { name = "rex_sub_82329F80" } +0x8232A050 = { name = "rex_sub_8232A050" } +0x8232A1A0 = { name = "rex_sub_8232A1A0" } +0x8232A1F8 = { name = "rex_sub_8232A1F8" } +0x8232A228 = { name = "rex_sub_8232A228" } +0x8232A280 = { name = "rex_sub_8232A280" } +0x8232A348 = { name = "rex_sub_8232A348" } +0x8232A400 = { name = "rex_sub_8232A400" } +0x8232A440 = { name = "rex_sub_8232A440" } +0x8232A490 = { name = "rex_sub_8232A490" } +0x8232A508 = { name = "rex_sub_8232A508" } +0x8232A518 = { name = "rex_sub_8232A518" } +0x8232A568 = { name = "rex_sub_8232A568" } +0x8232A5D0 = { name = "rex_sub_8232A5D0" } +0x8232A628 = { name = "rex_sub_8232A628" } +0x8232A638 = { name = "rex_sub_8232A638" } +0x8232A660 = { name = "rex_sub_8232A660" } +0x8232A670 = { name = "rex_sub_8232A670" } +0x8232A760 = { name = "rex_sub_8232A760" } +0x8232A7E8 = { name = "rex_sub_8232A7E8" } +0x8232A900 = { name = "rex_sub_8232A900" } +0x8232A948 = { name = "rex_sub_8232A948" } +0x8232A978 = { name = "rex_sub_8232A978" } +0x8232A990 = { name = "rex_sub_8232A990" } +0x8232A9C0 = { name = "rex_sub_8232A9C0" } +0x8232AA88 = { name = "rex_sub_8232AA88" } +0x8232AC08 = { name = "rex_sub_8232AC08" } +0x8232AE90 = { name = "rex_sub_8232AE90" } +0x8232AF50 = { name = "rex_sub_8232AF50" } +0x8232B0D8 = { name = "rex_sub_8232B0D8" } +0x8232B370 = { name = "rex_sub_8232B370" } +0x8232B3F8 = { name = "rex_sub_8232B3F8" } +0x8232B5B0 = { name = "rex_sub_8232B5B0" } +0x8232B668 = { name = "rex_sub_8232B668" } +0x8232B7A8 = { name = "rex_sub_8232B7A8" } +0x8232B890 = { name = "rex_sub_8232B890" } +0x8232B950 = { name = "rex_sub_8232B950" } +0x8232BBF8 = { name = "rex_sub_8232BBF8" } +0x8232BCC0 = { name = "rex_sub_8232BCC0" } +0x8232C2C8 = { name = "rex_sub_8232C2C8" } +0x8232C390 = { name = "rex_sub_8232C390" } +0x8232C4E8 = { name = "rex_sub_8232C4E8" } +0x8232C5B0 = { name = "rex_sub_8232C5B0" } +0x8232C6C0 = { name = "rex_sub_8232C6C0" } +0x8232C788 = { name = "rex_sub_8232C788" } +0x8232C8B8 = { name = "rex_sub_8232C8B8" } +0x8232CCB8 = { name = "rex_sub_8232CCB8" } +0x8232D958 = { name = "rex_sub_8232D958" } +0x8232DB48 = { name = "rex_sub_8232DB48" } +0x8232DC50 = { name = "rex_sub_8232DC50" } +0x8232E680 = { name = "rex_sub_8232E680" } +0x8232E698 = { name = "rex_sub_8232E698" } +0x8232E6A8 = { name = "rex_sub_8232E6A8" } +0x8232E6F0 = { name = "rex_sub_8232E6F0" } +0x8232E7F8 = { name = "rex_sub_8232E7F8" } +0x8232E978 = { name = "rex_sub_8232E978" } +0x8232EA68 = { name = "rex_sub_8232EA68" } +0x8232EBA8 = { name = "rex_sub_8232EBA8" } +0x8232EC80 = { name = "rex_sub_8232EC80" } +0x8232EDA0 = { name = "rex_sub_8232EDA0" } +0x8232EE68 = { name = "rex_sub_8232EE68" } +0x8232EFB8 = { name = "rex_sub_8232EFB8" } +0x8232F0E0 = { name = "rex_sub_8232F0E0" } +0x8232F248 = { name = "rex_sub_8232F248" } +0x8232F2C0 = { name = "rex_sub_8232F2C0" } +0x8232F398 = { name = "rex_sub_8232F398" } +0x8232F4A0 = { name = "rex_sub_8232F4A0" } +0x8232F638 = { name = "rex_sub_8232F638" } +0x8232F6C8 = { name = "rex_sub_8232F6C8" } +0x8232FA60 = { name = "rex_sub_8232FA60" } +0x8232FC40 = { name = "rex_sub_8232FC40" } +0x82330028 = { name = "rex_sub_82330028" } +0x82330170 = { name = "rex_sub_82330170" } +0x823302F8 = { name = "rex_sub_823302F8" } +0x823303C8 = { name = "rex_sub_823303C8" } +0x82330518 = { name = "rex_sub_82330518" } +0x82330740 = { name = "rex_sub_82330740" } +0x82330A10 = { name = "rex_sub_82330A10" } +0x82330A80 = { name = "rex_sub_82330A80" } +0x82330BD0 = { name = "rex_sub_82330BD0" } +0x82330CF0 = { name = "rex_sub_82330CF0" } +0x82331150 = { name = "rex_sub_82331150" } +0x82331160 = { name = "rex_sub_82331160" } +0x82331188 = { name = "rex_sub_82331188" } +0x823312F0 = { name = "rex_sub_823312F0" } +0x82331520 = { name = "rex_sub_82331520" } +0x82331550 = { name = "rex_sub_82331550" } +0x823315E8 = { name = "rex_sub_823315E8" } +0x823316C8 = { name = "rex_sub_823316C8" } +0x82331728 = { name = "rex_sub_82331728" } +0x82331870 = { name = "rex_sub_82331870" } +0x823318B0 = { name = "rex_sub_823318B0" } +0x82331990 = { name = "rex_sub_82331990" } +0x823319D0 = { name = "rex_sub_823319D0" } +0x82331A20 = { name = "rex_sub_82331A20" } +0x82331A70 = { name = "rex_sub_82331A70" } +0x82331AD0 = { name = "rex_sub_82331AD0" } +0x82331B20 = { name = "rex_sub_82331B20" } +0x82331B70 = { name = "rex_sub_82331B70" } +0x82331BF0 = { name = "rex_sub_82331BF0" } +0x82331C60 = { name = "rex_sub_82331C60" } +0x82331CA8 = { name = "rex_sub_82331CA8" } +0x82331D18 = { name = "rex_sub_82331D18" } +0x82331D28 = { name = "rex_sub_82331D28" } +0x82331D38 = { name = "rex_sub_82331D38" } +0x82331D90 = { name = "rex_sub_82331D90" } +0x82331DE8 = { name = "rex_sub_82331DE8" } +0x82331E30 = { name = "rex_sub_82331E30" } +0x82331E78 = { name = "rex_sub_82331E78" } +0x82331EC0 = { name = "rex_sub_82331EC0" } +0x82331ED0 = { name = "rex_sub_82331ED0" } +0x82331F20 = { name = "rex_sub_82331F20" } +0x82331F48 = { name = "rex_sub_82331F48" } +0x82331F78 = { name = "rex_sub_82331F78" } +0x82331F88 = { name = "rex_sub_82331F88" } +0x82331FA0 = { name = "rex_sub_82331FA0" } +0x82331FB0 = { name = "rex_sub_82331FB0" } +0x82331FC0 = { name = "rex_sub_82331FC0" } +0x82331FF0 = { name = "rex_sub_82331FF0" } +0x82332010 = { name = "rex_sub_82332010" } +0x82332050 = { name = "rex_sub_82332050" } +0x82332060 = { name = "rex_sub_82332060" } +0x82332088 = { name = "rex_sub_82332088" } +0x823320E8 = { name = "rex_sub_823320E8" } +0x82332128 = { name = "rex_sub_82332128" } +0x82332138 = { name = "rex_sub_82332138" } +0x823321E0 = { name = "rex_sub_823321E0" } +0x82332240 = { name = "rex_sub_82332240" } +0x82332350 = { name = "rex_sub_82332350" } +0x82332460 = { name = "rex_sub_82332460" } +0x82332570 = { name = "rex_sub_82332570" } +0x82332680 = { name = "rex_sub_82332680" } +0x823326A0 = { name = "rex_sub_823326A0" } +0x823326C0 = { name = "rex_sub_823326C0" } +0x823327D0 = { name = "rex_sub_823327D0" } +0x82332820 = { name = "rex_sub_82332820" } +0x82332830 = { name = "rex_sub_82332830" } +0x82332840 = { name = "rex_sub_82332840" } +0x82332850 = { name = "rex_sub_82332850" } +0x82332860 = { name = "rex_sub_82332860" } +0x82332888 = { name = "rex_sub_82332888" } +0x823328D8 = { name = "rex_sub_823328D8" } +0x823328F0 = { name = "rex_sub_823328F0" } +0x82332910 = { name = "rex_sub_82332910" } +0x82332920 = { name = "rex_sub_82332920" } +0x82332930 = { name = "rex_sub_82332930" } +0x82332940 = { name = "rex_sub_82332940" } +0x82332960 = { name = "rex_sub_82332960" } +0x82332C08 = { name = "rex_sub_82332C08" } +0x82332D18 = { name = "rex_sub_82332D18" } +0x82332D28 = { name = "rex_sub_82332D28" } +0x82332D58 = { name = "rex_sub_82332D58" } +0x82332D80 = { name = "rex_sub_82332D80" } +0x82332DE0 = { name = "rex_sub_82332DE0" } +0x82332E28 = { name = "rex_sub_82332E28" } +0x82332ED0 = { name = "rex_sub_82332ED0" } +0x82332EE0 = { name = "rex_sub_82332EE0" } +0x82332EF0 = { name = "rex_sub_82332EF0" } +0x82332F38 = { name = "rex_sub_82332F38" } +0x82332F80 = { name = "rex_sub_82332F80" } +0x82332F98 = { name = "rex_sub_82332F98" } +0x82333028 = { name = "rex_sub_82333028" } +0x82333078 = { name = "rex_sub_82333078" } +0x823330E0 = { name = "rex_sub_823330E0" } +0x82333130 = { name = "rex_sub_82333130" } +0x82333140 = { name = "rex_sub_82333140" } +0x82333150 = { name = "rex_sub_82333150" } +0x82333170 = { name = "rex_sub_82333170" } +0x82333190 = { name = "rex_sub_82333190" } +0x823331D8 = { name = "rex_sub_823331D8" } +0x82333218 = { name = "rex_sub_82333218" } +0x82333270 = { name = "rex_sub_82333270" } +0x823332D8 = { name = "rex_sub_823332D8" } +0x823332F0 = { name = "rex_sub_823332F0" } +0x82333308 = { name = "rex_sub_82333308" } +0x82333320 = { name = "rex_sub_82333320" } +0x82333348 = { name = "rex_sub_82333348" } +0x82333418 = { name = "rex_sub_82333418" } +0x82333458 = { name = "rex_sub_82333458" } +0x82333490 = { name = "rex_sub_82333490" } +0x823335B8 = { name = "rex_sub_823335B8" } +0x82333608 = { name = "rex_sub_82333608" } +0x82333730 = { name = "rex_sub_82333730" } +0x82333770 = { name = "rex_sub_82333770" } +0x82333780 = { name = "rex_sub_82333780" } +0x82333790 = { name = "rex_sub_82333790" } +0x823337A8 = { name = "rex_sub_823337A8" } +0x823337C0 = { name = "rex_sub_823337C0" } +0x82333818 = { name = "rex_sub_82333818" } +0x82333968 = { name = "rex_sub_82333968" } +0x82333A78 = { name = "rex_sub_82333A78" } +0x82333AA8 = { name = "rex_sub_82333AA8" } +0x82333AB8 = { name = "rex_sub_82333AB8" } +0x82333AD0 = { name = "rex_sub_82333AD0" } +0x82333C98 = { name = "rex_sub_82333C98" } +0x82333CF0 = { name = "rex_sub_82333CF0" } +0x82333DD0 = { name = "rex_sub_82333DD0" } +0x82333E40 = { name = "rex_sub_82333E40" } +0x82333F30 = { name = "rex_sub_82333F30" } +0x82333FF8 = { name = "rex_sub_82333FF8" } +0x82334100 = { name = "rex_sub_82334100" } +0x823341E0 = { name = "rex_sub_823341E0" } +0x82334310 = { name = "rex_sub_82334310" } +0x82334440 = { name = "rex_sub_82334440" } +0x823344D8 = { name = "rex_sub_823344D8" } +0x82334670 = { name = "rex_sub_82334670" } +0x82334818 = { name = "rex_sub_82334818" } +0x82334860 = { name = "rex_sub_82334860" } +0x82334960 = { name = "rex_sub_82334960" } +0x82334BB8 = { name = "rex_sub_82334BB8" } +0x82334E90 = { name = "rex_sub_82334E90" } +0x82335158 = { name = "rex_sub_82335158" } +0x823351A8 = { name = "rex_sub_823351A8" } +0x823351B8 = { name = "rex_sub_823351B8" } +0x823351C8 = { name = "rex_sub_823351C8" } +0x823351D8 = { name = "rex_sub_823351D8" } +0x82335210 = { name = "rex_sub_82335210" } +0x82335288 = { name = "rex_sub_82335288" } +0x82335308 = { name = "rex_sub_82335308" } +0x82335378 = { name = "rex_sub_82335378" } +0x82335408 = { name = "rex_sub_82335408" } +0x82335480 = { name = "rex_sub_82335480" } +0x82335520 = { name = "rex_sub_82335520" } +0x823359F0 = { name = "rex_sub_823359F0" } +0x82335A38 = { name = "rex_sub_82335A38" } +0x82335A58 = { name = "rex_sub_82335A58" } +0x82335A68 = { name = "rex_sub_82335A68" } +0x82335A80 = { name = "rex_sub_82335A80" } +0x82335A90 = { name = "rex_sub_82335A90" } +0x82335B18 = { name = "rex_sub_82335B18" } +0x82335B90 = { name = "rex_sub_82335B90" } +0x82335BA8 = { name = "rex_sub_82335BA8" } +0x82335BB0 = { name = "rex_sub_82335BB0" } +0x82335BB8 = { name = "rex_sub_82335BB8" } +0x82335C38 = { name = "rex_sub_82335C38" } +0x82335C78 = { name = "rex_sub_82335C78" } +0x82335C80 = { name = "rex_sub_82335C80" } +0x82335D80 = { name = "rex_sub_82335D80" } +0x82335E40 = { name = "rex_sub_82335E40" } +0x82335F20 = { name = "rex_sub_82335F20" } +0x82336000 = { name = "rex_sub_82336000" } +0x823360E0 = { name = "rex_sub_823360E0" } +0x82336138 = { name = "rex_sub_82336138" } +0x823361A0 = { name = "rex_sub_823361A0" } +0x823361D8 = { name = "rex_sub_823361D8" } +0x823362A8 = { name = "rex_sub_823362A8" } +0x823362B8 = { name = "rex_sub_823362B8" } +0x823362C0 = { name = "rex_sub_823362C0" } +0x82336318 = { name = "rex_sub_82336318" } +0x823363B0 = { name = "rex_sub_823363B0" } +0x82336430 = { name = "rex_sub_82336430" } +0x823364B8 = { name = "rex_sub_823364B8" } +0x823364F8 = { name = "rex_sub_823364F8" } +0x82336500 = { name = "rex_sub_82336500" } +0x82336508 = { name = "rex_sub_82336508" } +0x823365C0 = { name = "rex_sub_823365C0" } +0x82336610 = { name = "rex_sub_82336610" } +0x82336690 = { name = "rex_sub_82336690" } +0x823366E0 = { name = "rex_sub_823366E0" } +0x82336840 = { name = "rex_sub_82336840" } +0x82336920 = { name = "rex_sub_82336920" } +0x82336AA0 = { name = "rex_sub_82336AA0" } +0x82336DB8 = { name = "rex_sub_82336DB8" } +0x82336E40 = { name = "rex_sub_82336E40" } +0x82336EF0 = { name = "rex_sub_82336EF0" } +0x82337000 = { name = "rex_sub_82337000" } +0x823371B0 = { name = "rex_sub_823371B0" } +0x82337488 = { name = "rex_sub_82337488" } +0x823374E8 = { name = "rex_sub_823374E8" } +0x82337548 = { name = "rex_sub_82337548" } +0x823375C0 = { name = "rex_sub_823375C0" } +0x82337628 = { name = "rex_sub_82337628" } +0x82337690 = { name = "rex_sub_82337690" } +0x823376F8 = { name = "rex_sub_823376F8" } +0x82337778 = { name = "rex_sub_82337778" } +0x82337788 = { name = "rex_sub_82337788" } +0x823377C8 = { name = "rex_sub_823377C8" } +0x82337820 = { name = "rex_sub_82337820" } +0x82337830 = { name = "rex_sub_82337830" } +0x82337848 = { name = "rex_sub_82337848" } +0x823378A8 = { name = "rex_sub_823378A8" } +0x823378F8 = { name = "rex_sub_823378F8" } +0x82337918 = { name = "rex_sub_82337918" } +0x82337938 = { name = "rex_sub_82337938" } +0x82337948 = { name = "rex_sub_82337948" } +0x82337960 = { name = "rex_sub_82337960" } +0x82337978 = { name = "rex_sub_82337978" } +0x82337990 = { name = "rex_sub_82337990" } +0x823379A8 = { name = "rex_sub_823379A8" } +0x823379F0 = { name = "rex_sub_823379F0" } +0x82337A20 = { name = "rex_sub_82337A20" } +0x82337B18 = { name = "rex_sub_82337B18" } +0x82337BA0 = { name = "rex_sub_82337BA0" } +0x82337C50 = { name = "rex_sub_82337C50" } +0x82337C68 = { name = "rex_sub_82337C68" } +0x82337CF0 = { name = "rex_sub_82337CF0" } +0x82337D58 = { name = "rex_sub_82337D58" } +0x82337DB0 = { name = "rex_sub_82337DB0" } +0x82337E10 = { name = "rex_sub_82337E10" } +0x82337E60 = { name = "rex_sub_82337E60" } +0x82337F58 = { name = "rex_sub_82337F58" } +0x82337F68 = { name = "rex_sub_82337F68" } +0x82338020 = { name = "rex_sub_82338020" } +0x823380F8 = { name = "rex_sub_823380F8" } +0x82338188 = { name = "rex_sub_82338188" } +0x82338208 = { name = "rex_sub_82338208" } +0x82338218 = { name = "rex_sub_82338218" } +0x82338268 = { name = "rex_sub_82338268" } +0x823382A8 = { name = "rex_sub_823382A8" } +0x82338300 = { name = "rex_sub_82338300" } +0x82338388 = { name = "rex_sub_82338388" } +0x82338410 = { name = "rex_sub_82338410" } +0x82338488 = { name = "rex_sub_82338488" } +0x823384F8 = { name = "rex_sub_823384F8" } +0x82338568 = { name = "rex_sub_82338568" } +0x823385D8 = { name = "rex_sub_823385D8" } +0x82338678 = { name = "rex_sub_82338678" } +0x823386C8 = { name = "rex_sub_823386C8" } +0x82338738 = { name = "rex_sub_82338738" } +0x823387B0 = { name = "rex_sub_823387B0" } +0x82338848 = { name = "rex_sub_82338848" } +0x823388D0 = { name = "rex_sub_823388D0" } +0x82338950 = { name = "rex_sub_82338950" } +0x82338998 = { name = "rex_sub_82338998" } +0x82338A68 = { name = "rex_sub_82338A68" } +0x82338AE8 = { name = "rex_sub_82338AE8" } +0x82338FB0 = { name = "rex_sub_82338FB0" } +0x82339008 = { name = "rex_sub_82339008" } +0x82339068 = { name = "rex_sub_82339068" } +0x82339098 = { name = "rex_sub_82339098" } +0x82339110 = { name = "rex_sub_82339110" } +0x82339150 = { name = "rex_sub_82339150" } +0x823391A8 = { name = "rex_sub_823391A8" } +0x82339200 = { name = "rex_sub_82339200" } +0x823392A8 = { name = "rex_sub_823392A8" } +0x82339328 = { name = "rex_sub_82339328" } +0x82339390 = { name = "rex_sub_82339390" } +0x823393E8 = { name = "rex_sub_823393E8" } +0x823393F0 = { name = "rex_sub_823393F0" } +0x82339460 = { name = "rex_sub_82339460" } +0x823394C0 = { name = "rex_sub_823394C0" } +0x823394D0 = { name = "rex_sub_823394D0" } +0x823394E0 = { name = "rex_sub_823394E0" } +0x823394E8 = { name = "rex_sub_823394E8" } +0x82339550 = { name = "rex_sub_82339550" } +0x82339598 = { name = "rex_sub_82339598" } +0x823395A8 = { name = "rex_sub_823395A8" } +0x823395B8 = { name = "rex_sub_823395B8" } +0x823395F0 = { name = "rex_sub_823395F0" } +0x82339658 = { name = "rex_sub_82339658" } +0x823396B0 = { name = "rex_sub_823396B0" } +0x823396E0 = { name = "rex_sub_823396E0" } +0x82339718 = { name = "rex_sub_82339718" } +0x82339750 = { name = "rex_sub_82339750" } +0x82339780 = { name = "rex_sub_82339780" } +0x82339810 = { name = "rex_sub_82339810" } +0x82339838 = { name = "rex_sub_82339838" } +0x82339868 = { name = "rex_sub_82339868" } +0x82339940 = { name = "rex_sub_82339940" } +0x82339A20 = { name = "rex_sub_82339A20" } +0x82339AA8 = { name = "rex_sub_82339AA8" } +0x82339B60 = { name = "rex_sub_82339B60" } +0x82339BD8 = { name = "rex_sub_82339BD8" } +0x82339C78 = { name = "rex_sub_82339C78" } +0x82339D10 = { name = "rex_sub_82339D10" } +0x82339D88 = { name = "rex_sub_82339D88" } +0x82339DE0 = { name = "rex_sub_82339DE0" } +0x82339F08 = { name = "rex_sub_82339F08" } +0x82339F10 = { name = "rex_sub_82339F10" } +0x82339F60 = { name = "rex_sub_82339F60" } +0x82339FB0 = { name = "rex_sub_82339FB0" } +0x8233A0B0 = { name = "rex_sub_8233A0B0" } +0x8233A120 = { name = "rex_sub_8233A120" } +0x8233A150 = { name = "rex_sub_8233A150" } +0x8233A1C0 = { name = "rex_sub_8233A1C0" } +0x8233A250 = { name = "rex_sub_8233A250" } +0x8233A400 = { name = "rex_sub_8233A400" } +0x8233A420 = { name = "rex_sub_8233A420" } +0x8233A460 = { name = "rex_sub_8233A460" } +0x8233A488 = { name = "rex_sub_8233A488" } +0x8233A4D8 = { name = "rex_sub_8233A4D8" } +0x8233A550 = { name = "rex_sub_8233A550" } +0x8233A5D8 = { name = "rex_sub_8233A5D8" } +0x8233A610 = { name = "rex_sub_8233A610" } +0x8233A620 = { name = "rex_sub_8233A620" } +0x8233A630 = { name = "rex_sub_8233A630" } +0x8233A680 = { name = "rex_sub_8233A680" } +0x8233A708 = { name = "rex_sub_8233A708" } +0x8233A758 = { name = "rex_sub_8233A758" } +0x8233A768 = { name = "rex_sub_8233A768" } +0x8233A778 = { name = "rex_sub_8233A778" } +0x8233A788 = { name = "rex_sub_8233A788" } +0x8233A798 = { name = "rex_sub_8233A798" } +0x8233A830 = { name = "rex_sub_8233A830" } +0x8233A890 = { name = "rex_sub_8233A890" } +0x8233A950 = { name = "rex_sub_8233A950" } +0x8233A9D8 = { name = "rex_sub_8233A9D8" } +0x8233AA20 = { name = "rex_sub_8233AA20" } +0x8233AA98 = { name = "rex_sub_8233AA98" } +0x8233AAA0 = { name = "rex_sub_8233AAA0" } +0x8233AAE0 = { name = "rex_sub_8233AAE0" } +0x8233AB68 = { name = "rex_sub_8233AB68" } +0x8233ABF8 = { name = "rex_sub_8233ABF8" } +0x8233AC78 = { name = "rex_sub_8233AC78" } +0x8233AC88 = { name = "rex_sub_8233AC88" } +0x8233AD10 = { name = "rex_sub_8233AD10" } +0x8233AD40 = { name = "rex_sub_8233AD40" } +0x8233ADC0 = { name = "rex_sub_8233ADC0" } +0x8233AE10 = { name = "rex_sub_8233AE10" } +0x8233AE88 = { name = "rex_sub_8233AE88" } +0x8233AEE8 = { name = "rex_sub_8233AEE8" } +0x8233AF98 = { name = "rex_sub_8233AF98" } +0x8233B068 = { name = "rex_sub_8233B068" } +0x8233B0D0 = { name = "rex_sub_8233B0D0" } +0x8233B118 = { name = "rex_sub_8233B118" } +0x8233B128 = { name = "rex_sub_8233B128" } +0x8233B158 = { name = "rex_sub_8233B158" } +0x8233B1C0 = { name = "rex_sub_8233B1C0" } +0x8233B1D8 = { name = "rex_sub_8233B1D8" } +0x8233B1E0 = { name = "rex_sub_8233B1E0" } +0x8233B260 = { name = "rex_sub_8233B260" } +0x8233B2B8 = { name = "rex_sub_8233B2B8" } +0x8233B300 = { name = "rex_sub_8233B300" } +0x8233B370 = { name = "rex_sub_8233B370" } +0x8233B378 = { name = "rex_sub_8233B378" } +0x8233B400 = { name = "rex_sub_8233B400" } +0x8233B4D0 = { name = "rex_sub_8233B4D0" } +0x8233B538 = { name = "rex_sub_8233B538" } +0x8233B5A0 = { name = "rex_sub_8233B5A0" } +0x8233B658 = { name = "rex_sub_8233B658" } +0x8233B6A8 = { name = "rex_sub_8233B6A8" } +0x8233B720 = { name = "rex_sub_8233B720" } +0x8233B748 = { name = "rex_sub_8233B748" } +0x8233B828 = { name = "rex_sub_8233B828" } +0x8233B8E8 = { name = "rex_sub_8233B8E8" } +0x8233B900 = { name = "rex_sub_8233B900" } +0x8233B948 = { name = "rex_sub_8233B948" } +0x8233B960 = { name = "rex_sub_8233B960" } +0x823a6c30 = {} +0x823af140 = {} +0x823b94d0 = {} +0x822015b8 = {} +0x8233B970 = { name = "rex_sub_8233B970" } +0x8233B980 = { name = "rex_sub_8233B980" } +0x8233B990 = { name = "rex_sub_8233B990" } +0x8233BA20 = { name = "rex_sub_8233BA20" } +0x8233BA88 = { name = "rex_sub_8233BA88" } +0x8233BB10 = { name = "rex_sub_8233BB10" } +0x8233BB88 = { name = "rex_sub_8233BB88" } +0x8233BBE8 = { name = "rex_sub_8233BBE8" } +0x8233BC50 = { name = "rex_sub_8233BC50" } +0x8233BCA8 = { name = "rex_sub_8233BCA8" } +0x8233C0A0 = { name = "rex_sub_8233C0A0" } +0x8233C180 = { name = "rex_sub_8233C180" } +0x8233C1E8 = { name = "rex_sub_8233C1E8" } +0x8233C238 = { name = "rex_sub_8233C238" } +0x8233C280 = { name = "rex_sub_8233C280" } +0x8233C2F0 = { name = "rex_sub_8233C2F0" } +0x8233C308 = { name = "rex_sub_8233C308" } +0x8233C318 = { name = "rex_sub_8233C318" } +0x8233C328 = { name = "rex_sub_8233C328" } +0x8233C338 = { name = "rex_sub_8233C338" } +0x8233C3B8 = { name = "rex_sub_8233C3B8" } +0x8233C418 = { name = "rex_sub_8233C418" } +0x8233C4A0 = { name = "rex_sub_8233C4A0" } +0x8233C4E8 = { name = "rex_sub_8233C4E8" } +0x8233C4F8 = { name = "rex_sub_8233C4F8" } +0x8233C5D0 = { name = "rex_sub_8233C5D0" } +0x8233C628 = { name = "rex_sub_8233C628" } +0x8233C690 = { name = "rex_sub_8233C690" } +0x8233C708 = { name = "rex_sub_8233C708" } +0x8233C750 = { name = "rex_sub_8233C750" } +0x8233C788 = { name = "rex_sub_8233C788" } +0x8233C810 = { name = "rex_sub_8233C810" } +0x8233C868 = { name = "rex_sub_8233C868" } +0x8233C8D8 = { name = "rex_sub_8233C8D8" } +0x8233C940 = { name = "rex_sub_8233C940" } +0x8233C988 = { name = "rex_sub_8233C988" } +0x8233CA38 = { name = "rex_sub_8233CA38" } +0x8233CAE8 = { name = "rex_sub_8233CAE8" } +0x8233CB48 = { name = "rex_sub_8233CB48" } +0x8233CB90 = { name = "rex_sub_8233CB90" } +0x8233CBD8 = { name = "rex_sub_8233CBD8" } +0x8233CD98 = { name = "rex_sub_8233CD98" } +0x8233CE90 = { name = "rex_sub_8233CE90" } +0x8233CF78 = { name = "rex_sub_8233CF78" } +0x8233D048 = { name = "rex_sub_8233D048" } +0x8233D0B0 = { name = "rex_sub_8233D0B0" } +0x8233D278 = { name = "rex_sub_8233D278" } +0x8233D2C0 = { name = "rex_sub_8233D2C0" } +0x8233D2D0 = { name = "rex_sub_8233D2D0" } +0x8233D330 = { name = "rex_sub_8233D330" } +0x8233D3B0 = { name = "rex_sub_8233D3B0" } +0x8233D498 = { name = "rex_sub_8233D498" } +0x8233D588 = { name = "rex_sub_8233D588" } +0x8233D8F0 = { name = "rex_sub_8233D8F0" } +0x8233D978 = { name = "rex_sub_8233D978" } +0x8233D9D0 = { name = "rex_sub_8233D9D0" } +0x8233DA28 = { name = "rex_sub_8233DA28" } +0x8233DA80 = { name = "rex_sub_8233DA80" } +0x8233DA88 = { name = "rex_sub_8233DA88" } +0x8233DAF0 = { name = "rex_sub_8233DAF0" } +0x8233DB58 = { name = "rex_sub_8233DB58" } +0x8233DC08 = { name = "rex_sub_8233DC08" } +0x8233DCB0 = { name = "rex_sub_8233DCB0" } +0x8233DCF8 = { name = "rex_sub_8233DCF8" } +0x8233DD60 = { name = "rex_sub_8233DD60" } +0x8233DDC8 = { name = "rex_sub_8233DDC8" } +0x8233DE08 = { name = "rex_sub_8233DE08" } +0x8233DE48 = { name = "rex_sub_8233DE48" } +0x8233DEA8 = { name = "rex_sub_8233DEA8" } +0x8233DEC8 = { name = "rex_sub_8233DEC8" } +0x8233DF20 = { name = "rex_sub_8233DF20" } +0x8233DF58 = { name = "rex_sub_8233DF58" } +0x8233DF90 = { name = "rex_sub_8233DF90" } +0x8233DFD8 = { name = "rex_sub_8233DFD8" } +0x8233E0A8 = { name = "rex_sub_8233E0A8" } +0x8233E110 = { name = "rex_sub_8233E110" } +0x8233E1C8 = { name = "rex_sub_8233E1C8" } +0x8233E1D8 = { name = "rex_sub_8233E1D8" } +0x8233E240 = { name = "rex_sub_8233E240" } +0x8233E2A8 = { name = "rex_sub_8233E2A8" } +0x8233E2F0 = { name = "rex_sub_8233E2F0" } +0x8233E340 = { name = "rex_sub_8233E340" } +0x8233E3F0 = { name = "rex_sub_8233E3F0" } +0x8233E478 = { name = "rex_sub_8233E478" } +0x8233E4B0 = { name = "rex_sub_8233E4B0" } +0x8233E4F8 = { name = "rex_sub_8233E4F8" } +0x8233E530 = { name = "rex_sub_8233E530" } +0x8233E590 = { name = "rex_sub_8233E590" } +0x8233E638 = { name = "rex_sub_8233E638" } +0x8233E6C8 = { name = "rex_sub_8233E6C8" } +0x8233E708 = { name = "rex_sub_8233E708" } +0x8233E710 = { name = "rex_sub_8233E710" } +0x8233E788 = { name = "rex_sub_8233E788" } +0x8233E7C0 = { name = "rex_sub_8233E7C0" } +0x8233E828 = { name = "rex_sub_8233E828" } +0x8233E8C0 = { name = "rex_sub_8233E8C0" } +0x8233E958 = { name = "rex_sub_8233E958" } +0x8233E9E0 = { name = "rex_sub_8233E9E0" } +0x8233EA60 = { name = "rex_sub_8233EA60" } +0x8233EA80 = { name = "rex_sub_8233EA80" } +0x8233EAA0 = { name = "rex_sub_8233EAA0" } +0x8233EB30 = { name = "rex_sub_8233EB30" } +0x8233EB38 = { name = "rex_sub_8233EB38" } +0x8233EBB8 = { name = "rex_sub_8233EBB8" } +0x8233EC10 = { name = "rex_sub_8233EC10" } +0x8233ECE0 = { name = "rex_sub_8233ECE0" } +0x8233ED18 = { name = "rex_sub_8233ED18" } +0x8233ED60 = { name = "rex_sub_8233ED60" } +0x8233EDC0 = { name = "rex_sub_8233EDC0" } +0x8233EE00 = { name = "rex_sub_8233EE00" } +0x8233EE08 = { name = "rex_sub_8233EE08" } +0x8233EE40 = { name = "rex_sub_8233EE40" } +0x8233F9C0 = { name = "rex_sub_8233F9C0" } +0x8233FA98 = { name = "rex_sub_8233FA98" } +0x8233FB98 = { name = "rex_sub_8233FB98" } +0x8233FC48 = { name = "rex_sub_8233FC48" } +0x8233FCA0 = { name = "rex_sub_8233FCA0" } +0x8233FCD8 = { name = "rex_sub_8233FCD8" } +0x8233FD00 = { name = "rex_sub_8233FD00" } +0x8233FD40 = { name = "rex_sub_8233FD40" } +0x8233FD80 = { name = "rex_sub_8233FD80" } +0x8233FE10 = { name = "rex_sub_8233FE10" } +0x8233FEB0 = { name = "rex_sub_8233FEB0" } +0x82340028 = { name = "rex_sub_82340028" } +0x82340038 = { name = "rex_sub_82340038" } +0x82340088 = { name = "rex_sub_82340088" } +0x82340108 = { name = "rex_sub_82340108" } +0x82340150 = { name = "rex_sub_82340150" } +0x823402E8 = { name = "rex_sub_823402E8" } +0x82340380 = { name = "rex_sub_82340380" } +0x82340480 = { name = "rex_sub_82340480" } +0x82340518 = { name = "rex_sub_82340518" } +0x82340570 = { name = "rex_sub_82340570" } +0x823405C0 = { name = "rex_sub_823405C0" } +0x823405F8 = { name = "rex_sub_823405F8" } +0x82340650 = { name = "rex_sub_82340650" } +0x82340698 = { name = "rex_sub_82340698" } +0x82340720 = { name = "rex_sub_82340720" } +0x82340770 = { name = "rex_sub_82340770" } +0x82340778 = { name = "rex_sub_82340778" } +0x82340D38 = { name = "rex_sub_82340D38" } +0x82340DB8 = { name = "rex_sub_82340DB8" } +0x82340E08 = { name = "rex_sub_82340E08" } +0x82340EC0 = { name = "rex_sub_82340EC0" } +0x82340FC8 = { name = "rex_sub_82340FC8" } +0x82341238 = { name = "rex_sub_82341238" } +0x823412D8 = { name = "rex_sub_823412D8" } +0x82341378 = { name = "rex_sub_82341378" } +0x82341400 = { name = "rex_sub_82341400" } +0x823414B8 = { name = "rex_sub_823414B8" } +0x82341558 = { name = "rex_sub_82341558" } +0x823415C8 = { name = "rex_sub_823415C8" } +0x82341648 = { name = "rex_sub_82341648" } +0x82341660 = { name = "rex_sub_82341660" } +0x82341678 = { name = "rex_sub_82341678" } +0x82341688 = { name = "rex_sub_82341688" } +0x82341718 = { name = "rex_sub_82341718" } +0x823417E8 = { name = "rex_sub_823417E8" } +0x82341840 = { name = "rex_sub_82341840" } +0x82341880 = { name = "rex_sub_82341880" } +0x823418C0 = { name = "rex_sub_823418C0" } +0x82341900 = { name = "rex_sub_82341900" } +0x823419A8 = { name = "rex_sub_823419A8" } +0x82341A30 = { name = "rex_sub_82341A30" } +0x82341A58 = { name = "rex_sub_82341A58" } +0x82341AF8 = { name = "rex_sub_82341AF8" } +0x82341B58 = { name = "rex_sub_82341B58" } +0x82341B60 = { name = "rex_sub_82341B60" } +0x82341BA0 = { name = "rex_sub_82341BA0" } +0x82341BF8 = { name = "rex_sub_82341BF8" } +0x82341C50 = { name = "rex_sub_82341C50" } +0x82341CA8 = { name = "rex_sub_82341CA8" } +0x82341D00 = { name = "rex_sub_82341D00" } +0x82341DA0 = { name = "rex_sub_82341DA0" } +0x82341E30 = { name = "rex_sub_82341E30" } +0x82341E88 = { name = "rex_sub_82341E88" } +0x82341ED0 = { name = "rex_sub_82341ED0" } +0x82341F70 = { name = "rex_sub_82341F70" } +0x82341FD8 = { name = "rex_sub_82341FD8" } +0x82342050 = { name = "rex_sub_82342050" } +0x823420E0 = { name = "rex_sub_823420E0" } +0x82342170 = { name = "rex_sub_82342170" } +0x823421E8 = { name = "rex_sub_823421E8" } +0x82342260 = { name = "rex_sub_82342260" } +0x823422C8 = { name = "rex_sub_823422C8" } +0x82342340 = { name = "rex_sub_82342340" } +0x82342450 = { name = "rex_sub_82342450" } +0x82342500 = { name = "rex_sub_82342500" } +0x823425A8 = { name = "rex_sub_823425A8" } +0x823426D0 = { name = "rex_sub_823426D0" } +0x82342808 = { name = "rex_sub_82342808" } +0x82342888 = { name = "rex_sub_82342888" } +0x823428C8 = { name = "rex_sub_823428C8" } +0x82342908 = { name = "rex_sub_82342908" } +0x82342958 = { name = "rex_sub_82342958" } +0x82342960 = { name = "rex_sub_82342960" } +0x82342968 = { name = "rex_sub_82342968" } +0x823429E0 = { name = "rex_sub_823429E0" } +0x82342A30 = { name = "rex_sub_82342A30" } +0x82342AD8 = { name = "rex_sub_82342AD8" } +0x82342C10 = { name = "rex_sub_82342C10" } +0x82342C60 = { name = "rex_sub_82342C60" } +0x82342CB8 = { name = "rex_sub_82342CB8" } +0x82342D28 = { name = "rex_sub_82342D28" } +0x82342D30 = { name = "rex_sub_82342D30" } +0x82342D80 = { name = "rex_sub_82342D80" } +0x82342DC0 = { name = "rex_sub_82342DC0" } +0x82342E18 = { name = "rex_sub_82342E18" } +0x82342E60 = { name = "rex_sub_82342E60" } +0x82342EB0 = { name = "rex_sub_82342EB0" } +0x82342EF0 = { name = "rex_sub_82342EF0" } +0x82342F48 = { name = "rex_sub_82342F48" } +0x82343018 = { name = "rex_sub_82343018" } +0x82343088 = { name = "rex_sub_82343088" } +0x823430F8 = { name = "rex_sub_823430F8" } +0x823431B8 = { name = "rex_sub_823431B8" } +0x82343270 = { name = "rex_sub_82343270" } +0x82343300 = { name = "rex_sub_82343300" } +0x82343360 = { name = "rex_sub_82343360" } +0x823433A8 = { name = "rex_sub_823433A8" } +0x823433F8 = { name = "rex_sub_823433F8" } +0x82343450 = { name = "rex_sub_82343450" } +0x82343498 = { name = "rex_sub_82343498" } +0x823434E8 = { name = "rex_sub_823434E8" } +0x823435A0 = { name = "rex_sub_823435A0" } +0x823435D8 = { name = "rex_sub_823435D8" } +0x82343600 = { name = "rex_sub_82343600" } +0x82343640 = { name = "rex_sub_82343640" } +0x82343728 = { name = "rex_sub_82343728" } +0x82343778 = { name = "rex_sub_82343778" } +0x823437E0 = { name = "rex_sub_823437E0" } +0x82343830 = { name = "rex_sub_82343830" } +0x82343880 = { name = "rex_sub_82343880" } +0x823438E8 = { name = "rex_sub_823438E8" } +0x82343938 = { name = "rex_sub_82343938" } +0x82343978 = { name = "rex_sub_82343978" } +0x82343A10 = { name = "rex_sub_82343A10" } +0x82343A48 = { name = "rex_sub_82343A48" } +0x82343A58 = { name = "rex_sub_82343A58" } +0x82343A80 = { name = "rex_sub_82343A80" } +0x82343A98 = { name = "rex_sub_82343A98" } +0x82343AF0 = { name = "rex_sub_82343AF0" } +0x82343AF8 = { name = "rex_sub_82343AF8" } +0x82343B28 = { name = "rex_sub_82343B28" } +0x82343C18 = { name = "rex_sub_82343C18" } +0x82343C20 = { name = "rex_sub_82343C20" } +0x82343C28 = { name = "rex_sub_82343C28" } +0x82343C38 = { name = "rex_sub_82343C38" } +0x82343C48 = { name = "rex_sub_82343C48" } +0x82343C58 = { name = "rex_sub_82343C58" } +0x82343C68 = { name = "rex_sub_82343C68" } +0x82343C78 = { name = "rex_sub_82343C78" } +0x82343C80 = { name = "rex_sub_82343C80" } +0x82343C98 = { name = "rex_sub_82343C98" } +0x82343CA8 = { name = "rex_sub_82343CA8" } +0x82343CB8 = { name = "rex_sub_82343CB8" } +0x82343CC8 = { name = "rex_sub_82343CC8" } +0x82343D38 = { name = "rex_sub_82343D38" } +0x82343DC0 = { name = "rex_sub_82343DC0" } +0x82343E18 = { name = "rex_sub_82343E18" } +0x82343F20 = { name = "rex_sub_82343F20" } +0x82343FA0 = { name = "rex_sub_82343FA0" } +0x82344058 = { name = "rex_sub_82344058" } +0x82344150 = { name = "rex_sub_82344150" } +0x82344248 = { name = "rex_sub_82344248" } +0x82344270 = { name = "rex_sub_82344270" } +0x823442C0 = { name = "rex_sub_823442C0" } +0x82344328 = { name = "rex_sub_82344328" } +0x82344390 = { name = "rex_sub_82344390" } +0x82344400 = { name = "rex_sub_82344400" } +0x82344480 = { name = "rex_sub_82344480" } +0x82344508 = { name = "rex_sub_82344508" } +0x82344570 = { name = "rex_sub_82344570" } +0x823445F0 = { name = "rex_sub_823445F0" } +0x82344658 = { name = "rex_sub_82344658" } +0x823446D8 = { name = "rex_sub_823446D8" } +0x82344740 = { name = "rex_sub_82344740" } +0x823447A8 = { name = "rex_sub_823447A8" } +0x82344810 = { name = "rex_sub_82344810" } +0x82344878 = { name = "rex_sub_82344878" } +0x823449D0 = { name = "rex_sub_823449D0" } +0x82344A40 = { name = "rex_sub_82344A40" } +0x82344AD8 = { name = "rex_sub_82344AD8" } +0x82344B60 = { name = "rex_sub_82344B60" } +0x82344BF8 = { name = "rex_sub_82344BF8" } +0x82344C70 = { name = "rex_sub_82344C70" } +0x82344CD8 = { name = "rex_sub_82344CD8" } +0x82344F08 = { name = "rex_sub_82344F08" } +0x82344FA8 = { name = "rex_sub_82344FA8" } +0x82345028 = { name = "rex_sub_82345028" } +0x823450D0 = { name = "rex_sub_823450D0" } +0x82345190 = { name = "rex_sub_82345190" } +0x82345200 = { name = "rex_sub_82345200" } +0x82345228 = { name = "rex_sub_82345228" } +0x82345250 = { name = "rex_sub_82345250" } +0x82345260 = { name = "rex_sub_82345260" } +0x823452A8 = { name = "rex_sub_823452A8" } +0x82345300 = { name = "rex_sub_82345300" } +0x82345348 = { name = "rex_sub_82345348" } +0x82345398 = { name = "rex_sub_82345398" } +0x823453E8 = { name = "rex_sub_823453E8" } +0x82345428 = { name = "rex_sub_82345428" } +0x823454A8 = { name = "rex_sub_823454A8" } +0x82345528 = { name = "rex_sub_82345528" } +0x82345550 = { name = "rex_sub_82345550" } +0x823455D8 = { name = "rex_sub_823455D8" } +0x82345608 = { name = "rex_sub_82345608" } +0x823456C8 = { name = "rex_sub_823456C8" } +0x82345738 = { name = "rex_sub_82345738" } +0x823457E8 = { name = "rex_sub_823457E8" } +0x82345860 = { name = "rex_sub_82345860" } +0x82345988 = { name = "rex_sub_82345988" } +0x82345A00 = { name = "rex_sub_82345A00" } +0x82345AB8 = { name = "rex_sub_82345AB8" } +0x82345B28 = { name = "rex_sub_82345B28" } +0x82345BE8 = { name = "rex_sub_82345BE8" } +0x82345C48 = { name = "rex_sub_82345C48" } +0x82345C88 = { name = "rex_sub_82345C88" } +0x82345CE0 = { name = "rex_sub_82345CE0" } +0x82345D38 = { name = "rex_sub_82345D38" } +0x82345D80 = { name = "rex_sub_82345D80" } +0x82345D90 = { name = "rex_sub_82345D90" } +0x82345DE0 = { name = "rex_sub_82345DE0" } +0x82345E48 = { name = "rex_sub_82345E48" } +0x82345E80 = { name = "rex_sub_82345E80" } +0x82345EE8 = { name = "rex_sub_82345EE8" } +0x82345F70 = { name = "rex_sub_82345F70" } +0x82345FB8 = { name = "rex_sub_82345FB8" } +0x82345FC8 = { name = "rex_sub_82345FC8" } +0x82346038 = { name = "rex_sub_82346038" } +0x82346088 = { name = "rex_sub_82346088" } +0x823461C8 = { name = "rex_sub_823461C8" } +0x82346248 = { name = "rex_sub_82346248" } +0x823462E0 = { name = "rex_sub_823462E0" } +0x82346340 = { name = "rex_sub_82346340" } +0x82346390 = { name = "rex_sub_82346390" } +0x82346428 = { name = "rex_sub_82346428" } +0x82346548 = { name = "rex_sub_82346548" } +0x823465C8 = { name = "rex_sub_823465C8" } +0x82346648 = { name = "rex_sub_82346648" } +0x823466C8 = { name = "rex_sub_823466C8" } +0x82346858 = { name = "rex_sub_82346858" } +0x82346868 = { name = "rex_sub_82346868" } +0x823468B0 = { name = "rex_sub_823468B0" } +0x82346918 = { name = "rex_sub_82346918" } +0x82346940 = { name = "rex_sub_82346940" } +0x823469B0 = { name = "rex_sub_823469B0" } +0x82346A10 = { name = "rex_sub_82346A10" } +0x82346A18 = { name = "rex_sub_82346A18" } +0x82346AA0 = { name = "rex_sub_82346AA0" } +0x82346AB8 = { name = "rex_sub_82346AB8" } +0x82346AE0 = { name = "rex_sub_82346AE0" } +0x82346AF0 = { name = "rex_sub_82346AF0" } +0x82346B10 = { name = "rex_sub_82346B10" } +0x82346B48 = { name = "rex_sub_82346B48" } +0x82346C00 = { name = "rex_sub_82346C00" } +0x82346C70 = { name = "rex_sub_82346C70" } +0x82346CD8 = { name = "rex_sub_82346CD8" } +0x82346D68 = { name = "rex_sub_82346D68" } +0x82346F68 = { name = "rex_sub_82346F68" } +0x82347128 = { name = "rex_sub_82347128" } +0x82347148 = { name = "rex_sub_82347148" } +0x82347158 = { name = "rex_sub_82347158" } +0x82347188 = { name = "rex_sub_82347188" } +0x823471A0 = { name = "rex_sub_823471A0" } +0x823471E8 = { name = "rex_sub_823471E8" } +0x82347260 = { name = "rex_sub_82347260" } +0x82347270 = { name = "rex_sub_82347270" } +0x823472E0 = { name = "rex_sub_823472E0" } +0x82347340 = { name = "rex_sub_82347340" } +0x82347398 = { name = "rex_sub_82347398" } +0x823473F8 = { name = "rex_sub_823473F8" } +0x82347450 = { name = "rex_sub_82347450" } +0x82347470 = { name = "rex_sub_82347470" } +0x823474C8 = { name = "rex_sub_823474C8" } +0x82347598 = { name = "rex_sub_82347598" } +0x82347648 = { name = "rex_sub_82347648" } +0x82347718 = { name = "rex_sub_82347718" } +0x823477F8 = { name = "rex_sub_823477F8" } +0x82347888 = { name = "rex_sub_82347888" } +0x823478D8 = { name = "rex_sub_823478D8" } +0x82347998 = { name = "rex_sub_82347998" } +0x82347A98 = { name = "rex_sub_82347A98" } +0x82347BE0 = { name = "rex_sub_82347BE0" } +0x82347D20 = { name = "rex_sub_82347D20" } +0x82347D78 = { name = "rex_sub_82347D78" } +0x82347DE0 = { name = "rex_sub_82347DE0" } +0x82347E38 = { name = "rex_sub_82347E38" } +0x82347EC8 = { name = "rex_sub_82347EC8" } +0x82348100 = { name = "rex_sub_82348100" } +0x82348200 = { name = "rex_sub_82348200" } +0x823483E8 = { name = "rex_sub_823483E8" } +0x823485B0 = { name = "rex_sub_823485B0" } +0x823485F0 = { name = "rex_sub_823485F0" } +0x823486C8 = { name = "rex_sub_823486C8" } +0x82348720 = { name = "rex_sub_82348720" } +0x82348778 = { name = "rex_sub_82348778" } +0x82348898 = { name = "rex_sub_82348898" } +0x82348900 = { name = "rex_sub_82348900" } +0x82348988 = { name = "rex_sub_82348988" } +0x82348A48 = { name = "rex_sub_82348A48" } +0x82348B48 = { name = "rex_sub_82348B48" } +0x82348C90 = { name = "rex_sub_82348C90" } +0x82348E08 = { name = "rex_sub_82348E08" } +0x82348E90 = { name = "rex_sub_82348E90" } +0x82349050 = { name = "rex_sub_82349050" } +0x82349158 = { name = "rex_sub_82349158" } +0x823491B0 = { name = "rex_sub_823491B0" } +0x82349200 = { name = "rex_sub_82349200" } +0x82349250 = { name = "rex_sub_82349250" } +0x823492E8 = { name = "rex_sub_823492E8" } +0x82349328 = { name = "rex_sub_82349328" } +0x823493B0 = { name = "rex_sub_823493B0" } +0x82349440 = { name = "rex_sub_82349440" } +0x823494E0 = { name = "rex_sub_823494E0" } +0x82349548 = { name = "rex_sub_82349548" } +0x82349550 = { name = "rex_sub_82349550" } +0x82349588 = { name = "rex_sub_82349588" } +0x82349590 = { name = "rex_sub_82349590" } +0x823495E8 = { name = "rex_sub_823495E8" } +0x82349680 = { name = "rex_sub_82349680" } +0x82349718 = { name = "rex_sub_82349718" } +0x82349730 = { name = "rex_sub_82349730" } +0x82349748 = { name = "rex_sub_82349748" } +0x82349750 = { name = "rex_sub_82349750" } +0x82349788 = { name = "rex_sub_82349788" } +0x823497E0 = { name = "rex_sub_823497E0" } +0x823498E8 = { name = "rex_sub_823498E8" } +0x823499F8 = { name = "rex_sub_823499F8" } +0x82349A10 = { name = "rex_sub_82349A10" } +0x82349A28 = { name = "rex_sub_82349A28" } +0x82349A68 = { name = "rex_sub_82349A68" } +0x82349A90 = { name = "rex_sub_82349A90" } +0x82349AC0 = { name = "rex_sub_82349AC0" } +0x82349B60 = { name = "rex_sub_82349B60" } +0x82349BC8 = { name = "rex_sub_82349BC8" } +0x82349C28 = { name = "rex_sub_82349C28" } +0x82349E28 = { name = "rex_sub_82349E28" } +0x8234A0D8 = { name = "rex_sub_8234A0D8" } +0x8234A170 = { name = "rex_sub_8234A170" } +0x8234A360 = { name = "rex_sub_8234A360" } +0x8234A410 = { name = "rex_sub_8234A410" } +0x8234A528 = { name = "rex_sub_8234A528" } +0x8234A578 = { name = "rex_sub_8234A578" } +0x8234A5C8 = { name = "rex_sub_8234A5C8" } +0x8234A610 = { name = "rex_sub_8234A610" } +0x8234A670 = { name = "rex_sub_8234A670" } +0x8234A678 = { name = "rex_sub_8234A678" } +0x8234A6B8 = { name = "rex_sub_8234A6B8" } +0x8234A770 = { name = "rex_sub_8234A770" } +0x8234A778 = { name = "rex_sub_8234A778" } +0x8234A7D0 = { name = "rex_sub_8234A7D0" } +0x8234A820 = { name = "rex_sub_8234A820" } +0x8234A868 = { name = "rex_sub_8234A868" } +0x8234A8E0 = { name = "rex_sub_8234A8E0" } +0x8234A9F0 = { name = "rex_sub_8234A9F0" } +0x8234AAC0 = { name = "rex_sub_8234AAC0" } +0x8234AAC8 = { name = "rex_sub_8234AAC8" } +0x8234AAD0 = { name = "rex_sub_8234AAD0" } +0x8234AAD8 = { name = "rex_sub_8234AAD8" } +0x8234AAE0 = { name = "rex_sub_8234AAE0" } +0x8234AB08 = { name = "rex_sub_8234AB08" } +0x8234AB20 = { name = "rex_sub_8234AB20" } +0x8234AB30 = { name = "rex_sub_8234AB30" } +0x8234AB38 = { name = "rex_sub_8234AB38" } +0x8234AB58 = { name = "rex_sub_8234AB58" } +0x8234AC70 = { name = "rex_sub_8234AC70" } +0x8234ACC0 = { name = "rex_sub_8234ACC0" } +0x8234AD08 = { name = "rex_sub_8234AD08" } +0x8234AD68 = { name = "rex_sub_8234AD68" } +0x8234ADA8 = { name = "rex_sub_8234ADA8" } +0x8234AE10 = { name = "rex_sub_8234AE10" } +0x8234AED8 = { name = "rex_sub_8234AED8" } +0x8234AF08 = { name = "rex_sub_8234AF08" } +0x8234AFD0 = { name = "rex_sub_8234AFD0" } +0x8234B010 = { name = "rex_sub_8234B010" } +0x8234B078 = { name = "rex_sub_8234B078" } +0x8234B0E0 = { name = "rex_sub_8234B0E0" } +0x8234B168 = { name = "rex_sub_8234B168" } +0x8234B1C8 = { name = "rex_sub_8234B1C8" } +0x8234B228 = { name = "rex_sub_8234B228" } +0x8234B2A0 = { name = "rex_sub_8234B2A0" } +0x8234B318 = { name = "rex_sub_8234B318" } +0x8234B3A8 = { name = "rex_sub_8234B3A8" } +0x8234B438 = { name = "rex_sub_8234B438" } +0x8234B498 = { name = "rex_sub_8234B498" } +0x8234B4F8 = { name = "rex_sub_8234B4F8" } +0x8234B558 = { name = "rex_sub_8234B558" } +0x8234B5B8 = { name = "rex_sub_8234B5B8" } +0x8234B5F8 = { name = "rex_sub_8234B5F8" } +0x8234B640 = { name = "rex_sub_8234B640" } +0x8234B698 = { name = "rex_sub_8234B698" } +0x8234B730 = { name = "rex_sub_8234B730" } +0x8234B738 = { name = "rex_sub_8234B738" } +0x8234B790 = { name = "rex_sub_8234B790" } +0x8234B808 = { name = "rex_sub_8234B808" } +0x8234B868 = { name = "rex_sub_8234B868" } +0x8234B8C0 = { name = "rex_sub_8234B8C0" } +0x8234B930 = { name = "rex_sub_8234B930" } +0x8234B968 = { name = "rex_sub_8234B968" } +0x8234B998 = { name = "rex_sub_8234B998" } +0x8234B9A0 = { name = "rex_sub_8234B9A0" } +0x8234B9A8 = { name = "rex_sub_8234B9A8" } +0x8234BB10 = { name = "rex_sub_8234BB10" } +0x8234BC40 = { name = "rex_sub_8234BC40" } +0x8234BC88 = { name = "rex_sub_8234BC88" } +0x8234BCD0 = { name = "rex_sub_8234BCD0" } +0x8234BD18 = { name = "rex_sub_8234BD18" } +0x8234BD30 = { name = "rex_sub_8234BD30" } +0x8234BD90 = { name = "rex_sub_8234BD90" } +0x8234BED8 = { name = "rex_sub_8234BED8" } +0x8234BF58 = { name = "rex_sub_8234BF58" } +0x8234C050 = { name = "rex_sub_8234C050" } +0x8234C058 = { name = "rex_sub_8234C058" } +0x8234C120 = { name = "rex_sub_8234C120" } +0x8234C180 = { name = "rex_sub_8234C180" } +0x8234C210 = { name = "rex_sub_8234C210" } +0x8234C308 = { name = "rex_sub_8234C308" } +0x8234C430 = { name = "rex_sub_8234C430" } +0x8234C448 = { name = "rex_sub_8234C448" } +0x8234C488 = { name = "rex_sub_8234C488" } +0x8234C4A0 = { name = "rex_sub_8234C4A0" } +0x8234C4B8 = { name = "rex_sub_8234C4B8" } +0x8234C508 = { name = "rex_sub_8234C508" } +0x8234C598 = { name = "rex_sub_8234C598" } +0x8234C5E0 = { name = "rex_sub_8234C5E0" } +0x8234C6B0 = { name = "rex_sub_8234C6B0" } +0x8234C708 = { name = "rex_sub_8234C708" } +0x8234C710 = { name = "rex_sub_8234C710" } +0x8234C768 = { name = "rex_sub_8234C768" } +0x8234C7C8 = { name = "rex_sub_8234C7C8" } +0x8234C848 = { name = "rex_sub_8234C848" } +0x8234C8F8 = { name = "rex_sub_8234C8F8" } +0x8234C9F0 = { name = "rex_sub_8234C9F0" } +0x8234CA20 = { name = "rex_sub_8234CA20" } +0x8234CA38 = { name = "rex_sub_8234CA38" } +0x8234CA68 = { name = "rex_sub_8234CA68" } +0x8234CB38 = { name = "rex_sub_8234CB38" } +0x8234CB90 = { name = "rex_sub_8234CB90" } +0x8234CC38 = { name = "rex_sub_8234CC38" } +0x8234CC90 = { name = "rex_sub_8234CC90" } +0x8234CD90 = { name = "rex_sub_8234CD90" } +0x8234CDE8 = { name = "rex_sub_8234CDE8" } +0x8234CDF8 = { name = "rex_sub_8234CDF8" } +0x8234CE40 = { name = "rex_sub_8234CE40" } +0x8234CEB8 = { name = "rex_sub_8234CEB8" } +0x8234CF40 = { name = "rex_sub_8234CF40" } +0x8234CFD8 = { name = "rex_sub_8234CFD8" } +0x8234D040 = { name = "rex_sub_8234D040" } +0x8234D058 = { name = "rex_sub_8234D058" } +0x8234D068 = { name = "rex_sub_8234D068" } +0x8234D0F8 = { name = "rex_sub_8234D0F8" } +0x8234D230 = { name = "rex_sub_8234D230" } +0x8234D408 = { name = "rex_sub_8234D408" } +0x8234D4D8 = { name = "rex_sub_8234D4D8" } +0x8234D550 = { name = "rex_sub_8234D550" } +0x8234D630 = { name = "rex_sub_8234D630" } +0x8234D710 = { name = "rex_sub_8234D710" } +0x8234D778 = { name = "rex_sub_8234D778" } +0x8234D820 = { name = "rex_sub_8234D820" } +0x8234D878 = { name = "rex_sub_8234D878" } +0x8234D928 = { name = "rex_sub_8234D928" } +0x8234D960 = { name = "rex_sub_8234D960" } +0x8234D9A0 = { name = "rex_sub_8234D9A0" } +0x8234D9F0 = { name = "rex_sub_8234D9F0" } +0x8234DA90 = { name = "rex_sub_8234DA90" } +0x8234DAD8 = { name = "rex_sub_8234DAD8" } +0x8234DB68 = { name = "rex_sub_8234DB68" } +0x8234DE70 = { name = "rex_sub_8234DE70" } +0x8234DED8 = { name = "rex_sub_8234DED8" } +0x8234DF60 = { name = "rex_sub_8234DF60" } +0x8234E120 = { name = "rex_sub_8234E120" } +0x8234E368 = { name = "rex_sub_8234E368" } +0x8234E370 = { name = "rex_sub_8234E370" } +0x8234E398 = { name = "rex_sub_8234E398" } +0x8234E3D0 = { name = "rex_sub_8234E3D0" } +0x8234E400 = { name = "rex_sub_8234E400" } +0x8234E510 = { name = "rex_sub_8234E510" } +0x8234E648 = { name = "rex_sub_8234E648" } +0x8234E658 = { name = "rex_sub_8234E658" } +0x8234E6A0 = { name = "rex_sub_8234E6A0" } +0x8234E6B8 = { name = "rex_sub_8234E6B8" } +0x8234E700 = { name = "rex_sub_8234E700" } +0x8234E748 = { name = "rex_sub_8234E748" } +0x8234E898 = { name = "rex_sub_8234E898" } +0x8234E908 = { name = "rex_sub_8234E908" } +0x8234E9A0 = { name = "rex_sub_8234E9A0" } +0x8234EA20 = { name = "rex_sub_8234EA20" } +0x8234EA68 = { name = "rex_sub_8234EA68" } +0x8234EAB0 = { name = "rex_sub_8234EAB0" } +0x8234EB40 = { name = "rex_sub_8234EB40" } +0x8234EBD8 = { name = "rex_sub_8234EBD8" } +0x8234EC50 = { name = "rex_sub_8234EC50" } +0x8234ED88 = { name = "rex_sub_8234ED88" } +0x8234EE10 = { name = "rex_sub_8234EE10" } +0x8234EE98 = { name = "rex_sub_8234EE98" } +0x8234EF48 = { name = "rex_sub_8234EF48" } +0x8234EF60 = { name = "rex_sub_8234EF60" } +0x8234F128 = { name = "rex_sub_8234F128" } +0x8234F190 = { name = "rex_sub_8234F190" } +0x8234F1C0 = { name = "rex_sub_8234F1C0" } +0x8234F1F0 = { name = "rex_sub_8234F1F0" } +0x8234F288 = { name = "rex_sub_8234F288" } +0x8234F2B8 = { name = "rex_sub_8234F2B8" } +0x8234F2C8 = { name = "rex_sub_8234F2C8" } +0x8234F558 = { name = "rex_sub_8234F558" } +0x8234F610 = { name = "rex_sub_8234F610" } +0x8234F658 = { name = "rex_sub_8234F658" } +0x8234F6A0 = { name = "rex_sub_8234F6A0" } +0x8234F8A8 = { name = "rex_sub_8234F8A8" } +0x8234F8F8 = { name = "rex_sub_8234F8F8" } +0x8234F9A8 = { name = "rex_sub_8234F9A8" } +0x8234FA38 = { name = "rex_sub_8234FA38" } +0x8234FAA8 = { name = "rex_sub_8234FAA8" } +0x8234FB18 = { name = "rex_sub_8234FB18" } +0x8234FB78 = { name = "rex_sub_8234FB78" } +0x8234FBE8 = { name = "rex_sub_8234FBE8" } +0x8234FC38 = { name = "rex_sub_8234FC38" } +0x8234FDA8 = { name = "rex_sub_8234FDA8" } +0x8234FE38 = { name = "rex_sub_8234FE38" } +0x8234FE88 = { name = "rex_sub_8234FE88" } +0x8234FEE0 = { name = "rex_sub_8234FEE0" } +0x8234FF30 = { name = "rex_sub_8234FF30" } +0x8234FF80 = { name = "rex_sub_8234FF80" } +0x82350018 = { name = "rex_sub_82350018" } +0x823500B0 = { name = "rex_sub_823500B0" } +0x82350118 = { name = "rex_sub_82350118" } +0x82350160 = { name = "rex_sub_82350160" } +0x823501E8 = { name = "rex_sub_823501E8" } +0x82350298 = { name = "rex_sub_82350298" } +0x82350330 = { name = "rex_sub_82350330" } +0x823503F0 = { name = "rex_sub_823503F0" } +0x82350448 = { name = "rex_sub_82350448" } +0x82350488 = { name = "rex_sub_82350488" } +0x823505A0 = { name = "rex_sub_823505A0" } +0x82350628 = { name = "rex_sub_82350628" } +0x823506C0 = { name = "rex_sub_823506C0" } +0x82350730 = { name = "rex_sub_82350730" } +0x82350770 = { name = "rex_sub_82350770" } +0x82350778 = { name = "rex_sub_82350778" } +0x82350790 = { name = "rex_sub_82350790" } +0x823507E0 = { name = "rex_sub_823507E0" } +0x82350830 = { name = "rex_sub_82350830" } +0x823509D8 = { name = "rex_sub_823509D8" } +0x82350A48 = { name = "rex_sub_82350A48" } +0x82350B08 = { name = "rex_sub_82350B08" } +0x82350BB8 = { name = "rex_sub_82350BB8" } +0x82350C48 = { name = "rex_sub_82350C48" } +0x82350D98 = { name = "rex_sub_82350D98" } +0x82350E30 = { name = "rex_sub_82350E30" } +0x82350EB0 = { name = "rex_sub_82350EB0" } +0x82350F50 = { name = "rex_sub_82350F50" } +0x82350FC8 = { name = "rex_sub_82350FC8" } +0x82351098 = { name = "rex_sub_82351098" } +0x823510E0 = { name = "rex_sub_823510E0" } +0x82351168 = { name = "rex_sub_82351168" } +0x82351310 = { name = "rex_sub_82351310" } +0x82351368 = { name = "rex_sub_82351368" } +0x82351420 = { name = "rex_sub_82351420" } +0x823514C0 = { name = "rex_sub_823514C0" } +0x82351550 = { name = "rex_sub_82351550" } +0x823515B8 = { name = "rex_sub_823515B8" } +0x82351658 = { name = "rex_sub_82351658" } +0x823516F8 = { name = "rex_sub_823516F8" } +0x82351798 = { name = "rex_sub_82351798" } +0x823517F0 = { name = "rex_sub_823517F0" } +0x82351908 = { name = "rex_sub_82351908" } +0x82351A88 = { name = "rex_sub_82351A88" } +0x82351B20 = { name = "rex_sub_82351B20" } +0x82351BC0 = { name = "rex_sub_82351BC0" } +0x82351DA0 = { name = "rex_sub_82351DA0" } +0x82351E48 = { name = "rex_sub_82351E48" } +0x82351EB0 = { name = "rex_sub_82351EB0" } +0x82351EC8 = { name = "rex_sub_82351EC8" } +0x82351F50 = { name = "rex_sub_82351F50" } +0x82351FD8 = { name = "rex_sub_82351FD8" } +0x82352080 = { name = "rex_sub_82352080" } +0x82352138 = { name = "rex_sub_82352138" } +0x82352178 = { name = "rex_sub_82352178" } +0x823521F8 = { name = "rex_sub_823521F8" } +0x823522D0 = { name = "rex_sub_823522D0" } +0x823523A8 = { name = "rex_sub_823523A8" } +0x82352428 = { name = "rex_sub_82352428" } +0x82352490 = { name = "rex_sub_82352490" } +0x82352698 = { name = "rex_sub_82352698" } +0x823526F8 = { name = "rex_sub_823526F8" } +0x82352758 = { name = "rex_sub_82352758" } +0x823527D0 = { name = "rex_sub_823527D0" } +0x82352800 = { name = "rex_sub_82352800" } +0x823528D0 = { name = "rex_sub_823528D0" } +0x82354488 = { name = "rex_sub_82354488" } +0x823545A0 = { name = "rex_sub_823545A0" } +0x82354650 = { name = "rex_sub_82354650" } +0x82354698 = { name = "rex_sub_82354698" } +0x82354738 = { name = "rex_sub_82354738" } +0x823547B0 = { name = "rex_sub_823547B0" } +0x82354818 = { name = "rex_sub_82354818" } +0x82354838 = { name = "rex_sub_82354838" } +0x82354878 = { name = "rex_sub_82354878" } +0x82354930 = { name = "rex_sub_82354930" } +0x823549D0 = { name = "rex_sub_823549D0" } +0x82354A50 = { name = "rex_sub_82354A50" } +0x82354AF8 = { name = "rex_sub_82354AF8" } +0x82354B68 = { name = "rex_sub_82354B68" } +0x82354C08 = { name = "rex_sub_82354C08" } +0x82354DB0 = { name = "rex_sub_82354DB0" } +0x82354E28 = { name = "rex_sub_82354E28" } +0x82354ED0 = { name = "rex_sub_82354ED0" } +0x82354F78 = { name = "rex_sub_82354F78" } +0x82355040 = { name = "rex_sub_82355040" } +0x823550E0 = { name = "rex_sub_823550E0" } +0x82355170 = { name = "rex_sub_82355170" } +0x823551F0 = { name = "rex_sub_823551F0" } +0x82355238 = { name = "rex_sub_82355238" } +0x82355288 = { name = "rex_sub_82355288" } +0x82355320 = { name = "rex_sub_82355320" } +0x823554A8 = { name = "rex_sub_823554A8" } +0x82355560 = { name = "rex_sub_82355560" } +0x82355618 = { name = "rex_sub_82355618" } +0x82355758 = { name = "rex_sub_82355758" } +0x823557B0 = { name = "rex_sub_823557B0" } +0x82355878 = { name = "rex_sub_82355878" } +0x823558F8 = { name = "rex_sub_823558F8" } +0x82355980 = { name = "rex_sub_82355980" } +0x82355B50 = { name = "rex_sub_82355B50" } +0x82355DE0 = { name = "rex_sub_82355DE0" } +0x82355FD0 = { name = "rex_sub_82355FD0" } +0x82356138 = { name = "rex_sub_82356138" } +0x82356260 = { name = "rex_sub_82356260" } +0x82356408 = { name = "rex_sub_82356408" } +0x823564A8 = { name = "rex_sub_823564A8" } +0x82356560 = { name = "rex_sub_82356560" } +0x823565D0 = { name = "rex_sub_823565D0" } +0x82356640 = { name = "rex_sub_82356640" } +0x823567B8 = { name = "rex_sub_823567B8" } +0x82356930 = { name = "rex_sub_82356930" } +0x82356A68 = { name = "rex_sub_82356A68" } +0x82356AE8 = { name = "rex_sub_82356AE8" } +0x82356B90 = { name = "rex_sub_82356B90" } +0x82356BD8 = { name = "rex_sub_82356BD8" } +0x82356C80 = { name = "rex_sub_82356C80" } +0x82356D10 = { name = "rex_sub_82356D10" } +0x82356D68 = { name = "rex_sub_82356D68" } +0x82356E50 = { name = "rex_sub_82356E50" } +0x82356F90 = { name = "rex_sub_82356F90" } +0x82357130 = { name = "rex_sub_82357130" } +0x823575A8 = { name = "rex_sub_823575A8" } +0x82357730 = { name = "rex_sub_82357730" } +0x82357830 = { name = "rex_sub_82357830" } +0x82357C80 = { name = "rex_sub_82357C80" } +0x82357F08 = { name = "rex_sub_82357F08" } +0x82358178 = { name = "rex_sub_82358178" } +0x82358248 = { name = "rex_sub_82358248" } +0x82358480 = { name = "rex_sub_82358480" } +0x823588C8 = { name = "rex_sub_823588C8" } +0x82358D70 = { name = "rex_sub_82358D70" } +0x82359080 = { name = "rex_sub_82359080" } +0x823592D0 = { name = "rex_sub_823592D0" } +0x823594E0 = { name = "rex_sub_823594E0" } +0x82359680 = { name = "rex_sub_82359680" } +0x82359D30 = { name = "rex_sub_82359D30" } +0x82359E58 = { name = "rex_sub_82359E58" } +0x8235A0B8 = { name = "rex_sub_8235A0B8" } +0x8235A700 = { name = "rex_sub_8235A700" } +0x8235A930 = { name = "rex_sub_8235A930" } +0x8235A988 = { name = "rex_sub_8235A988" } +0x8235ABF0 = { name = "rex_sub_8235ABF0" } +0x8235AE60 = { name = "rex_sub_8235AE60" } +0x8235AFD0 = { name = "rex_sub_8235AFD0" } +0x8235B130 = { name = "rex_sub_8235B130" } +0x8235B208 = { name = "rex_sub_8235B208" } +0x8235B540 = { name = "rex_sub_8235B540" } +0x8235B788 = { name = "rex_sub_8235B788" } +0x8235B968 = { name = "rex_sub_8235B968" } +0x8235BA20 = { name = "rex_sub_8235BA20" } +0x8235BAF8 = { name = "rex_sub_8235BAF8" } +0x8235BCA8 = { name = "rex_sub_8235BCA8" } +0x8235C100 = { name = "rex_sub_8235C100" } +0x8235C520 = { name = "rex_sub_8235C520" } +0x8235C808 = { name = "rex_sub_8235C808" } +0x8235C9D0 = { name = "rex_sub_8235C9D0" } +0x8235CB58 = { name = "rex_sub_8235CB58" } +0x8235CCC0 = { name = "rex_sub_8235CCC0" } +0x8235D1F0 = { name = "rex_sub_8235D1F0" } +0x8235D350 = { name = "rex_sub_8235D350" } +0x8235D4B0 = { name = "rex_sub_8235D4B0" } +0x8235D670 = { name = "rex_sub_8235D670" } +0x8235D758 = { name = "rex_sub_8235D758" } +0x8235DB50 = { name = "rex_sub_8235DB50" } +0x8235DD10 = { name = "rex_sub_8235DD10" } +0x8235DDA8 = { name = "rex_sub_8235DDA8" } +0x8235DE18 = { name = "rex_sub_8235DE18" } +0x8235DF20 = { name = "rex_sub_8235DF20" } +0x8235E090 = { name = "rex_sub_8235E090" } +0x8235E1F0 = { name = "rex_sub_8235E1F0" } +0x8235E2C8 = { name = "rex_sub_8235E2C8" } +0x8235E608 = { name = "rex_sub_8235E608" } +0x8235E850 = { name = "rex_sub_8235E850" } +0x8235EA30 = { name = "rex_sub_8235EA30" } +0x8235EAE8 = { name = "rex_sub_8235EAE8" } +0x8235EBC0 = { name = "rex_sub_8235EBC0" } +0x8235ED78 = { name = "rex_sub_8235ED78" } +0x8235F1D0 = { name = "rex_sub_8235F1D0" } +0x8235F5F8 = { name = "rex_sub_8235F5F8" } +0x8235F8E0 = { name = "rex_sub_8235F8E0" } +0x8235FAB0 = { name = "rex_sub_8235FAB0" } +0x8235FC38 = { name = "rex_sub_8235FC38" } +0x8235FDA0 = { name = "rex_sub_8235FDA0" } +0x823602E8 = { name = "rex_sub_823602E8" } +0x82360448 = { name = "rex_sub_82360448" } +0x823605A8 = { name = "rex_sub_823605A8" } +0x82360768 = { name = "rex_sub_82360768" } +0x82360850 = { name = "rex_sub_82360850" } +0x82360C48 = { name = "rex_sub_82360C48" } +0x82360E00 = { name = "rex_sub_82360E00" } +0x82360E98 = { name = "rex_sub_82360E98" } +0x82360F08 = { name = "rex_sub_82360F08" } +0x823611FC = { name = "rex_sub_823611FC" } +0x82361314 = { name = "rex_sub_82361314" } +0x82361370 = { name = "rex_sub_82361370" } +0x823613D8 = { name = "rex_sub_823613D8" } +0x82361438 = { name = "rex_sub_82361438" } +0x82361478 = { name = "rex_sub_82361478" } +0x823615C8 = { name = "rex_sub_823615C8" } +0x82361618 = { name = "rex_sub_82361618" } +0x82361698 = { name = "rex_sub_82361698" } +0x82361728 = { name = "rex_sub_82361728" } +0x82361768 = { name = "rex_sub_82361768" } +0x823618F0 = { name = "rex_sub_823618F0" } +0x823619F0 = { name = "rex_sub_823619F0" } +0x82361AE0 = { name = "rex_sub_82361AE0" } +0x82361CA0 = { name = "rex_sub_82361CA0" } +0x82361D70 = { name = "rex_sub_82361D70" } +0x82362260 = { name = "rex_sub_82362260" } +0x823622E8 = { name = "rex_sub_823622E8" } +0x82362548 = { name = "rex_sub_82362548" } +0x823627A8 = { name = "rex_sub_823627A8" } +0x823629C8 = { name = "rex_sub_823629C8" } +0x82362E38 = { name = "rex_sub_82362E38" } +0x82362E78 = { name = "rex_sub_82362E78" } +0x82362EA8 = { name = "rex_sub_82362EA8" } +0x82362FA8 = { name = "rex_sub_82362FA8" } +0x82363098 = { name = "rex_sub_82363098" } +0x82363100 = { name = "rex_sub_82363100" } +0x82363198 = { name = "rex_sub_82363198" } +0x82363250 = { name = "rex_sub_82363250" } +0x82363328 = { name = "rex_sub_82363328" } +0x82363538 = { name = "rex_sub_82363538" } +0x82363720 = { name = "rex_sub_82363720" } +0x82363788 = { name = "rex_sub_82363788" } +0x82363820 = { name = "rex_sub_82363820" } +0x823638D8 = { name = "rex_sub_823638D8" } +0x823639B0 = { name = "rex_sub_823639B0" } +0x823639B8 = { name = "rex_sub_823639B8" } +0x823639E8 = { name = "rex_sub_823639E8" } +0x82363A28 = { name = "rex_sub_82363A28" } +0x82363A30 = { name = "rex_sub_82363A30" } +0x82363A70 = { name = "rex_sub_82363A70" } +0x82363A78 = { name = "rex_sub_82363A78" } +0x82363AD0 = { name = "rex_sub_82363AD0" } +0x82363BC8 = { name = "rex_sub_82363BC8" } +0x82363C98 = { name = "rex_sub_82363C98" } +0x82363E68 = { name = "rex_sub_82363E68" } +0x82364038 = { name = "rex_sub_82364038" } +0x823644A0 = { name = "rex_sub_823644A0" } +0x823648A0 = { name = "rex_sub_823648A0" } +0x82364B78 = { name = "rex_sub_82364B78" } +0x82364E58 = { name = "rex_sub_82364E58" } +0x82364F28 = { name = "rex_sub_82364F28" } +0x82365040 = { name = "rex_sub_82365040" } +0x82365190 = { name = "rex_sub_82365190" } +0x82365318 = { name = "rex_sub_82365318" } +0x823653B0 = { name = "rex_sub_823653B0" } +0x82365468 = { name = "rex_sub_82365468" } +0x82365550 = { name = "rex_sub_82365550" } +0x82365670 = { name = "rex_sub_82365670" } +0x823657C0 = { name = "rex_sub_823657C0" } +0x82365830 = { name = "rex_sub_82365830" } +0x82365838 = { name = "rex_sub_82365838" } +0x82365840 = { name = "rex_sub_82365840" } +0x82365848 = { name = "rex_sub_82365848" } +0x82365850 = { name = "rex_sub_82365850" } +0x82365858 = { name = "rex_sub_82365858" } +0x82365860 = { name = "rex_sub_82365860" } +0x82365868 = { name = "rex_sub_82365868" } +0x82365878 = { name = "rex_sub_82365878" } +0x82365888 = { name = "rex_sub_82365888" } +0x823658E8 = { name = "rex_sub_823658E8" } +0x823659F0 = { name = "rex_sub_823659F0" } +0x82365B40 = { name = "rex_sub_82365B40" } +0x82365BA8 = { name = "rex_sub_82365BA8" } +0x82365C00 = { name = "rex_sub_82365C00" } +0x82365C88 = { name = "rex_sub_82365C88" } +0x82365D10 = { name = "rex_sub_82365D10" } +0x82365D90 = { name = "rex_sub_82365D90" } +0x82365DE8 = { name = "rex_sub_82365DE8" } +0x82365EF8 = { name = "rex_sub_82365EF8" } +0x82365F10 = { name = "rex_sub_82365F10" } +0x82365F50 = { name = "rex_sub_82365F50" } +0x82366118 = { name = "rex_sub_82366118" } +0x82366120 = { name = "rex_sub_82366120" } +0x82366128 = { name = "rex_sub_82366128" } +0x823661F0 = { name = "rex_sub_823661F0" } +0x82366230 = { name = "rex_sub_82366230" } +0x82366278 = { name = "rex_sub_82366278" } +0x823662C0 = { name = "rex_sub_823662C0" } +0x823662E8 = { name = "rex_sub_823662E8" } +0x82366380 = { name = "rex_sub_82366380" } +0x823664A0 = { name = "rex_sub_823664A0" } +0x82366570 = { name = "rex_sub_82366570" } +0x82366620 = { name = "rex_sub_82366620" } +0x82366628 = { name = "rex_sub_82366628" } +0x82366690 = { name = "rex_sub_82366690" } +0x82366700 = { name = "rex_sub_82366700" } +0x823667E8 = { name = "rex_sub_823667E8" } +0x82366870 = { name = "rex_sub_82366870" } +0x82366888 = { name = "rex_sub_82366888" } +0x82366898 = { name = "rex_sub_82366898" } +0x823668C8 = { name = "rex_sub_823668C8" } +0x82366928 = { name = "rex_sub_82366928" } +0x82366958 = { name = "rex_sub_82366958" } +0x82366988 = { name = "rex_sub_82366988" } +0x823669B8 = { name = "rex_sub_823669B8" } +0x82366A58 = { name = "rex_sub_82366A58" } +0x82366AC0 = { name = "rex_sub_82366AC0" } +0x82366B18 = { name = "rex_sub_82366B18" } +0x82366BC0 = { name = "rex_sub_82366BC0" } +0x82366BC8 = { name = "rex_sub_82366BC8" } +0x82366C30 = { name = "rex_sub_82366C30" } +0x82366C90 = { name = "rex_sub_82366C90" } +0x82366CF0 = { name = "rex_sub_82366CF0" } +0x82366D50 = { name = "rex_sub_82366D50" } +0x82366DC0 = { name = "rex_sub_82366DC0" } +0x82366E28 = { name = "rex_sub_82366E28" } +0x82366E98 = { name = "rex_sub_82366E98" } +0x82366F08 = { name = "rex_sub_82366F08" } +0x82366F50 = { name = "rex_sub_82366F50" } +0x82366F58 = { name = "rex_sub_82366F58" } +0x82366FD0 = { name = "rex_sub_82366FD0" } +0x82367048 = { name = "rex_sub_82367048" } +0x823670C8 = { name = "rex_sub_823670C8" } +0x82367148 = { name = "rex_sub_82367148" } +0x823671C8 = { name = "rex_sub_823671C8" } +0x82367210 = { name = "rex_sub_82367210" } +0x82367260 = { name = "rex_sub_82367260" } +0x823672B0 = { name = "rex_sub_823672B0" } +0x82367300 = { name = "rex_sub_82367300" } +0x82367350 = { name = "rex_sub_82367350" } +0x823673E8 = { name = "rex_sub_823673E8" } +0x82367480 = { name = "rex_sub_82367480" } +0x823674C8 = { name = "rex_sub_823674C8" } +0x82367540 = { name = "rex_sub_82367540" } +0x82367558 = { name = "rex_sub_82367558" } +0x82367588 = { name = "rex_sub_82367588" } +0x82367750 = { name = "rex_sub_82367750" } +0x82367758 = { name = "rex_sub_82367758" } +0x82367770 = { name = "rex_sub_82367770" } +0x823677A0 = { name = "rex_sub_823677A0" } +0x82367A70 = { name = "rex_sub_82367A70" } +0x82367A78 = { name = "rex_sub_82367A78" } +0x82367AD8 = { name = "rex_sub_82367AD8" } +0x82367AE0 = { name = "rex_sub_82367AE0" } +0x82367AE8 = { name = "rex_sub_82367AE8" } +0x82367AF0 = { name = "rex_sub_82367AF0" } +0x82367AF8 = { name = "rex_sub_82367AF8" } +0x82367CE8 = { name = "rex_sub_82367CE8" } +0x82367CF0 = { name = "rex_sub_82367CF0" } +0x82367CF8 = { name = "rex_sub_82367CF8" } +0x82367D50 = { name = "rex_sub_82367D50" } +0x82367DF0 = { name = "rex_sub_82367DF0" } +0x82367E40 = { name = "rex_sub_82367E40" } +0x82367EA0 = { name = "rex_sub_82367EA0" } +0x82368040 = { name = "rex_sub_82368040" } +0x82368058 = { name = "rex_sub_82368058" } +0x82368110 = { name = "rex_sub_82368110" } +0x82368170 = { name = "rex_sub_82368170" } +0x82368338 = { name = "rex_sub_82368338" } +0x82368378 = { name = "rex_sub_82368378" } +0x823683D8 = { name = "rex_sub_823683D8" } +0x823683E8 = { name = "rex_sub_823683E8" } +0x82368410 = { name = "rex_sub_82368410" } +0x82368418 = { name = "rex_sub_82368418" } +0x82368420 = { name = "rex_sub_82368420" } +0x82368438 = { name = "rex_sub_82368438" } +0x82368480 = { name = "rex_sub_82368480" } +0x823684A0 = { name = "rex_sub_823684A0" } +0x82368638 = { name = "rex_sub_82368638" } +0x823686D0 = { name = "rex_sub_823686D0" } +0x82368748 = { name = "rex_sub_82368748" } +0x823687C0 = { name = "rex_sub_823687C0" } +0x823687D8 = { name = "rex_sub_823687D8" } +0x823687F0 = { name = "rex_sub_823687F0" } +0x82368860 = { name = "rex_sub_82368860" } +0x823688D0 = { name = "rex_sub_823688D0" } +0x82368950 = { name = "rex_sub_82368950" } +0x823689D8 = { name = "rex_sub_823689D8" } +0x82368A98 = { name = "rex_sub_82368A98" } +0x82368AE8 = { name = "rex_sub_82368AE8" } +0x82368B38 = { name = "rex_sub_82368B38" } +0x82368B88 = { name = "rex_sub_82368B88" } +0x82368BD8 = { name = "rex_sub_82368BD8" } +0x82368C10 = { name = "rex_sub_82368C10" } +0x82368C98 = { name = "rex_sub_82368C98" } +0x82368D40 = { name = "rex_sub_82368D40" } +0x82368EB8 = { name = "rex_sub_82368EB8" } +0x82368EE0 = { name = "rex_sub_82368EE0" } +0x82368F08 = { name = "rex_sub_82368F08" } +0x82368F30 = { name = "rex_sub_82368F30" } +0x82368F38 = { name = "rex_sub_82368F38" } +0x82368F40 = { name = "rex_sub_82368F40" } +0x82368F48 = { name = "rex_sub_82368F48" } +0x82368F50 = { name = "rex_sub_82368F50" } +0x82368F58 = { name = "rex_sub_82368F58" } +0x82368F60 = { name = "rex_sub_82368F60" } +0x82368FA8 = { name = "rex_sub_82368FA8" } +0x82368FD0 = { name = "rex_sub_82368FD0" } +0x82368FF8 = { name = "rex_sub_82368FF8" } +0x82369038 = { name = "rex_sub_82369038" } +0x82369090 = { name = "rex_sub_82369090" } +0x823690E8 = { name = "rex_sub_823690E8" } +0x82369148 = { name = "rex_sub_82369148" } +0x823692B0 = { name = "rex_sub_823692B0" } +0x82369450 = { name = "rex_sub_82369450" } +0x823694F8 = { name = "rex_sub_823694F8" } +0x82369550 = { name = "rex_sub_82369550" } +0x82369620 = { name = "rex_sub_82369620" } +0x823696F0 = { name = "rex_sub_823696F0" } +0x82369748 = { name = "rex_sub_82369748" } +0x82369798 = { name = "rex_sub_82369798" } +0x823698B0 = { name = "rex_sub_823698B0" } +0x82369970 = { name = "rex_sub_82369970" } +0x82369998 = { name = "rex_sub_82369998" } +0x823699A0 = { name = "rex_sub_823699A0" } +0x823699A8 = { name = "rex_sub_823699A8" } +0x823699B0 = { name = "rex_sub_823699B0" } +0x823699C8 = { name = "rex_sub_823699C8" } +0x823699E0 = { name = "rex_sub_823699E0" } +0x823699E8 = { name = "rex_sub_823699E8" } +0x82369AF0 = { name = "rex_sub_82369AF0" } +0x82369B48 = { name = "rex_sub_82369B48" } +0x82369B98 = { name = "rex_sub_82369B98" } +0x82369C78 = { name = "rex_sub_82369C78" } +0x82369CC0 = { name = "rex_sub_82369CC0" } +0x82369D10 = { name = "rex_sub_82369D10" } +0x82369DF0 = { name = "rex_sub_82369DF0" } +0x82369ED0 = { name = "rex_sub_82369ED0" } +0x82369FA0 = { name = "rex_sub_82369FA0" } +0x8236A070 = { name = "rex_sub_8236A070" } +0x8236A0C0 = { name = "rex_sub_8236A0C0" } +0x8236A148 = { name = "rex_sub_8236A148" } +0x8236A198 = { name = "rex_sub_8236A198" } +0x8236A1C0 = { name = "rex_sub_8236A1C0" } +0x8236A228 = { name = "rex_sub_8236A228" } +0x8236A238 = { name = "rex_sub_8236A238" } +0x8236A248 = { name = "rex_sub_8236A248" } +0x8236A3B8 = { name = "rex_sub_8236A3B8" } +0x8236A528 = { name = "rex_sub_8236A528" } +0x8236A698 = { name = "rex_sub_8236A698" } +0x8236A808 = { name = "rex_sub_8236A808" } +0x8236A8F8 = { name = "rex_sub_8236A8F8" } +0x8236A900 = { name = "rex_sub_8236A900" } +0x8236A908 = { name = "rex_sub_8236A908" } +0x8236A928 = { name = "rex_sub_8236A928" } +0x8236A988 = { name = "rex_sub_8236A988" } +0x8236AAC0 = { name = "rex_sub_8236AAC0" } +0x8236AB38 = { name = "rex_sub_8236AB38" } +0x8236AB78 = { name = "rex_sub_8236AB78" } +0x8236AC28 = { name = "rex_sub_8236AC28" } +0x8236ACA0 = { name = "rex_sub_8236ACA0" } +0x8236ACF0 = { name = "rex_sub_8236ACF0" } +0x8236AD50 = { name = "rex_sub_8236AD50" } +0x8236ADB0 = { name = "rex_sub_8236ADB0" } +0x8236AE10 = { name = "rex_sub_8236AE10" } +0x8236AE70 = { name = "rex_sub_8236AE70" } +0x8236AEA0 = { name = "rex_sub_8236AEA0" } +0x8236AF30 = { name = "rex_sub_8236AF30" } +0x8236B020 = { name = "rex_sub_8236B020" } +0x8236B0E0 = { name = "rex_sub_8236B0E0" } +0x8236B120 = { name = "rex_sub_8236B120" } +0x8236B148 = { name = "rex_sub_8236B148" } +0x8236B1B0 = { name = "rex_sub_8236B1B0" } +0x8236B1F8 = { name = "rex_sub_8236B1F8" } +0x8236B258 = { name = "rex_sub_8236B258" } +0x8236B2C0 = { name = "rex_sub_8236B2C0" } +0x8236B3B8 = { name = "rex_sub_8236B3B8" } +0x8236B3F8 = { name = "rex_sub_8236B3F8" } +0x8236B538 = { name = "rex_sub_8236B538" } +0x8236B6F0 = { name = "rex_sub_8236B6F0" } +0x8236B768 = { name = "rex_sub_8236B768" } +0x8236B7E0 = { name = "rex_sub_8236B7E0" } +0x8236B7F0 = { name = "rex_sub_8236B7F0" } +0x8236B800 = { name = "rex_sub_8236B800" } +0x8236B828 = { name = "rex_sub_8236B828" } +0x8236B838 = { name = "rex_sub_8236B838" } +0x8236B848 = { name = "rex_sub_8236B848" } +0x8236B868 = { name = "rex_sub_8236B868" } +0x8236B888 = { name = "rex_sub_8236B888" } +0x8236B8C8 = { name = "rex_sub_8236B8C8" } +0x8236BA38 = { name = "rex_sub_8236BA38" } +0x8236BAC0 = { name = "rex_sub_8236BAC0" } +0x8236BB68 = { name = "rex_sub_8236BB68" } +0x8236BC30 = { name = "rex_sub_8236BC30" } +0x8236BDA8 = { name = "rex_sub_8236BDA8" } +0x8236BE98 = { name = "rex_sub_8236BE98" } +0x8236BEA8 = { name = "rex_sub_8236BEA8" } +0x8236BEC0 = { name = "rex_sub_8236BEC0" } +0x8236BED8 = { name = "rex_sub_8236BED8" } +0x8236BEF0 = { name = "rex_sub_8236BEF0" } +0x8236BF00 = { name = "rex_sub_8236BF00" } +0x8236BF10 = { name = "rex_sub_8236BF10" } +0x8236BF28 = { name = "rex_sub_8236BF28" } +0x8236BF38 = { name = "rex_sub_8236BF38" } +0x8236BF50 = { name = "rex_sub_8236BF50" } +0x8236BF60 = { name = "rex_sub_8236BF60" } +0x8236BF68 = { name = "rex_sub_8236BF68" } +0x8236C040 = { name = "rex_sub_8236C040" } +0x8236C0B8 = { name = "rex_sub_8236C0B8" } +0x8236C168 = { name = "rex_sub_8236C168" } +0x8236C1A0 = { name = "rex_sub_8236C1A0" } +0x8236C1E0 = { name = "rex_sub_8236C1E0" } +0x8236C220 = { name = "rex_sub_8236C220" } +0x8236C260 = { name = "rex_sub_8236C260" } +0x8236C2F8 = { name = "rex_sub_8236C2F8" } +0x8236C3C8 = { name = "rex_sub_8236C3C8" } +0x8236C408 = { name = "rex_sub_8236C408" } +0x8236C448 = { name = "rex_sub_8236C448" } +0x8236C500 = { name = "rex_sub_8236C500" } +0x8236C678 = { name = "rex_sub_8236C678" } +0x8236C6B0 = { name = "rex_sub_8236C6B0" } +0x8236C700 = { name = "rex_sub_8236C700" } +0x8236C750 = { name = "rex_sub_8236C750" } +0x8236C758 = { name = "rex_sub_8236C758" } +0x8236C798 = { name = "rex_sub_8236C798" } +0x8236C838 = { name = "rex_sub_8236C838" } +0x8236C878 = { name = "rex_sub_8236C878" } +0x8236C8B0 = { name = "rex_sub_8236C8B0" } +0x8236C8C0 = { name = "rex_sub_8236C8C0" } +0x8236C980 = { name = "rex_sub_8236C980" } +0x8236CA20 = { name = "rex_sub_8236CA20" } +0x8236CAC0 = { name = "rex_sub_8236CAC0" } +0x8236CB78 = { name = "rex_sub_8236CB78" } +0x8236CC08 = { name = "rex_sub_8236CC08" } +0x8236CC50 = { name = "rex_sub_8236CC50" } +0x8236CC98 = { name = "rex_sub_8236CC98" } +0x8236CCD8 = { name = "rex_sub_8236CCD8" } +0x8236CD10 = { name = "rex_sub_8236CD10" } +0x8236CD50 = { name = "rex_sub_8236CD50" } +0x8236CD80 = { name = "rex_sub_8236CD80" } +0x8236CE78 = { name = "rex_sub_8236CE78" } +0x8236CF90 = { name = "rex_sub_8236CF90" } +0x8236CF98 = { name = "rex_sub_8236CF98" } +0x8236CFB8 = { name = "rex_sub_8236CFB8" } +0x8236D028 = { name = "rex_sub_8236D028" } +0x8236D070 = { name = "rex_sub_8236D070" } +0x8236D0B8 = { name = "rex_sub_8236D0B8" } +0x8236D278 = { name = "rex_sub_8236D278" } +0x8236D4C8 = { name = "rex_sub_8236D4C8" } +0x8236D5B0 = { name = "rex_sub_8236D5B0" } +0x8236D6C8 = { name = "rex_sub_8236D6C8" } +0x8236D768 = { name = "rex_sub_8236D768" } +0x8236D770 = { name = "rex_sub_8236D770" } +0x8236D7D8 = { name = "rex_sub_8236D7D8" } +0x8236D868 = { name = "rex_sub_8236D868" } +0x8236D898 = { name = "rex_sub_8236D898" } +0x8236D978 = { name = "rex_sub_8236D978" } +0x8236DA38 = { name = "rex_sub_8236DA38" } +0x8236DB10 = { name = "rex_sub_8236DB10" } +0x8236DBB8 = { name = "rex_sub_8236DBB8" } +0x8236DBF0 = { name = "rex_sub_8236DBF0" } +0x8236DC00 = { name = "rex_sub_8236DC00" } +0x8236DC18 = { name = "rex_sub_8236DC18" } +0x8236DC38 = { name = "rex_sub_8236DC38" } +0x8236DC58 = { name = "rex_sub_8236DC58" } +0x8236DC80 = { name = "rex_sub_8236DC80" } +0x8236DC90 = { name = "rex_sub_8236DC90" } +0x8236DCB8 = { name = "rex_sub_8236DCB8" } +0x8236DCD8 = { name = "rex_sub_8236DCD8" } +0x8236DDC0 = { name = "rex_sub_8236DDC0" } +0x8236DE48 = { name = "rex_sub_8236DE48" } +0x8236DEA8 = { name = "rex_sub_8236DEA8" } +0x8236DEB8 = { name = "rex_sub_8236DEB8" } +0x8236DF30 = { name = "rex_sub_8236DF30" } +0x8236DF48 = { name = "rex_sub_8236DF48" } +0x8236DFB8 = { name = "rex_sub_8236DFB8" } +0x8236E028 = { name = "rex_sub_8236E028" } +0x8236E0D8 = { name = "rex_sub_8236E0D8" } +0x8236E198 = { name = "rex_sub_8236E198" } +0x8236E1D8 = { name = "rex_sub_8236E1D8" } +0x8236E218 = { name = "rex_sub_8236E218" } +0x8236E258 = { name = "rex_sub_8236E258" } +0x8236E3D8 = { name = "rex_sub_8236E3D8" } +0x8236E440 = { name = "rex_sub_8236E440" } +0x8236E448 = { name = "rex_sub_8236E448" } +0x8236E488 = { name = "rex_sub_8236E488" } +0x8236E490 = { name = "rex_sub_8236E490" } +0x8236E598 = { name = "rex_sub_8236E598" } +0x8236E618 = { name = "rex_sub_8236E618" } +0x8236E768 = { name = "rex_sub_8236E768" } +0x8236E7C8 = { name = "rex_sub_8236E7C8" } +0x8236E818 = { name = "rex_sub_8236E818" } +0x8236E868 = { name = "rex_sub_8236E868" } +0x8236E9E8 = { name = "rex_sub_8236E9E8" } +0x8236E9F0 = { name = "rex_sub_8236E9F0" } +0x8236EA50 = { name = "rex_sub_8236EA50" } +0x8236EAE8 = { name = "rex_sub_8236EAE8" } +0x8236EB70 = { name = "rex_sub_8236EB70" } +0x8236EC50 = { name = "rex_sub_8236EC50" } +0x8236ECC8 = { name = "rex_sub_8236ECC8" } +0x8236ED20 = { name = "rex_sub_8236ED20" } +0x8236ED78 = { name = "rex_sub_8236ED78" } +0x8236EDC8 = { name = "rex_sub_8236EDC8" } +0x8236EF10 = { name = "rex_sub_8236EF10" } +0x8236EFD0 = { name = "rex_sub_8236EFD0" } +0x8236F080 = { name = "rex_sub_8236F080" } +0x8236F158 = { name = "rex_sub_8236F158" } +0x8236F698 = { name = "rex_sub_8236F698" } +0x8236F6F0 = { name = "rex_sub_8236F6F0" } +0x8236FAE0 = { name = "rex_sub_8236FAE0" } +0x8236FC20 = { name = "rex_sub_8236FC20" } +0x8236FC90 = { name = "rex_sub_8236FC90" } +0x8236FCF0 = { name = "rex_sub_8236FCF0" } +0x8236FDD0 = { name = "rex_sub_8236FDD0" } +0x8236FE30 = { name = "rex_sub_8236FE30" } +0x82370078 = { name = "rex_sub_82370078" } +0x823700C0 = { name = "rex_sub_823700C0" } +0x82370108 = { name = "rex_sub_82370108" } +0x82370170 = { name = "rex_sub_82370170" } +0x823701D8 = { name = "rex_sub_823701D8" } +0x823701F0 = { name = "rex_sub_823701F0" } +0x82370250 = { name = "rex_sub_82370250" } +0x823702C0 = { name = "rex_sub_823702C0" } +0x82370330 = { name = "rex_sub_82370330" } +0x82370398 = { name = "rex_sub_82370398" } +0x82370410 = { name = "rex_sub_82370410" } +0x82370570 = { name = "rex_sub_82370570" } +0x82370588 = { name = "rex_sub_82370588" } +0x82370688 = { name = "rex_sub_82370688" } +0x82370750 = { name = "rex_sub_82370750" } +0x823709E8 = { name = "rex_sub_823709E8" } +0x82370A40 = { name = "rex_sub_82370A40" } +0x82370A80 = { name = "rex_sub_82370A80" } +0x82370A88 = { name = "rex_sub_82370A88" } +0x82370AE0 = { name = "rex_sub_82370AE0" } +0x82370C60 = { name = "rex_sub_82370C60" } +0x82370D90 = { name = "rex_sub_82370D90" } +0x82370E18 = { name = "rex_sub_82370E18" } +0x82370EA0 = { name = "rex_sub_82370EA0" } +0x82370FE8 = { name = "rex_sub_82370FE8" } +0x823710F8 = { name = "rex_sub_823710F8" } +0x82371168 = { name = "rex_sub_82371168" } +0x823711B0 = { name = "rex_sub_823711B0" } +0x82371208 = { name = "rex_sub_82371208" } +0x82371290 = { name = "rex_sub_82371290" } +0x823712D8 = { name = "rex_sub_823712D8" } +0x82371320 = { name = "rex_sub_82371320" } +0x82371368 = { name = "rex_sub_82371368" } +0x823713C0 = { name = "rex_sub_823713C0" } +0x82371418 = { name = "rex_sub_82371418" } +0x82371478 = { name = "rex_sub_82371478" } +0x823714C8 = { name = "rex_sub_823714C8" } +0x82371528 = { name = "rex_sub_82371528" } +0x823715A8 = { name = "rex_sub_823715A8" } +0x82371600 = { name = "rex_sub_82371600" } +0x82371650 = { name = "rex_sub_82371650" } +0x823716E8 = { name = "rex_sub_823716E8" } +0x82371760 = { name = "rex_sub_82371760" } +0x823717C8 = { name = "rex_sub_823717C8" } +0x82371820 = { name = "rex_sub_82371820" } +0x82371878 = { name = "rex_sub_82371878" } +0x823718C8 = { name = "rex_sub_823718C8" } +0x82371948 = { name = "rex_sub_82371948" } +0x823719D0 = { name = "rex_sub_823719D0" } +0x82371A30 = { name = "rex_sub_82371A30" } +0x82371CC0 = { name = "rex_sub_82371CC0" } +0x82371DB8 = { name = "rex_sub_82371DB8" } +0x82371E28 = { name = "rex_sub_82371E28" } +0x82371E38 = { name = "rex_sub_82371E38" } +0x82371E40 = { name = "rex_sub_82371E40" } +0x82371E88 = { name = "rex_sub_82371E88" } +0x82371F00 = { name = "rex_sub_82371F00" } +0x82371F40 = { name = "rex_sub_82371F40" } +0x82371F60 = { name = "rex_sub_82371F60" } +0x82371F98 = { name = "rex_sub_82371F98" } +0x82371FD8 = { name = "rex_sub_82371FD8" } +0x82372018 = { name = "rex_sub_82372018" } +0x82372070 = { name = "rex_sub_82372070" } +0x823720B0 = { name = "rex_sub_823720B0" } +0x823720C0 = { name = "rex_sub_823720C0" } +0x82372128 = { name = "rex_sub_82372128" } +0x82372198 = { name = "rex_sub_82372198" } +0x823721E8 = { name = "rex_sub_823721E8" } +0x82372258 = { name = "rex_sub_82372258" } +0x823722C0 = { name = "rex_sub_823722C0" } +0x823725E0 = { name = "rex_sub_823725E0" } +0x82372738 = { name = "rex_sub_82372738" } +0x82372810 = { name = "rex_sub_82372810" } +0x823728B8 = { name = "rex_sub_823728B8" } +0x82372970 = { name = "rex_sub_82372970" } +0x823729F8 = { name = "rex_sub_823729F8" } +0x82372AB0 = { name = "rex_sub_82372AB0" } +0x82372AF0 = { name = "rex_sub_82372AF0" } +0x82372B00 = { name = "rex_sub_82372B00" } +0x82372B88 = { name = "rex_sub_82372B88" } +0x82372BE0 = { name = "rex_sub_82372BE0" } +0x82372C20 = { name = "rex_sub_82372C20" } +0x82372C60 = { name = "rex_sub_82372C60" } +0x82372CA0 = { name = "rex_sub_82372CA0" } +0x82372CE0 = { name = "rex_sub_82372CE0" } +0x82372D20 = { name = "rex_sub_82372D20" } +0x82372D60 = { name = "rex_sub_82372D60" } +0x82372DA0 = { name = "rex_sub_82372DA0" } +0x82372E10 = { name = "rex_sub_82372E10" } +0x82372E78 = { name = "rex_sub_82372E78" } +0x82372EB8 = { name = "rex_sub_82372EB8" } +0x82372EF0 = { name = "rex_sub_82372EF0" } +0x82372F40 = { name = "rex_sub_82372F40" } +0x82372FC0 = { name = "rex_sub_82372FC0" } +0x82373040 = { name = "rex_sub_82373040" } +0x823730C0 = { name = "rex_sub_823730C0" } +0x82373150 = { name = "rex_sub_82373150" } +0x82373190 = { name = "rex_sub_82373190" } +0x82373530 = { name = "rex_sub_82373530" } +0x82373760 = { name = "rex_sub_82373760" } +0x82373990 = { name = "rex_sub_82373990" } +0x82373FA0 = { name = "rex_sub_82373FA0" } +0x823740A0 = { name = "rex_sub_823740A0" } +0x823741E8 = { name = "rex_sub_823741E8" } +0x82374258 = { name = "rex_sub_82374258" } +0x823742B0 = { name = "rex_sub_823742B0" } +0x823742F8 = { name = "rex_sub_823742F8" } +0x823743F0 = { name = "rex_sub_823743F0" } +0x82374488 = { name = "rex_sub_82374488" } +0x82374510 = { name = "rex_sub_82374510" } +0x82374688 = { name = "rex_sub_82374688" } +0x82374768 = { name = "rex_sub_82374768" } +0x823747D0 = { name = "rex_sub_823747D0" } +0x82374838 = { name = "rex_sub_82374838" } +0x823748E0 = { name = "rex_sub_823748E0" } +0x82374930 = { name = "rex_sub_82374930" } +0x82374940 = { name = "rex_sub_82374940" } +0x82374958 = { name = "rex_sub_82374958" } +0x823749B0 = { name = "rex_sub_823749B0" } +0x823749D8 = { name = "rex_sub_823749D8" } +0x823749E0 = { name = "rex_sub_823749E0" } +0x823749E8 = { name = "rex_sub_823749E8" } +0x823749F8 = { name = "rex_sub_823749F8" } +0x82374B58 = { name = "rex_sub_82374B58" } +0x82374BB8 = { name = "rex_sub_82374BB8" } +0x82374CA0 = { name = "rex_sub_82374CA0" } +0x82374E00 = { name = "rex_sub_82374E00" } +0x82374F70 = { name = "rex_sub_82374F70" } +0x82375290 = { name = "rex_sub_82375290" } +0x82375378 = { name = "rex_sub_82375378" } +0x82375468 = { name = "rex_sub_82375468" } +0x82375550 = { name = "rex_sub_82375550" } +0x823755C8 = { name = "rex_sub_823755C8" } +0x82375618 = { name = "rex_sub_82375618" } +0x82375770 = { name = "rex_sub_82375770" } +0x82375850 = { name = "rex_sub_82375850" } +0x82375960 = { name = "rex_sub_82375960" } +0x82375990 = { name = "rex_sub_82375990" } +0x82375D88 = { name = "rex_sub_82375D88" } +0x82375EB8 = { name = "rex_sub_82375EB8" } +0x82376500 = { name = "rex_sub_82376500" } +0x82376530 = { name = "rex_sub_82376530" } +0x82376560 = { name = "rex_sub_82376560" } +0x82376598 = { name = "rex_sub_82376598" } +0x823765D0 = { name = "rex_sub_823765D0" } +0x823766B8 = { name = "rex_sub_823766B8" } +0x82376790 = { name = "rex_sub_82376790" } +0x823767C8 = { name = "rex_sub_823767C8" } +0x823767F8 = { name = "rex_sub_823767F8" } +0x82376830 = { name = "rex_sub_82376830" } +0x82376A98 = { name = "rex_sub_82376A98" } +0x82376BE0 = { name = "rex_sub_82376BE0" } +0x82376CB8 = { name = "rex_sub_82376CB8" } +0x82376D90 = { name = "rex_sub_82376D90" } +0x82376E40 = { name = "rex_sub_82376E40" } +0x82376FD8 = { name = "rex_sub_82376FD8" } +0x823770F8 = { name = "rex_sub_823770F8" } +0x82377410 = { name = "rex_sub_82377410" } +0x82377538 = { name = "rex_sub_82377538" } +0x823775A8 = { name = "rex_sub_823775A8" } +0x82377670 = { name = "rex_sub_82377670" } +0x823776A0 = { name = "rex_sub_823776A0" } +0x82377820 = { name = "rex_sub_82377820" } +0x82377868 = { name = "rex_sub_82377868" } +0x82377C00 = { name = "rex_sub_82377C00" } +0x82377C60 = { name = "rex_sub_82377C60" } +0x82377CB0 = { name = "rex_sub_82377CB0" } +0x82377D00 = { name = "rex_sub_82377D00" } +0x82377D08 = { name = "rex_sub_82377D08" } +0x82377D10 = { name = "rex_sub_82377D10" } +0x82377D38 = { name = "rex_sub_82377D38" } +0x82377D40 = { name = "rex_sub_82377D40" } +0x82377D88 = { name = "rex_sub_82377D88" } +0x82377DE0 = { name = "rex_sub_82377DE0" } +0x82377E90 = { name = "rex_sub_82377E90" } +0x82377EC8 = { name = "rex_sub_82377EC8" } +0x82377EE0 = { name = "rex_sub_82377EE0" } +0x82377F60 = { name = "rex_sub_82377F60" } +0x82377F70 = { name = "rex_sub_82377F70" } +0x82378000 = { name = "rex_sub_82378000" } +0x82378090 = { name = "rex_sub_82378090" } +0x82378150 = { name = "rex_sub_82378150" } +0x823781C8 = { name = "rex_sub_823781C8" } +0x82378218 = { name = "rex_sub_82378218" } +0x823782C0 = { name = "rex_sub_823782C0" } +0x82378310 = { name = "rex_sub_82378310" } +0x82378380 = { name = "rex_sub_82378380" } +0x82378480 = { name = "rex_sub_82378480" } +0x82378508 = { name = "rex_sub_82378508" } +0x823785E8 = { name = "rex_sub_823785E8" } +0x823785F8 = { name = "rex_sub_823785F8" } +0x82378648 = { name = "rex_sub_82378648" } +0x823786A8 = { name = "rex_sub_823786A8" } +0x82378720 = { name = "rex_sub_82378720" } +0x82378730 = { name = "rex_sub_82378730" } +0x82378740 = { name = "rex_sub_82378740" } +0x82378770 = { name = "rex_sub_82378770" } +0x823787A0 = { name = "rex_sub_823787A0" } +0x82378878 = { name = "rex_sub_82378878" } +0x82378F28 = { name = "rex_sub_82378F28" } +0x82379218 = { name = "rex_sub_82379218" } +0x82379510 = { name = "rex_sub_82379510" } +0x82379850 = { name = "rex_sub_82379850" } +0x82379938 = { name = "rex_sub_82379938" } +0x823799D8 = { name = "rex_sub_823799D8" } +0x82379A58 = { name = "rex_sub_82379A58" } +0x82379AD8 = { name = "rex_sub_82379AD8" } +0x82379BF8 = { name = "rex_sub_82379BF8" } +0x82379C20 = { name = "rex_sub_82379C20" } +0x82379DD0 = { name = "rex_sub_82379DD0" } +0x82379E90 = { name = "rex_sub_82379E90" } +0x82379E98 = { name = "rex_sub_82379E98" } +0x82379EA0 = { name = "rex_sub_82379EA0" } +0x82379EA8 = { name = "rex_sub_82379EA8" } +0x82379EB0 = { name = "rex_sub_82379EB0" } +0x82379EB8 = { name = "rex_sub_82379EB8" } +0x82379EC0 = { name = "rex_sub_82379EC0" } +0x82379EC8 = { name = "rex_sub_82379EC8" } +0x82379ED0 = { name = "rex_sub_82379ED0" } +0x82379ED8 = { name = "rex_sub_82379ED8" } +0x82379F20 = { name = "rex_sub_82379F20" } +0x8237A070 = { name = "rex_sub_8237A070" } +0x8237A0C8 = { name = "rex_sub_8237A0C8" } +0x8237A108 = { name = "rex_sub_8237A108" } +0x8237A110 = { name = "rex_sub_8237A110" } +0x8237A120 = { name = "rex_sub_8237A120" } +0x8237A148 = { name = "rex_sub_8237A148" } +0x8237A170 = { name = "rex_sub_8237A170" } +0x8237A198 = { name = "rex_sub_8237A198" } +0x8237A1A8 = { name = "rex_sub_8237A1A8" } +0x8237A1D8 = { name = "rex_sub_8237A1D8" } +0x8237A1F0 = { name = "rex_sub_8237A1F0" } +0x8237A270 = { name = "rex_sub_8237A270" } +0x8237A398 = { name = "rex_sub_8237A398" } +0x8237A490 = { name = "rex_sub_8237A490" } +0x8237A558 = { name = "rex_sub_8237A558" } +0x8237A5D0 = { name = "rex_sub_8237A5D0" } +0x8237A648 = { name = "rex_sub_8237A648" } +0x8237A650 = { name = "rex_sub_8237A650" } +0x8237A688 = { name = "rex_sub_8237A688" } +0x8237A6F8 = { name = "rex_sub_8237A6F8" } +0x8237A750 = { name = "rex_sub_8237A750" } +0x8237A778 = { name = "rex_sub_8237A778" } +0x8237A798 = { name = "rex_sub_8237A798" } +0x8237A850 = { name = "rex_sub_8237A850" } +0x8237A970 = { name = "rex_sub_8237A970" } +0x8237A9D0 = { name = "rex_sub_8237A9D0" } +0x8237A9D8 = { name = "rex_sub_8237A9D8" } +0x8237AB28 = { name = "rex_sub_8237AB28" } +0x8237AB98 = { name = "rex_sub_8237AB98" } +0x8237ABB8 = { name = "rex_sub_8237ABB8" } +0x8237ABD0 = { name = "rex_sub_8237ABD0" } +0x8237ABE8 = { name = "rex_sub_8237ABE8" } +0x8237AC08 = { name = "rex_sub_8237AC08" } +0x8237AC10 = { name = "rex_sub_8237AC10" } +0x8237AC60 = { name = "rex_sub_8237AC60" } +0x8237ACA8 = { name = "rex_sub_8237ACA8" } +0x8237AD20 = { name = "rex_sub_8237AD20" } +0x8237AD58 = { name = "rex_sub_8237AD58" } +0x8237AD70 = { name = "rex_sub_8237AD70" } +0x8237ADA8 = { name = "rex_sub_8237ADA8" } +0x8237ADE8 = { name = "rex_sub_8237ADE8" } +0x8237AE20 = { name = "rex_sub_8237AE20" } +0x8237AE60 = { name = "rex_sub_8237AE60" } +0x8237AEB8 = { name = "rex_sub_8237AEB8" } +0x8237AFF0 = { name = "rex_sub_8237AFF0" } +0x8237B178 = { name = "rex_sub_8237B178" } +0x8237B1C8 = { name = "rex_sub_8237B1C8" } +0x8237B1D8 = { name = "rex_sub_8237B1D8" } +0x8237B2A0 = { name = "rex_sub_8237B2A0" } +0x8237B2C8 = { name = "rex_sub_8237B2C8" } +0x8237B3B0 = { name = "rex_sub_8237B3B0" } +0x8237B498 = { name = "rex_sub_8237B498" } +0x8237B590 = { name = "rex_sub_8237B590" } +0x8237B5B0 = { name = "rex_sub_8237B5B0" } +0x8237B5D0 = { name = "rex_sub_8237B5D0" } +0x8237B638 = { name = "rex_sub_8237B638" } +0x8237B6A0 = { name = "rex_sub_8237B6A0" } +0x8237B6C0 = { name = "rex_sub_8237B6C0" } +0x8237B6E0 = { name = "rex_sub_8237B6E0" } +0x8237B780 = { name = "rex_sub_8237B780" } +0x8237B7A8 = { name = "rex_sub_8237B7A8" } +0x8237B7D8 = { name = "rex_sub_8237B7D8" } +0x8237B820 = { name = "rex_sub_8237B820" } +0x8237B890 = { name = "rex_sub_8237B890" } +0x8237B8B0 = { name = "rex_sub_8237B8B0" } +0x8237B8D8 = { name = "rex_sub_8237B8D8" } +0x8237B918 = { name = "rex_sub_8237B918" } +0x8237B960 = { name = "rex_sub_8237B960" } +0x8237B9A8 = { name = "rex_sub_8237B9A8" } +0x8237BA60 = { name = "rex_sub_8237BA60" } +0x8237BAF0 = { name = "rex_sub_8237BAF0" } +0x8237BB20 = { name = "rex_sub_8237BB20" } +0x8237BBB8 = { name = "rex_sub_8237BBB8" } +0x8237BC60 = { name = "rex_sub_8237BC60" } +0x8237BCC0 = { name = "rex_sub_8237BCC0" } +0x8237BCE8 = { name = "rex_sub_8237BCE8" } +0x8237BDA8 = { name = "rex_sub_8237BDA8" } +0x8237BE40 = { name = "rex_sub_8237BE40" } +0x8237BEC0 = { name = "rex_sub_8237BEC0" } +0x8237BF38 = { name = "rex_sub_8237BF38" } +0x8237BFF0 = { name = "rex_sub_8237BFF0" } +0x8237C1D0 = { name = "rex_sub_8237C1D0" } +0x8237C240 = { name = "rex_sub_8237C240" } +0x8237C320 = { name = "rex_sub_8237C320" } +0x8237C370 = { name = "rex_sub_8237C370" } +0x8237C3C0 = { name = "rex_sub_8237C3C0" } +0x8237C4D0 = { name = "rex_sub_8237C4D0" } +0x8237C520 = { name = "rex_sub_8237C520" } +0x8237C5A8 = { name = "rex_sub_8237C5A8" } +0x8237C628 = { name = "rex_sub_8237C628" } +0x8237C6A8 = { name = "rex_sub_8237C6A8" } +0x8237C770 = { name = "rex_sub_8237C770" } +0x8237CCD0 = { name = "rex_sub_8237CCD0" } +0x8237CD00 = { name = "rex_sub_8237CD00" } +0x8237CD48 = { name = "rex_sub_8237CD48" } +0x8237CD90 = { name = "rex_sub_8237CD90" } +0x8237CDD8 = { name = "rex_sub_8237CDD8" } +0x8237CE20 = { name = "rex_sub_8237CE20" } +0x8237CE98 = { name = "rex_sub_8237CE98" } +0x8237CF08 = { name = "rex_sub_8237CF08" } +0x8237CF78 = { name = "rex_sub_8237CF78" } +0x8237D108 = { name = "rex_sub_8237D108" } +0x8237D2A0 = { name = "rex_sub_8237D2A0" } +0x8237D448 = { name = "rex_sub_8237D448" } +0x8237D5B0 = { name = "rex_sub_8237D5B0" } +0x8237D630 = { name = "rex_sub_8237D630" } +0x8237D6A8 = { name = "rex_sub_8237D6A8" } +0x8237D720 = { name = "rex_sub_8237D720" } +0x8237D808 = { name = "rex_sub_8237D808" } +0x8237D848 = { name = "rex_sub_8237D848" } +0x8237D8C0 = { name = "rex_sub_8237D8C0" } +0x8237D908 = { name = "rex_sub_8237D908" } +0x8237D9B0 = { name = "rex_sub_8237D9B0" } +0x8237DA10 = { name = "rex_sub_8237DA10" } +0x8237DA58 = { name = "rex_sub_8237DA58" } +0x8237DA88 = { name = "rex_sub_8237DA88" } +0x8237DB18 = { name = "rex_sub_8237DB18" } +0x8237DB60 = { name = "rex_sub_8237DB60" } +0x8237DBA8 = { name = "rex_sub_8237DBA8" } +0x8237DDD0 = { name = "rex_sub_8237DDD0" } +0x8237DEC0 = { name = "rex_sub_8237DEC0" } +0x8237DF30 = { name = "rex_sub_8237DF30" } +0x8237E138 = { name = "rex_sub_8237E138" } +0x8237E1A0 = { name = "rex_sub_8237E1A0" } +0x8237E2A8 = { name = "rex_sub_8237E2A8" } +0x8237E300 = { name = "rex_sub_8237E300" } +0x8237E378 = { name = "rex_sub_8237E378" } +0x8237E568 = { name = "rex_sub_8237E568" } +0x8237E5C0 = { name = "rex_sub_8237E5C0" } +0x8237E6D0 = { name = "rex_sub_8237E6D0" } +0x8237E710 = { name = "rex_sub_8237E710" } +0x8237E818 = { name = "rex_sub_8237E818" } +0x8237E8D8 = { name = "rex_sub_8237E8D8" } +0x8237E948 = { name = "rex_sub_8237E948" } +0x8237E9A8 = { name = "rex_sub_8237E9A8" } +0x8237E9E8 = { name = "rex_sub_8237E9E8" } +0x8237EA68 = { name = "rex_sub_8237EA68" } +0x8237EB10 = { name = "rex_sub_8237EB10" } +0x8237EB20 = { name = "rex_sub_8237EB20" } +0x8237EB30 = { name = "rex_sub_8237EB30" } +0x8237EC28 = { name = "rex_sub_8237EC28" } +0x8237ECC8 = { name = "rex_sub_8237ECC8" } +0x8237ED38 = { name = "rex_sub_8237ED38" } +0x8237EDA0 = { name = "rex_sub_8237EDA0" } +0x8237EE70 = { name = "rex_sub_8237EE70" } +0x8237EFF0 = { name = "rex_sub_8237EFF0" } +0x8237F088 = { name = "rex_sub_8237F088" } +0x8237F120 = { name = "rex_sub_8237F120" } +0x8237F208 = { name = "rex_sub_8237F208" } +0x8237F218 = { name = "rex_sub_8237F218" } +0x8237F268 = { name = "rex_sub_8237F268" } +0x8237F2C8 = { name = "rex_sub_8237F2C8" } +0x8237F358 = { name = "rex_sub_8237F358" } +0x8237F380 = { name = "rex_sub_8237F380" } +0x8237F3E0 = { name = "rex_sub_8237F3E0" } +0x8237F448 = { name = "rex_sub_8237F448" } +0x8237F4E0 = { name = "rex_sub_8237F4E0" } +0x8237F740 = { name = "rex_sub_8237F740" } +0x8237F7D8 = { name = "rex_sub_8237F7D8" } +0x8237F850 = { name = "rex_sub_8237F850" } +0x8237F8C8 = { name = "rex_sub_8237F8C8" } +0x8237F978 = { name = "rex_sub_8237F978" } +0x8237F9F0 = { name = "rex_sub_8237F9F0" } +0x8237FA50 = { name = "rex_sub_8237FA50" } +0x8237FB58 = { name = "rex_sub_8237FB58" } +0x8237FB88 = { name = "rex_sub_8237FB88" } +0x8237FB90 = { name = "rex_sub_8237FB90" } +0x8237FBE8 = { name = "rex_sub_8237FBE8" } +0x8237FCD8 = { name = "rex_sub_8237FCD8" } +0x8237FD20 = { name = "rex_sub_8237FD20" } +0x8237FD28 = { name = "rex_sub_8237FD28" } +0x8237FE10 = { name = "rex_sub_8237FE10" } +0x8237FF40 = { name = "rex_sub_8237FF40" } +0x82380088 = { name = "rex_sub_82380088" } +0x82380150 = { name = "rex_sub_82380150" } +0x82380158 = { name = "rex_sub_82380158" } +0x823801B8 = { name = "rex_sub_823801B8" } +0x82380280 = { name = "rex_sub_82380280" } +0x823802B0 = { name = "rex_sub_823802B0" } +0x823802F8 = { name = "rex_sub_823802F8" } +0x82380368 = { name = "rex_sub_82380368" } +0x823804F0 = { name = "rex_sub_823804F0" } +0x823809F0 = { name = "rex_sub_823809F0" } +0x82380AB0 = { name = "rex_sub_82380AB0" } +0x82380B80 = { name = "rex_sub_82380B80" } +0x82380C58 = { name = "rex_sub_82380C58" } +0x82380CA0 = { name = "rex_sub_82380CA0" } +0x82380CE8 = { name = "rex_sub_82380CE8" } +0x82380D08 = { name = "rex_sub_82380D08" } +0x82380D48 = { name = "rex_sub_82380D48" } +0x82380ED0 = { name = "rex_sub_82380ED0" } +0x82381070 = { name = "rex_sub_82381070" } +0x82381078 = { name = "rex_sub_82381078" } +0x823811F8 = { name = "rex_sub_823811F8" } +0x82381228 = { name = "rex_sub_82381228" } +0x82381270 = { name = "rex_sub_82381270" } +0x823812D8 = { name = "rex_sub_823812D8" } +0x82381320 = { name = "rex_sub_82381320" } +0x82381348 = { name = "rex_sub_82381348" } +0x82381448 = { name = "rex_sub_82381448" } +0x823815F0 = { name = "rex_sub_823815F0" } +0x82381828 = { name = "rex_sub_82381828" } +0x823819B0 = { name = "rex_sub_823819B0" } +0x823819F0 = { name = "rex_sub_823819F0" } +0x82381CE8 = { name = "rex_sub_82381CE8" } +0x82381D08 = { name = "rex_sub_82381D08" } +0x82381DE0 = { name = "rex_sub_82381DE0" } +0x82381EB8 = { name = "rex_sub_82381EB8" } +0x82381F98 = { name = "rex_sub_82381F98" } +0x82381FA8 = { name = "rex_sub_82381FA8" } +0x823820C8 = { name = "rex_sub_823820C8" } +0x82382178 = { name = "rex_sub_82382178" } +0x82382190 = { name = "rex_sub_82382190" } +0x823821D0 = { name = "rex_sub_823821D0" } +0x823822B8 = { name = "rex_sub_823822B8" } +0x82382308 = { name = "rex_sub_82382308" } +0x82382370 = { name = "rex_sub_82382370" } +0x823823D8 = { name = "rex_sub_823823D8" } +0x823824F8 = { name = "rex_sub_823824F8" } +0x82382520 = { name = "rex_sub_82382520" } +0x823825A0 = { name = "rex_sub_823825A0" } +0x82382710 = { name = "rex_sub_82382710" } +0x82382828 = { name = "rex_sub_82382828" } +0x82382990 = { name = "rex_sub_82382990" } +0x82382A90 = { name = "rex_sub_82382A90" } +0x82382F18 = { name = "rex_sub_82382F18" } +0x82382FC0 = { name = "rex_sub_82382FC0" } +0x82383058 = { name = "rex_sub_82383058" } +0x82383060 = { name = "rex_sub_82383060" } +0x823830F0 = { name = "rex_sub_823830F0" } +0x82383190 = { name = "rex_sub_82383190" } +0x823831D8 = { name = "rex_sub_823831D8" } +0x823831E0 = { name = "rex_sub_823831E0" } +0x823831E8 = { name = "rex_sub_823831E8" } +0x823831F0 = { name = "rex_sub_823831F0" } +0x82383250 = { name = "rex_sub_82383250" } +0x82383370 = { name = "rex_sub_82383370" } +0x823833B0 = { name = "rex_sub_823833B0" } +0x823833C0 = { name = "rex_sub_823833C0" } +0x823833D0 = { name = "rex_sub_823833D0" } +0x82383438 = { name = "rex_sub_82383438" } +0x82383480 = { name = "rex_sub_82383480" } +0x823834F8 = { name = "rex_sub_823834F8" } +0x823835B8 = { name = "rex_sub_823835B8" } +0x823835F8 = { name = "rex_sub_823835F8" } +0x823836A8 = { name = "rex_sub_823836A8" } +0x82383740 = { name = "rex_sub_82383740" } +0x82383870 = { name = "rex_sub_82383870" } +0x82383930 = { name = "rex_sub_82383930" } +0x82383980 = { name = "rex_sub_82383980" } +0x82383D48 = { name = "rex_sub_82383D48" } +0x82383FC8 = { name = "rex_sub_82383FC8" } +0x823840E8 = { name = "rex_sub_823840E8" } +0x823840F8 = { name = "rex_sub_823840F8" } +0x82384140 = { name = "rex_sub_82384140" } +0x823841C8 = { name = "rex_sub_823841C8" } +0x82384278 = { name = "rex_sub_82384278" } +0x823842A0 = { name = "rex_sub_823842A0" } +0x823844A0 = { name = "rex_sub_823844A0" } +0x823844D8 = { name = "rex_sub_823844D8" } +0x823844E8 = { name = "rex_sub_823844E8" } +0x82384610 = { name = "rex_sub_82384610" } +0x82384650 = { name = "rex_sub_82384650" } +0x82384688 = { name = "rex_sub_82384688" } +0x823846A0 = { name = "rex_sub_823846A0" } +0x823846D8 = { name = "rex_sub_823846D8" } +0x823846F0 = { name = "rex_sub_823846F0" } +0x82384788 = { name = "rex_sub_82384788" } +0x82384808 = { name = "rex_sub_82384808" } +0x82384980 = { name = "rex_sub_82384980" } +0x823849F0 = { name = "rex_sub_823849F0" } +0x82384AAC = { name = "rex_sub_82384AAC" } +0x82384AE8 = { name = "rex_sub_82384AE8" } +0x82384AF0 = { name = "rex_sub_82384AF0" } +0x82384B20 = { name = "rex_sub_82384B20" } +0x82384B48 = { name = "rex_sub_82384B48" } +0x82384B68 = { name = "rex_sub_82384B68" } +0x82384B70 = { name = "rex_sub_82384B70" } +0x82384C08 = { name = "rex_sub_82384C08" } +0x82384D08 = { name = "rex_sub_82384D08" } +0x82384D88 = { name = "rex_sub_82384D88" } +0x82384E48 = { name = "rex_sub_82384E48" } +0x82384FA0 = { name = "rex_sub_82384FA0" } +0x82385058 = { name = "rex_sub_82385058" } +0x823850B0 = { name = "rex_sub_823850B0" } +0x82385680 = { name = "rex_sub_82385680" } +0x823856B4 = { name = "rex_sub_823856B4" } +0x823856D8 = { name = "rex_sub_823856D8" } +0x823857D8 = { name = "rex_sub_823857D8" } +0x823857E0 = { name = "rex_sub_823857E0" } +0x823858D8 = { name = "rex_sub_823858D8" } +0x823858F8 = { name = "rex_sub_823858F8" } +0x82385918 = { name = "rex_sub_82385918" } +0x82385938 = { name = "rex_sub_82385938" } +0x82385948 = { name = "rex_sub_82385948" } +0x82385978 = { name = "rex_sub_82385978" } +0x82385998 = { name = "rex_sub_82385998" } +0x823859A8 = { name = "rex_sub_823859A8" } +0x82385A10 = { name = "rex_sub_82385A10" } +0x82385A48 = { name = "rex_sub_82385A48" } +0x82385A80 = { name = "rex_sub_82385A80" } +0x82385AF0 = { name = "rex_sub_82385AF0" } +0x82385B60 = { name = "rex_sub_82385B60" } +0x82385C38 = { name = "rex_sub_82385C38" } +0x82385CA8 = { name = "rex_sub_82385CA8" } +0x82385D70 = { name = "rex_sub_82385D70" } +0x82385F48 = { name = "rex_sub_82385F48" } +0x82385FE0 = { name = "rex_sub_82385FE0" } +0x82386078 = { name = "rex_sub_82386078" } +0x82386BF8 = { name = "rex_sub_82386BF8" } +0x82386C08 = { name = "rex_sub_82386C08" } +0x82386C50 = { name = "rex_sub_82386C50" } +0x82386CD8 = { name = "rex_sub_82386CD8" } +0x82386D20 = { name = "rex_sub_82386D20" } +0x82386D50 = { name = "rex_sub_82386D50" } +0x82386D60 = { name = "rex_sub_82386D60" } +0x82386D88 = { name = "rex_sub_82386D88" } +0x82386DA0 = { name = "rex_sub_82386DA0" } +0x82386E28 = { name = "rex_sub_82386E28" } +0x82386F10 = { name = "rex_sub_82386F10" } +0x82386F50 = { name = "rex_sub_82386F50" } +0x82387058 = { name = "rex_sub_82387058" } +0x82387BF0 = { name = "rex_sub_82387BF0" } +0x82387CD8 = { name = "rex_sub_82387CD8" } +0x82387D40 = { name = "rex_sub_82387D40" } +0x82387DA8 = { name = "rex_sub_82387DA8" } +0x823888F0 = { name = "rex_sub_823888F0" } +0x82388A68 = { name = "rex_sub_82388A68" } +0x82388AC8 = { name = "rex_sub_82388AC8" } +0x82388AD0 = { name = "rex_sub_82388AD0" } +0x82388AE0 = { name = "rex_sub_82388AE0" } +0x82388D60 = { name = "rex_sub_82388D60" } +0x82388E78 = { name = "rex_sub_82388E78" } +0x823892C0 = { name = "rex_sub_823892C0" } +0x82389498 = { name = "rex_sub_82389498" } +0x82389588 = { name = "rex_sub_82389588" } +0x82389780 = { name = "rex_sub_82389780" } +0x82389808 = { name = "rex_sub_82389808" } +0x82389878 = { name = "rex_sub_82389878" } +0x82389898 = { name = "rex_sub_82389898" } +0x823899A8 = { name = "rex_sub_823899A8" } +0x823899D8 = { name = "rex_sub_823899D8" } +0x82389A40 = { name = "rex_sub_82389A40" } +0x82389AA0 = { name = "rex_sub_82389AA0" } +0x82389AF0 = { name = "rex_sub_82389AF0" } +0x82389B08 = { name = "rex_sub_82389B08" } +0x82389B18 = { name = "rex_sub_82389B18" } +0x82389B48 = { name = "rex_sub_82389B48" } +0x82389BF8 = { name = "rex_sub_82389BF8" } +0x82389C60 = { name = "rex_sub_82389C60" } +0x8238A068 = { name = "rex_sub_8238A068" } +0x8238A2C0 = { name = "rex_sub_8238A2C0" } +0x8238A308 = { name = "rex_sub_8238A308" } +0x8238A350 = { name = "rex_sub_8238A350" } +0x8238A458 = { name = "rex_sub_8238A458" } +0x8238A4D8 = { name = "rex_sub_8238A4D8" } +0x8238A5C0 = { name = "rex_sub_8238A5C0" } +0x8238A5F0 = { name = "rex_sub_8238A5F0" } +0x8238A624 = { name = "rex_sub_8238A624" } +0x8238A668 = { name = "rex_sub_8238A668" } +0x8238A738 = { name = "rex_sub_8238A738" } +0x8238A750 = { name = "rex_sub_8238A750" } +0x8238AA14 = { name = "rex_sub_8238AA14" } +0x8238AA58 = { name = "rex_sub_8238AA58" } +0x8238AC60 = { name = "rex_sub_8238AC60" } +0x8238AD28 = { name = "rex_sub_8238AD28" } +0x8238AD88 = { name = "rex_sub_8238AD88" } +0x8238ADE8 = { name = "rex_sub_8238ADE8" } +0x8238AED0 = { name = "rex_sub_8238AED0" } +0x8238B130 = { name = "rex_sub_8238B130" } +0x8238B28C = { name = "rex_sub_8238B28C" } +0x8238B2D0 = { name = "rex_sub_8238B2D0" } +0x8238B420 = { name = "rex_sub_8238B420" } +0x8238B458 = { name = "rex_sub_8238B458" } +0x8238B510 = { name = "rex_sub_8238B510" } +0x8238B550 = { name = "rex_sub_8238B550" } +0x8238B570 = { name = "rex_sub_8238B570" } +0x8238B620 = { name = "rex_sub_8238B620" } +0x8238B6A0 = { name = "rex_sub_8238B6A0" } +0x8238B878 = { name = "rex_sub_8238B878" } +0x8238B8C0 = { name = "rex_sub_8238B8C0" } +0x8238B970 = { name = "rex_sub_8238B970" } +0x8238BA40 = { name = "rex_sub_8238BA40" } +0x8238BCD0 = { name = "rex_sub_8238BCD0" } +0x8238BE00 = { name = "rex_sub_8238BE00" } +0x8238BF48 = { name = "rex_sub_8238BF48" } +0x8238C0B8 = { name = "rex_sub_8238C0B8" } +0x8238C378 = { name = "rex_sub_8238C378" } +0x8238C590 = { name = "rex_sub_8238C590" } +0x8238CF10 = { name = "rex_sub_8238CF10" } +0x8238D008 = { name = "rex_sub_8238D008" } +0x8238D018 = { name = "rex_sub_8238D018" } +0x8238D0E8 = { name = "rex_sub_8238D0E8" } +0x8238D248 = { name = "rex_sub_8238D248" } +0x8238D280 = { name = "rex_sub_8238D280" } +0x8238D308 = { name = "rex_sub_8238D308" } +0x8238D430 = { name = "rex_sub_8238D430" } +0x8238D438 = { name = "rex_sub_8238D438" } +0x8238D458 = { name = "rex_sub_8238D458" } +0x8238D468 = { name = "rex_sub_8238D468" } +0x8238D4F8 = { name = "rex_sub_8238D4F8" } +0x8238D558 = { name = "rex_sub_8238D558" } +0x8238DC70 = { name = "rex_sub_8238DC70" } +0x8238E388 = { name = "rex_sub_8238E388" } +0x8238E678 = { name = "rex_sub_8238E678" } +0x8238E7B0 = { name = "rex_sub_8238E7B0" } +0x8238E7C0 = { name = "rex_sub_8238E7C0" } +0x8238E810 = { name = "rex_sub_8238E810" } +0x8238E868 = { name = "rex_sub_8238E868" } +0x8238E880 = { name = "rex_sub_8238E880" } +0x8238E928 = { name = "rex_sub_8238E928" } +0x8238E9D0 = { name = "rex_sub_8238E9D0" } +0x8238EB60 = { name = "rex_sub_8238EB60" } +0x8238EC40 = { name = "rex_sub_8238EC40" } +0x8238ECE0 = { name = "rex_sub_8238ECE0" } +0x8238ECE8 = { name = "rex_sub_8238ECE8" } +0x8238ED68 = { name = "rex_sub_8238ED68" } +0x8238ED98 = { name = "rex_sub_8238ED98" } +0x8238EDB0 = { name = "rex_sub_8238EDB0" } +0x8238EE70 = { name = "rex_sub_8238EE70" } +0x8238EF54 = { name = "rex_sub_8238EF54" } +0x8238EF90 = { name = "rex_sub_8238EF90" } +0x8238F028 = { name = "rex_sub_8238F028" } +0x8238F100 = { name = "rex_sub_8238F100" } +0x8238F200 = { name = "rex_sub_8238F200" } +0x8238F230 = { name = "rex_sub_8238F230" } +0x8238F28C = { name = "rex_sub_8238F28C" } +0x8238F350 = { name = "rex_sub_8238F350" } +0x8238F3FC = { name = "rex_sub_8238F3FC" } +0x8238F420 = { name = "rex_sub_8238F420" } +0x8238F448 = { name = "rex_sub_8238F448" } +0x8238F6D8 = { name = "rex_sub_8238F6D8" } +0x8238F8B0 = { name = "rex_sub_8238F8B0" } +0x82390510 = { name = "rex_sub_82390510" } +0x823905F8 = { name = "rex_sub_823905F8" } +0x82390738 = { name = "rex_sub_82390738" } +0x82390770 = { name = "rex_sub_82390770" } +0x823907E0 = { name = "rex_sub_823907E0" } +0x823907F8 = { name = "rex_sub_823907F8" } +0x82390870 = { name = "rex_sub_82390870" } +0x82390880 = { name = "rex_sub_82390880" } +0x82390928 = { name = "rex_sub_82390928" } +0x82390A38 = { name = "rex_sub_82390A38" } +0x82390A70 = { name = "rex_sub_82390A70" } +0x82390AB0 = { name = "rex_sub_82390AB0" } +0x82390B18 = { name = "rex_sub_82390B18" } +0x82390B40 = { name = "rex_sub_82390B40" } +0x82390BC8 = { name = "rex_sub_82390BC8" } +0x82390C10 = { name = "rex_sub_82390C10" } +0x82390C50 = { name = "rex_sub_82390C50" } +0x82390CE0 = { name = "rex_sub_82390CE0" } +0x82390CF0 = { name = "rex_sub_82390CF0" } +0x82390DB8 = { name = "rex_sub_82390DB8" } +0x82390DF8 = { name = "rex_sub_82390DF8" } +0x82390E78 = { name = "rex_sub_82390E78" } +0x82390EC8 = { name = "rex_sub_82390EC8" } +0x82390F48 = { name = "rex_sub_82390F48" } +0x82391080 = { name = "rex_sub_82391080" } +0x82391248 = { name = "rex_sub_82391248" } +0x82391338 = { name = "rex_sub_82391338" } +0x823913F8 = { name = "rex_sub_823913F8" } +0x82391508 = { name = "rex_sub_82391508" } +0x82391588 = { name = "rex_sub_82391588" } +0x82391678 = { name = "rex_sub_82391678" } +0x82391718 = { name = "rex_sub_82391718" } +0x823917C0 = { name = "rex_sub_823917C0" } +0x823917F8 = { name = "rex_sub_823917F8" } +0x82391A40 = { name = "rex_sub_82391A40" } +0x82391E80 = { name = "rex_sub_82391E80" } +0x82391EC8 = { name = "rex_sub_82391EC8" } +0x82391F38 = { name = "rex_sub_82391F38" } +0x82392040 = { name = "rex_sub_82392040" } +0x823923A8 = { name = "rex_sub_823923A8" } +0x823923C8 = { name = "rex_sub_823923C8" } +0x82392508 = { name = "rex_sub_82392508" } +0x82392518 = { name = "rex_sub_82392518" } +0x82392580 = { name = "rex_sub_82392580" } +0x82392620 = { name = "rex_sub_82392620" } +0x823926B0 = { name = "rex_sub_823926B0" } +0x82392708 = { name = "rex_sub_82392708" } +0x82392748 = { name = "rex_sub_82392748" } +0x823927C8 = { name = "rex_sub_823927C8" } +0x82392838 = { name = "rex_sub_82392838" } +0x82392878 = { name = "rex_sub_82392878" } +0x82392978 = { name = "rex_sub_82392978" } +0x82392D78 = { name = "rex_sub_82392D78" } +0x82392E58 = { name = "rex_sub_82392E58" } +0x82392E78 = { name = "rex_sub_82392E78" } +0x82392F60 = { name = "rex_sub_82392F60" } +0x82392F68 = { name = "rex_sub_82392F68" } +0x82392FB8 = { name = "rex_sub_82392FB8" } +0x82393008 = { name = "rex_sub_82393008" } +0x82393150 = { name = "rex_sub_82393150" } +0x823931A0 = { name = "rex_sub_823931A0" } +0x82393200 = { name = "rex_sub_82393200" } +0x823932B8 = { name = "rex_sub_823932B8" } +0x82393320 = { name = "rex_sub_82393320" } +0x823933F0 = { name = "rex_sub_823933F0" } +0x823933F8 = { name = "rex_sub_823933F8" } +0x82393508 = { name = "rex_sub_82393508" } +0x823935C0 = { name = "rex_sub_823935C0" } +0x82393660 = { name = "rex_sub_82393660" } +0x82393740 = { name = "rex_sub_82393740" } +0x823937E0 = { name = "rex_sub_823937E0" } +0x82393920 = { name = "rex_sub_82393920" } +0x82393988 = { name = "rex_sub_82393988" } +0x82393A70 = { name = "rex_sub_82393A70" } +0x82393BD8 = { name = "rex_sub_82393BD8" } +0x82393C00 = { name = "rex_sub_82393C00" } +0x82393C60 = { name = "rex_sub_82393C60" } +0x82393CC8 = { name = "rex_sub_82393CC8" } +0x82393D20 = { name = "rex_sub_82393D20" } +0x82393D48 = { name = "rex_sub_82393D48" } +0x82393D98 = { name = "rex_sub_82393D98" } +0x82393E30 = { name = "rex_sub_82393E30" } +0x82393EB8 = { name = "rex_sub_82393EB8" } +0x82393F08 = { name = "rex_sub_82393F08" } +0x82393F30 = { name = "rex_sub_82393F30" } +0x82393F90 = { name = "rex_sub_82393F90" } +0x82393FF8 = { name = "rex_sub_82393FF8" } +0x82394020 = { name = "rex_sub_82394020" } +0x82394078 = { name = "rex_sub_82394078" } +0x823940C8 = { name = "rex_sub_823940C8" } +0x82394118 = { name = "rex_sub_82394118" } +0x823941B0 = { name = "rex_sub_823941B0" } +0x82394238 = { name = "rex_sub_82394238" } +0x82394280 = { name = "rex_sub_82394280" } +0x82394310 = { name = "rex_sub_82394310" } +0x82394390 = { name = "rex_sub_82394390" } +0x823946C0 = { name = "rex_sub_823946C0" } +0x82394A90 = { name = "rex_sub_82394A90" } +0x82394E50 = { name = "rex_sub_82394E50" } +0x82395210 = { name = "rex_sub_82395210" } +0x823956E8 = { name = "rex_sub_823956E8" } +0x82395CA0 = { name = "rex_sub_82395CA0" } +0x823961E8 = { name = "rex_sub_823961E8" } +0x82396820 = { name = "rex_sub_82396820" } +0x82396D70 = { name = "rex_sub_82396D70" } +0x82396DC0 = { name = "rex_sub_82396DC0" } +0x82396E60 = { name = "rex_sub_82396E60" } +0x82396EC0 = { name = "rex_sub_82396EC0" } +0x82396F30 = { name = "rex_sub_82396F30" } +0x82396F90 = { name = "rex_sub_82396F90" } +0x82397000 = { name = "rex_sub_82397000" } +0x82397060 = { name = "rex_sub_82397060" } +0x823970D0 = { name = "rex_sub_823970D0" } +0x82397130 = { name = "rex_sub_82397130" } +0x82397188 = { name = "rex_sub_82397188" } +0x823971E8 = { name = "rex_sub_823971E8" } +0x82397240 = { name = "rex_sub_82397240" } +0x823972A0 = { name = "rex_sub_823972A0" } +0x82397300 = { name = "rex_sub_82397300" } +0x82397358 = { name = "rex_sub_82397358" } +0x823973B8 = { name = "rex_sub_823973B8" } +0x82397418 = { name = "rex_sub_82397418" } +0x82397780 = { name = "rex_sub_82397780" } +0x823979A8 = { name = "rex_sub_823979A8" } +0x82397BD8 = { name = "rex_sub_82397BD8" } +0x82397C08 = { name = "rex_sub_82397C08" } +0x82397E38 = { name = "rex_sub_82397E38" } +0x82397E90 = { name = "rex_sub_82397E90" } +0x82397EC8 = { name = "rex_sub_82397EC8" } +0x82398100 = { name = "rex_sub_82398100" } +0x82398248 = { name = "rex_sub_82398248" } +0x823984B8 = { name = "rex_sub_823984B8" } +0x82398520 = { name = "rex_sub_82398520" } +0x823985E0 = { name = "rex_sub_823985E0" } +0x823987D8 = { name = "rex_sub_823987D8" } +0x823989D8 = { name = "rex_sub_823989D8" } +0x82398BA0 = { name = "rex_sub_82398BA0" } +0x82398FB8 = { name = "rex_sub_82398FB8" } +0x823994E0 = { name = "rex_sub_823994E0" } +0x82399650 = { name = "rex_sub_82399650" } +0x82399740 = { name = "rex_sub_82399740" } +0x82399988 = { name = "rex_sub_82399988" } +0x82399AB0 = { name = "rex_sub_82399AB0" } +0x82399FF0 = { name = "rex_sub_82399FF0" } +0x8239A290 = { name = "rex_sub_8239A290" } +0x8239A6E0 = { name = "rex_sub_8239A6E0" } +0x8239A9C0 = { name = "rex_sub_8239A9C0" } +0x8239AB68 = { name = "rex_sub_8239AB68" } +0x8239AEF0 = { name = "rex_sub_8239AEF0" } +0x8239B100 = { name = "rex_sub_8239B100" } +0x8239B178 = { name = "rex_sub_8239B178" } +0x8239B260 = { name = "rex_sub_8239B260" } +0x8239B328 = { name = "rex_sub_8239B328" } +0x8239B3B8 = { name = "rex_sub_8239B3B8" } +0x8239B428 = { name = "rex_sub_8239B428" } +0x8239B4D8 = { name = "rex_sub_8239B4D8" } +0x8239B590 = { name = "rex_sub_8239B590" } +0x8239B688 = { name = "rex_sub_8239B688" } +0x8239B770 = { name = "rex_sub_8239B770" } +0x8239B7C0 = { name = "rex_sub_8239B7C0" } +0x8239B810 = { name = "rex_sub_8239B810" } +0x8239B8D0 = { name = "rex_sub_8239B8D0" } +0x8239B9D0 = { name = "rex_sub_8239B9D0" } +0x8239BA40 = { name = "rex_sub_8239BA40" } +0x8239BAF0 = { name = "rex_sub_8239BAF0" } +0x8239BBB8 = { name = "rex_sub_8239BBB8" } +0x8239BC38 = { name = "rex_sub_8239BC38" } +0x8239BCE8 = { name = "rex_sub_8239BCE8" } +0x8239BD30 = { name = "rex_sub_8239BD30" } +0x8239BDC0 = { name = "rex_sub_8239BDC0" } +0x8239BEC8 = { name = "rex_sub_8239BEC8" } +0x8239BFE0 = { name = "rex_sub_8239BFE0" } +0x8239C110 = { name = "rex_sub_8239C110" } +0x8239C1A0 = { name = "rex_sub_8239C1A0" } +0x8239C220 = { name = "rex_sub_8239C220" } +0x8239C2C8 = { name = "rex_sub_8239C2C8" } +0x8239C3C0 = { name = "rex_sub_8239C3C0" } +0x8239C4F0 = { name = "rex_sub_8239C4F0" } +0x8239C600 = { name = "rex_sub_8239C600" } +0x8239C710 = { name = "rex_sub_8239C710" } +0x8239C828 = { name = "rex_sub_8239C828" } +0x8239C938 = { name = "rex_sub_8239C938" } +0x8239CA50 = { name = "rex_sub_8239CA50" } +0x8239CB68 = { name = "rex_sub_8239CB68" } +0x8239CC80 = { name = "rex_sub_8239CC80" } +0x8239CD98 = { name = "rex_sub_8239CD98" } +0x8239CEB0 = { name = "rex_sub_8239CEB0" } +0x8239CFC8 = { name = "rex_sub_8239CFC8" } +0x8239D0F0 = { name = "rex_sub_8239D0F0" } +0x8239D218 = { name = "rex_sub_8239D218" } +0x8239D340 = { name = "rex_sub_8239D340" } +0x8239D458 = { name = "rex_sub_8239D458" } +0x8239D500 = { name = "rex_sub_8239D500" } +0x8239D640 = { name = "rex_sub_8239D640" } +0x8239D780 = { name = "rex_sub_8239D780" } +0x8239D8A0 = { name = "rex_sub_8239D8A0" } +0x8239D9C8 = { name = "rex_sub_8239D9C8" } +0x8239DAF0 = { name = "rex_sub_8239DAF0" } +0x8239DC18 = { name = "rex_sub_8239DC18" } +0x8239DD38 = { name = "rex_sub_8239DD38" } +0x8239DE58 = { name = "rex_sub_8239DE58" } +0x8239DF80 = { name = "rex_sub_8239DF80" } +0x8239E0A8 = { name = "rex_sub_8239E0A8" } +0x8239E190 = { name = "rex_sub_8239E190" } +0x8239E2A8 = { name = "rex_sub_8239E2A8" } +0x8239E350 = { name = "rex_sub_8239E350" } +0x8239E478 = { name = "rex_sub_8239E478" } +0x8239E598 = { name = "rex_sub_8239E598" } +0x8239E640 = { name = "rex_sub_8239E640" } +0x8239E728 = { name = "rex_sub_8239E728" } +0x8239E818 = { name = "rex_sub_8239E818" } +0x8239E8B8 = { name = "rex_sub_8239E8B8" } +0x8239E970 = { name = "rex_sub_8239E970" } +0x8239EA78 = { name = "rex_sub_8239EA78" } +0x8239EB18 = { name = "rex_sub_8239EB18" } +0x8239EBB8 = { name = "rex_sub_8239EBB8" } +0x8239EC58 = { name = "rex_sub_8239EC58" } +0x8239ED08 = { name = "rex_sub_8239ED08" } +0x8239EDB8 = { name = "rex_sub_8239EDB8" } +0x8239EE68 = { name = "rex_sub_8239EE68" } +0x8239EF18 = { name = "rex_sub_8239EF18" } +0x8239F020 = { name = "rex_sub_8239F020" } +0x8239F270 = { name = "rex_sub_8239F270" } +0x8239F320 = { name = "rex_sub_8239F320" } +0x8239F3E0 = { name = "rex_sub_8239F3E0" } +0x8239F480 = { name = "rex_sub_8239F480" } +0x8239F520 = { name = "rex_sub_8239F520" } +0x8239F5C0 = { name = "rex_sub_8239F5C0" } +0x8239F660 = { name = "rex_sub_8239F660" } +0x8239F710 = { name = "rex_sub_8239F710" } +0x8239F7C0 = { name = "rex_sub_8239F7C0" } +0x8239F878 = { name = "rex_sub_8239F878" } +0x8239F8F0 = { name = "rex_sub_8239F8F0" } +0x8239FA38 = { name = "rex_sub_8239FA38" } +0x8239FAF0 = { name = "rex_sub_8239FAF0" } +0x8239FC18 = { name = "rex_sub_8239FC18" } +0x8239FD88 = { name = "rex_sub_8239FD88" } +0x8239FF18 = { name = "rex_sub_8239FF18" } +0x823A00A8 = { name = "rex_sub_823A00A8" } +0x823A0238 = { name = "rex_sub_823A0238" } +0x823A0240 = { name = "rex_sub_823A0240" } +0x823A0298 = { name = "rex_sub_823A0298" } +0x823A02D0 = { name = "rex_sub_823A02D0" } +0x823A0318 = { name = "rex_sub_823A0318" } +0x823A06A8 = { name = "rex_sub_823A06A8" } +0x823A0718 = { name = "rex_sub_823A0718" } +0x823A07C0 = { name = "rex_sub_823A07C0" } +0x823A0888 = { name = "rex_sub_823A0888" } +0x823A0DF8 = { name = "rex_sub_823A0DF8" } +0x823A1178 = { name = "rex_sub_823A1178" } +0x823A16A0 = { name = "rex_sub_823A16A0" } +0x823A1A80 = { name = "rex_sub_823A1A80" } +0x823A1CC8 = { name = "rex_sub_823A1CC8" } +0x823A1F80 = { name = "rex_sub_823A1F80" } +0x823A2088 = { name = "rex_sub_823A2088" } +0x823A20C0 = { name = "rex_sub_823A20C0" } +0x823A2110 = { name = "rex_sub_823A2110" } +0x823A2188 = { name = "rex_sub_823A2188" } +0x823A21E0 = { name = "rex_sub_823A21E0" } +0x823A2218 = { name = "rex_sub_823A2218" } +0x823A2308 = { name = "rex_sub_823A2308" } +0x823A23F8 = { name = "rex_sub_823A23F8" } +0x823A2418 = { name = "rex_sub_823A2418" } +0x823A2438 = { name = "rex_sub_823A2438" } +0x823A2458 = { name = "rex_sub_823A2458" } +0x823A2490 = { name = "rex_sub_823A2490" } +0x823A2518 = { name = "rex_sub_823A2518" } +0x823A25C8 = { name = "rex_sub_823A25C8" } +0x823A2740 = { name = "rex_sub_823A2740" } +0x823A2800 = { name = "rex_sub_823A2800" } +0x823A28C0 = { name = "rex_sub_823A28C0" } +0x823A29A8 = { name = "rex_sub_823A29A8" } +0x823A29C8 = { name = "rex_sub_823A29C8" } +0x823A2A40 = { name = "rex_sub_823A2A40" } +0x823A2AD0 = { name = "rex_sub_823A2AD0" } +0x823A2B28 = { name = "rex_sub_823A2B28" } +0x823A2C30 = { name = "rex_sub_823A2C30" } +0x823A2C38 = { name = "rex_sub_823A2C38" } +0x823A2C88 = { name = "rex_sub_823A2C88" } +0x823A2D08 = { name = "rex_sub_823A2D08" } +0x823A2EC0 = { name = "rex_sub_823A2EC0" } +0x823A3030 = { name = "rex_sub_823A3030" } +0x823A3080 = { name = "rex_sub_823A3080" } +0x823A31C0 = { name = "rex_sub_823A31C0" } +0x823A31C8 = { name = "rex_sub_823A31C8" } +0x823A3228 = { name = "rex_sub_823A3228" } +0x823A3270 = { name = "rex_sub_823A3270" } +0x823A3348 = { name = "rex_sub_823A3348" } +0x823A33A0 = { name = "rex_sub_823A33A0" } +0x823A3448 = { name = "rex_sub_823A3448" } +0x823A3898 = { name = "rex_sub_823A3898" } +0x823A39B0 = { name = "rex_sub_823A39B0" } +0x823A3BB8 = { name = "rex_sub_823A3BB8" } +0x823A3BF8 = { name = "rex_sub_823A3BF8" } +0x823A3C48 = { name = "rex_sub_823A3C48" } +0x823A3CD0 = { name = "rex_sub_823A3CD0" } +0x823A3D60 = { name = "rex_sub_823A3D60" } +0x823A3DB8 = { name = "rex_sub_823A3DB8" } +0x823A3E20 = { name = "rex_sub_823A3E20" } +0x823A3E88 = { name = "rex_sub_823A3E88" } +0x823A3EF0 = { name = "rex_sub_823A3EF0" } +0x823A3F20 = { name = "rex_sub_823A3F20" } +0x823A4140 = { name = "rex_sub_823A4140" } +0x823A41A0 = { name = "rex_sub_823A41A0" } +0x823A4300 = { name = "rex_sub_823A4300" } +0x823A4378 = { name = "rex_sub_823A4378" } +0x823A4418 = { name = "rex_sub_823A4418" } +0x823A4478 = { name = "rex_sub_823A4478" } +0x823A4530 = { name = "rex_sub_823A4530" } +0x823A4560 = { name = "rex_sub_823A4560" } +0x823A45B8 = { name = "rex_sub_823A45B8" } +0x823A4618 = { name = "rex_sub_823A4618" } +0x823A4678 = { name = "rex_sub_823A4678" } +0x823A4708 = { name = "rex_sub_823A4708" } +0x823A4780 = { name = "rex_sub_823A4780" } +0x823A47E8 = { name = "rex_sub_823A47E8" } +0x823A4858 = { name = "rex_sub_823A4858" } +0x823A4980 = { name = "rex_sub_823A4980" } +0x823A4A40 = { name = "rex_sub_823A4A40" } +0x823A4AD8 = { name = "rex_sub_823A4AD8" } +0x823A4B60 = { name = "rex_sub_823A4B60" } +0x823A4BE8 = { name = "rex_sub_823A4BE8" } +0x823A4C70 = { name = "rex_sub_823A4C70" } +0x823A4CF8 = { name = "rex_sub_823A4CF8" } +0x823A4D60 = { name = "rex_sub_823A4D60" } +0x823A4DB0 = { name = "rex_sub_823A4DB0" } +0x823A4E28 = { name = "rex_sub_823A4E28" } +0x823A4E98 = { name = "rex_sub_823A4E98" } +0x823A4F08 = { name = "rex_sub_823A4F08" } +0x823A4F78 = { name = "rex_sub_823A4F78" } +0x823A4FC8 = { name = "rex_sub_823A4FC8" } +0x823A5018 = { name = "rex_sub_823A5018" } +0x823A5068 = { name = "rex_sub_823A5068" } +0x823A50B8 = { name = "rex_sub_823A50B8" } +0x823A5108 = { name = "rex_sub_823A5108" } +0x823A5158 = { name = "rex_sub_823A5158" } +0x823A51D8 = { name = "rex_sub_823A51D8" } +0x823A5228 = { name = "rex_sub_823A5228" } +0x823A52A8 = { name = "rex_sub_823A52A8" } +0x823A5330 = { name = "rex_sub_823A5330" } +0x823A53B8 = { name = "rex_sub_823A53B8" } +0x823A5440 = { name = "rex_sub_823A5440" } +0x823A54C8 = { name = "rex_sub_823A54C8" } +0x823A5518 = { name = "rex_sub_823A5518" } +0x823A5568 = { name = "rex_sub_823A5568" } +0x823A55B0 = { name = "rex_sub_823A55B0" } +0x823A55F8 = { name = "rex_sub_823A55F8" } +0x823A5650 = { name = "rex_sub_823A5650" } +0x823A56A8 = { name = "rex_sub_823A56A8" } +0x823A5700 = { name = "rex_sub_823A5700" } +0x823A5758 = { name = "rex_sub_823A5758" } +0x823A57B0 = { name = "rex_sub_823A57B0" } +0x823A5808 = { name = "rex_sub_823A5808" } +0x823A5860 = { name = "rex_sub_823A5860" } +0x823A58B8 = { name = "rex_sub_823A58B8" } +0x823A5910 = { name = "rex_sub_823A5910" } +0x823A5968 = { name = "rex_sub_823A5968" } +0x823A59C0 = { name = "rex_sub_823A59C0" } +0x823A5A18 = { name = "rex_sub_823A5A18" } +0x823A5A70 = { name = "rex_sub_823A5A70" } +0x823A5AC8 = { name = "rex_sub_823A5AC8" } +0x823A5B20 = { name = "rex_sub_823A5B20" } +0x823A5B78 = { name = "rex_sub_823A5B78" } +0x823A5BA0 = { name = "rex_sub_823A5BA0" } +0x823A5BF0 = { name = "rex_sub_823A5BF0" } +0x823A5C58 = { name = "rex_sub_823A5C58" } +0x823A5CC0 = { name = "rex_sub_823A5CC0" } +0x823A5D30 = { name = "rex_sub_823A5D30" } +0x823A5D88 = { name = "rex_sub_823A5D88" } +0x823A5DE0 = { name = "rex_sub_823A5DE0" } +0x823A5E38 = { name = "rex_sub_823A5E38" } +0x823A5E98 = { name = "rex_sub_823A5E98" } +0x823A5EF0 = { name = "rex_sub_823A5EF0" } +0x823A5F50 = { name = "rex_sub_823A5F50" } +0x823A5F98 = { name = "rex_sub_823A5F98" } +0x823A5FF0 = { name = "rex_sub_823A5FF0" } +0x823A6058 = { name = "rex_sub_823A6058" } +0x823A60B0 = { name = "rex_sub_823A60B0" } +0x823A6108 = { name = "rex_sub_823A6108" } +0x823A6160 = { name = "rex_sub_823A6160" } +0x823A61D8 = { name = "rex_sub_823A61D8" } +0x823A6250 = { name = "rex_sub_823A6250" } +0x823A6328 = { name = "rex_sub_823A6328" } +0x823A63A8 = { name = "rex_sub_823A63A8" } +0x823A6428 = { name = "rex_sub_823A6428" } +0x823A64B0 = { name = "rex_sub_823A64B0" } +0x823A6538 = { name = "rex_sub_823A6538" } +0x823A6540 = { name = "rex_sub_823A6540" } +0x823A65A0 = { name = "rex_sub_823A65A0" } +0x823A6600 = { name = "rex_sub_823A6600" } +0x823A6620 = { name = "rex_sub_823A6620" } +0x823A6688 = { name = "rex_sub_823A6688" } +0x823A6778 = { name = "rex_sub_823A6778" } +0x823A6830 = { name = "rex_sub_823A6830" } +0x823A6878 = { name = "rex_sub_823A6878" } +0x823A68D8 = { name = "rex_sub_823A68D8" } +0x823A6940 = { name = "rex_sub_823A6940" } +0x823A6970 = { name = "rex_sub_823A6970" } +0x823A69B8 = { name = "rex_sub_823A69B8" } +0x823A6A98 = { name = "rex_sub_823A6A98" } +0x823A6C80 = { name = "rex_sub_823A6C80" } +0x823A6D48 = { name = "rex_sub_823A6D48" } +0x823A6EA0 = { name = "rex_sub_823A6EA0" } +0x823A70F8 = { name = "rex_sub_823A70F8" } +0x823A7228 = { name = "rex_sub_823A7228" } +0x823A73F8 = { name = "rex_sub_823A73F8" } +0x823A7520 = { name = "rex_sub_823A7520" } +0x823A7938 = { name = "rex_sub_823A7938" } +0x823A7A10 = { name = "rex_sub_823A7A10" } +0x823A7C80 = { name = "rex_sub_823A7C80" } +0x823A7CE8 = { name = "rex_sub_823A7CE8" } +0x823A7D00 = { name = "rex_sub_823A7D00" } +0x823A7D08 = { name = "rex_sub_823A7D08" } +0x823A7D58 = { name = "rex_sub_823A7D58" } +0x823A7DA8 = { name = "rex_sub_823A7DA8" } +0x823A7DF8 = { name = "rex_sub_823A7DF8" } +0x823A7E78 = { name = "rex_sub_823A7E78" } +0x823A7EC0 = { name = "rex_sub_823A7EC0" } +0x823A7F48 = { name = "rex_sub_823A7F48" } +0x823A7F90 = { name = "rex_sub_823A7F90" } +0x823A7FE8 = { name = "rex_sub_823A7FE8" } +0x823A8120 = { name = "rex_sub_823A8120" } +0x823A81E8 = { name = "rex_sub_823A81E8" } +0x823A82D8 = { name = "rex_sub_823A82D8" } +0x823A8408 = { name = "rex_sub_823A8408" } +0x823A84F8 = { name = "rex_sub_823A84F8" } +0x823A8580 = { name = "rex_sub_823A8580" } +0x823A85E0 = { name = "rex_sub_823A85E0" } +0x823A8600 = { name = "rex_sub_823A8600" } +0x823A8620 = { name = "rex_sub_823A8620" } +0x823A8648 = { name = "rex_sub_823A8648" } +0x823A8680 = { name = "rex_sub_823A8680" } +0x823A8790 = { name = "rex_sub_823A8790" } +0x823A87E8 = { name = "rex_sub_823A87E8" } +0x823A8910 = { name = "rex_sub_823A8910" } +0x823A8928 = { name = "rex_sub_823A8928" } +0x823A8980 = { name = "rex_sub_823A8980" } +0x823A8A10 = { name = "rex_sub_823A8A10" } +0x823A8B30 = { name = "rex_sub_823A8B30" } +0x823A8CF8 = { name = "rex_sub_823A8CF8" } +0x823A8D68 = { name = "rex_sub_823A8D68" } +0x823A8F90 = { name = "rex_sub_823A8F90" } +0x823A9340 = { name = "rex_sub_823A9340" } +0x823A99D8 = { name = "rex_sub_823A99D8" } +0x823A9B08 = { name = "rex_sub_823A9B08" } +0x823A9BD8 = { name = "rex_sub_823A9BD8" } +0x823A9E60 = { name = "rex_sub_823A9E60" } +0x823A9F30 = { name = "rex_sub_823A9F30" } +0x823AA098 = { name = "rex_sub_823AA098" } +0x823AA200 = { name = "rex_sub_823AA200" } +0x823AA368 = { name = "rex_sub_823AA368" } +0x823AA410 = { name = "rex_sub_823AA410" } +0x823AA958 = { name = "rex_sub_823AA958" } +0x823ABFF8 = { name = "rex_sub_823ABFF8" } +0x823AC138 = { name = "rex_sub_823AC138" } +0x823AC1B8 = { name = "rex_sub_823AC1B8" } +0x823AC1D0 = { name = "rex_sub_823AC1D0" } +0x823AC218 = { name = "rex_sub_823AC218" } +0x823AC380 = { name = "rex_sub_823AC380" } +0x823AC3F8 = { name = "rex_sub_823AC3F8" } +0x823AC500 = { name = "rex_sub_823AC500" } +0x823AC5B8 = { name = "rex_sub_823AC5B8" } +0x823AC638 = { name = "rex_sub_823AC638" } +0x823AC660 = { name = "rex_sub_823AC660" } +0x823AC670 = { name = "rex_sub_823AC670" } +0x823AC6D0 = { name = "rex_sub_823AC6D0" } +0x823AC7E8 = { name = "rex_sub_823AC7E8" } +0x823AC8F0 = { name = "rex_sub_823AC8F0" } +0x823AC960 = { name = "rex_sub_823AC960" } +0x823AC9E8 = { name = "rex_sub_823AC9E8" } +0x823ACB68 = { name = "rex_sub_823ACB68" } +0x823ACCA8 = { name = "rex_sub_823ACCA8" } +0x823ACCF0 = { name = "rex_sub_823ACCF0" } +0x823ACD88 = { name = "rex_sub_823ACD88" } +0x823ACE40 = { name = "rex_sub_823ACE40" } +0x823ACF20 = { name = "rex_sub_823ACF20" } +0x823AD0D8 = { name = "rex_sub_823AD0D8" } +0x823AD1C0 = { name = "rex_sub_823AD1C0" } +0x823AD2F8 = { name = "rex_sub_823AD2F8" } +0x823AD380 = { name = "rex_sub_823AD380" } +0x823AD848 = { name = "rex_sub_823AD848" } +0x823AD910 = { name = "rex_sub_823AD910" } +0x823AD9C0 = { name = "rex_sub_823AD9C0" } +0x823ADAD8 = { name = "rex_sub_823ADAD8" } +0x823ADBA8 = { name = "rex_sub_823ADBA8" } +0x823ADBD8 = { name = "rex_sub_823ADBD8" } +0x823ADF78 = { name = "rex_sub_823ADF78" } +0x823AE078 = { name = "rex_sub_823AE078" } +0x823AE090 = { name = "rex_sub_823AE090" } +0x823AE290 = { name = "rex_sub_823AE290" } +0x823AE2E8 = { name = "rex_sub_823AE2E8" } +0x823AE340 = { name = "rex_sub_823AE340" } +0x823AE3B8 = { name = "rex_sub_823AE3B8" } +0x823AE3C8 = { name = "rex_sub_823AE3C8" } +0x823AE4A0 = { name = "rex_sub_823AE4A0" } +0x823AE520 = { name = "rex_sub_823AE520" } +0x823AE570 = { name = "rex_sub_823AE570" } +0x823AE5C8 = { name = "rex_sub_823AE5C8" } +0x823AE658 = { name = "rex_sub_823AE658" } +0x823AE808 = { name = "rex_sub_823AE808" } +0x823AE8B0 = { name = "rex_sub_823AE8B0" } +0x823AE938 = { name = "rex_sub_823AE938" } +0x823AEA10 = { name = "rex_sub_823AEA10" } +0x823AEA48 = { name = "rex_sub_823AEA48" } +0x823AEA80 = { name = "rex_sub_823AEA80" } +0x823AEAF8 = { name = "rex_sub_823AEAF8" } +0x823AEB38 = { name = "rex_sub_823AEB38" } +0x823AEB58 = { name = "rex_sub_823AEB58" } +0x823AEBE0 = { name = "rex_sub_823AEBE0" } +0x823AEC18 = { name = "rex_sub_823AEC18" } +0x823AEC38 = { name = "rex_sub_823AEC38" } +0x823AED08 = { name = "rex_sub_823AED08" } +0x823AED88 = { name = "rex_sub_823AED88" } +0x823AEE50 = { name = "rex_sub_823AEE50" } +0x823AEFA0 = { name = "rex_sub_823AEFA0" } +0x823AF0C0 = { name = "rex_sub_823AF0C0" } +0x823AF0E0 = { name = "rex_sub_823AF0E0" } +0x823AF100 = { name = "rex_sub_823AF100" } +0x823AF120 = { name = "rex_sub_823AF120" } +0x823AF280 = { name = "rex_sub_823AF280" } +0x823AF500 = { name = "rex_sub_823AF500" } +0x823AF560 = { name = "rex_sub_823AF560" } +0x823AF678 = { name = "rex_sub_823AF678" } +0x823AF6E8 = { name = "rex_sub_823AF6E8" } +0x823AF728 = { name = "rex_sub_823AF728" } +0x823AF7A0 = { name = "rex_sub_823AF7A0" } +0x823AF808 = { name = "rex_sub_823AF808" } +0x823AF870 = { name = "rex_sub_823AF870" } +0x823AF978 = { name = "rex_sub_823AF978" } +0x823AFAB8 = { name = "rex_sub_823AFAB8" } +0x823AFB80 = { name = "rex_sub_823AFB80" } +0x823AFC60 = { name = "rex_sub_823AFC60" } +0x823AFE00 = { name = "rex_sub_823AFE00" } +0x823AFEE0 = { name = "rex_sub_823AFEE0" } +0x823B0160 = { name = "rex_sub_823B0160" } +0x823B0258 = { name = "rex_sub_823B0258" } +0x823B0288 = { name = "rex_sub_823B0288" } +0x823B04A8 = { name = "rex_sub_823B04A8" } +0x823B0558 = { name = "rex_sub_823B0558" } +0x823B0658 = { name = "rex_sub_823B0658" } +0x823B06F8 = { name = "rex_sub_823B06F8" } +0x823B0708 = { name = "rex_sub_823B0708" } +0x823B0718 = { name = "rex_sub_823B0718" } +0x823B0788 = { name = "rex_sub_823B0788" } +0x823B0808 = { name = "rex_sub_823B0808" } +0x823B0880 = { name = "rex_sub_823B0880" } +0x823B09A8 = { name = "rex_sub_823B09A8" } +0x823B0A10 = { name = "rex_sub_823B0A10" } +0x823B0B18 = { name = "rex_sub_823B0B18" } +0x823B0B48 = { name = "rex_sub_823B0B48" } +0x823B0C58 = { name = "rex_sub_823B0C58" } +0x823B0D00 = { name = "rex_sub_823B0D00" } +0x823B0D60 = { name = "rex_sub_823B0D60" } +0x823B0DB8 = { name = "rex_sub_823B0DB8" } +0x823B0DF0 = { name = "rex_sub_823B0DF0" } +0x823B0E28 = { name = "rex_sub_823B0E28" } +0x823B0E68 = { name = "rex_sub_823B0E68" } +0x823B0E80 = { name = "rex_sub_823B0E80" } +0x823B0EE8 = { name = "rex_sub_823B0EE8" } +0x823B0F90 = { name = "rex_sub_823B0F90" } +0x823B1000 = { name = "rex_sub_823B1000" } +0x823B1360 = { name = "rex_sub_823B1360" } +0x823B1400 = { name = "rex_sub_823B1400" } +0x823B16C8 = { name = "rex_sub_823B16C8" } +0x823B1938 = { name = "rex_sub_823B1938" } +0x823B1B00 = { name = "rex_sub_823B1B00" } +0x823B1BD0 = { name = "rex_sub_823B1BD0" } +0x823B1C90 = { name = "rex_sub_823B1C90" } +0x823B1D08 = { name = "rex_sub_823B1D08" } +0x823B1D98 = { name = "rex_sub_823B1D98" } +0x823B1E58 = { name = "rex_sub_823B1E58" } +0x823B1F00 = { name = "rex_sub_823B1F00" } +0x823B1F08 = { name = "rex_sub_823B1F08" } +0x823B1F10 = { name = "rex_sub_823B1F10" } +0x823B1F18 = { name = "rex_sub_823B1F18" } +0x823B1F20 = { name = "rex_sub_823B1F20" } +0x823B1F78 = { name = "rex_sub_823B1F78" } +0x823B1FF0 = { name = "rex_sub_823B1FF0" } +0x823B2058 = { name = "rex_sub_823B2058" } +0x823B2088 = { name = "rex_sub_823B2088" } +0x823B20D0 = { name = "rex_sub_823B20D0" } +0x823B21C8 = { name = "rex_sub_823B21C8" } +0x823B2328 = { name = "rex_sub_823B2328" } +0x823B2470 = { name = "rex_sub_823B2470" } +0x823B2660 = { name = "rex_sub_823B2660" } +0x823B2760 = { name = "rex_sub_823B2760" } +0x823B28B0 = { name = "rex_sub_823B28B0" } +0x823B2988 = { name = "rex_sub_823B2988" } +0x823B29B0 = { name = "rex_sub_823B29B0" } +0x823B29B8 = { name = "rex_sub_823B29B8" } +0x823B29C0 = { name = "rex_sub_823B29C0" } +0x823B29F0 = { name = "rex_sub_823B29F0" } +0x823B29F8 = { name = "rex_sub_823B29F8" } +0x823B2B10 = { name = "rex_sub_823B2B10" } +0x823B33F8 = { name = "rex_sub_823B33F8" } +0x823B3680 = { name = "rex_sub_823B3680" } +0x823B3838 = { name = "rex_sub_823B3838" } +0x823B3A38 = { name = "rex_sub_823B3A38" } +0x823B3BA8 = { name = "rex_sub_823B3BA8" } +0x823B4628 = { name = "rex_sub_823B4628" } +0x823B46D8 = { name = "rex_sub_823B46D8" } +0x823B46E0 = { name = "rex_sub_823B46E0" } +0x823B4708 = { name = "rex_sub_823B4708" } +0x823B4730 = { name = "rex_sub_823B4730" } +0x823B47B8 = { name = "rex_sub_823B47B8" } +0x823B4808 = { name = "rex_sub_823B4808" } +0x823B4868 = { name = "rex_sub_823B4868" } +0x823B4870 = { name = "rex_sub_823B4870" } +0x823B48C8 = { name = "rex_sub_823B48C8" } +0x823B4928 = { name = "rex_sub_823B4928" } +0x823B49E8 = { name = "rex_sub_823B49E8" } +0x823B4B00 = { name = "rex_sub_823B4B00" } +0x823B4C10 = { name = "rex_sub_823B4C10" } +0x823B4C18 = { name = "rex_sub_823B4C18" } +0x823B4C38 = { name = "rex_sub_823B4C38" } +0x823B4C40 = { name = "rex_sub_823B4C40" } +0x823B4C48 = { name = "rex_sub_823B4C48" } +0x823B4C58 = { name = "rex_sub_823B4C58" } +0x823B4C70 = { name = "rex_sub_823B4C70" } +0x823B4D40 = { name = "rex_sub_823B4D40" } +0x823B4E30 = { name = "rex_sub_823B4E30" } +0x823B4F88 = { name = "rex_sub_823B4F88" } +0x823B5098 = { name = "rex_sub_823B5098" } +0x823B57B8 = { name = "rex_sub_823B57B8" } +0x823B5828 = { name = "rex_sub_823B5828" } +0x823B58A8 = { name = "rex_sub_823B58A8" } +0x823B5A10 = { name = "rex_sub_823B5A10" } +0x823B5A78 = { name = "rex_sub_823B5A78" } +0x823B5AE0 = { name = "rex_sub_823B5AE0" } +0x823B5B48 = { name = "rex_sub_823B5B48" } +0x823B5BB0 = { name = "rex_sub_823B5BB0" } +0x823B5C18 = { name = "rex_sub_823B5C18" } +0x823B5C80 = { name = "rex_sub_823B5C80" } +0x823B5CE8 = { name = "rex_sub_823B5CE8" } +0x823B5CF0 = { name = "rex_sub_823B5CF0" } +0x823B5D08 = { name = "rex_sub_823B5D08" } +0x823B6B38 = { name = "rex_sub_823B6B38" } +0x823B7708 = { name = "rex_sub_823B7708" } +0x823B79E0 = { name = "rex_sub_823B79E0" } +0x823B7B38 = { name = "rex_sub_823B7B38" } +0x823B7C10 = { name = "rex_sub_823B7C10" } +0x823B7C80 = { name = "rex_sub_823B7C80" } +0x823B7CF0 = { name = "rex_sub_823B7CF0" } +0x823B7D70 = { name = "rex_sub_823B7D70" } +0x823B7DA0 = { name = "rex_sub_823B7DA0" } +0x823B7EC8 = { name = "rex_sub_823B7EC8" } +0x823B7F20 = { name = "rex_sub_823B7F20" } +0x823B7F88 = { name = "rex_sub_823B7F88" } +0x823B8068 = { name = "rex_sub_823B8068" } +0x823B8100 = { name = "rex_sub_823B8100" } +0x823B81F0 = { name = "rex_sub_823B81F0" } +0x823B8310 = { name = "rex_sub_823B8310" } +0x823B8388 = { name = "rex_sub_823B8388" } +0x823B83F8 = { name = "rex_sub_823B83F8" } +0x823B8468 = { name = "rex_sub_823B8468" } +0x823B8480 = { name = "rex_sub_823B8480" } +0x823B8488 = { name = "rex_sub_823B8488" } +0x823B8490 = { name = "rex_sub_823B8490" } +0x823B84F8 = { name = "rex_sub_823B84F8" } +0x823B8558 = { name = "rex_sub_823B8558" } +0x823B85D0 = { name = "rex_sub_823B85D0" } +0x823B8620 = { name = "rex_sub_823B8620" } +0x823B86D0 = { name = "rex_sub_823B86D0" } +0x823B8770 = { name = "rex_sub_823B8770" } +0x823B8820 = { name = "rex_sub_823B8820" } +0x823B8860 = { name = "rex_sub_823B8860" } +0x823B88B0 = { name = "rex_sub_823B88B0" } +0x823B8968 = { name = "rex_sub_823B8968" } +0x823B8A80 = { name = "rex_sub_823B8A80" } +0x823B8B40 = { name = "rex_sub_823B8B40" } +0x823B8BA0 = { name = "rex_sub_823B8BA0" } +0x823B8C38 = { name = "rex_sub_823B8C38" } +0x823B8CD8 = { name = "rex_sub_823B8CD8" } +0x823B8DA0 = { name = "rex_sub_823B8DA0" } +0x823B8E38 = { name = "rex_sub_823B8E38" } +0x823B8F78 = { name = "rex_sub_823B8F78" } +0x823B8FD8 = { name = "rex_sub_823B8FD8" } +0x823B9158 = { name = "rex_sub_823B9158" } +0x823B9228 = { name = "rex_sub_823B9228" } +0x823B9240 = { name = "rex_sub_823B9240" } +0x823B9328 = { name = "rex_sub_823B9328" } +0x823B93F0 = { name = "rex_sub_823B93F0" } +0x823B9588 = { name = "rex_sub_823B9588" } +0x823B9628 = { name = "rex_sub_823B9628" } +0x823B9688 = { name = "rex_sub_823B9688" } +0x823B9700 = { name = "rex_sub_823B9700" } +0x823B9820 = { name = "rex_sub_823B9820" } +0x823B9A38 = { name = "rex_sub_823B9A38" } +0x823B9DD8 = { name = "rex_sub_823B9DD8" } +0x823B9F10 = { name = "rex_sub_823B9F10" } +0x823B9F80 = { name = "rex_sub_823B9F80" } +0x823B9FB8 = { name = "rex_sub_823B9FB8" } +0x823BA078 = { name = "rex_sub_823BA078" } +0x823BA0A0 = { name = "rex_sub_823BA0A0" } +0x823BA320 = { name = "rex_sub_823BA320" } +0x823BA5F8 = { name = "rex_sub_823BA5F8" } +0x823BA9A8 = { name = "rex_sub_823BA9A8" } +0x823BAE70 = { name = "rex_sub_823BAE70" } +0x823BB030 = { name = "rex_sub_823BB030" } +0x823BB240 = { name = "rex_sub_823BB240" } +0x823BB480 = { name = "rex_sub_823BB480" } +0x823BB728 = { name = "rex_sub_823BB728" } +0x823BBA50 = { name = "rex_sub_823BBA50" } +0x823BBD80 = { name = "rex_sub_823BBD80" } +0x823BC180 = { name = "rex_sub_823BC180" } +0x823BC718 = { name = "rex_sub_823BC718" } +0x823BCEC8 = { name = "rex_sub_823BCEC8" } +0x823BD160 = { name = "rex_sub_823BD160" } +0x823BD458 = { name = "rex_sub_823BD458" } +0x823BD820 = { name = "rex_sub_823BD820" } +0x823BDCF0 = { name = "rex_sub_823BDCF0" } +0x823BE080 = { name = "rex_sub_823BE080" } +0x823BE370 = { name = "rex_sub_823BE370" } +0x823BE6B0 = { name = "rex_sub_823BE6B0" } +0x823BEAC8 = { name = "rex_sub_823BEAC8" } +0x823BEFD0 = { name = "rex_sub_823BEFD0" } +0x823BF398 = { name = "rex_sub_823BF398" } +0x823BF6C0 = { name = "rex_sub_823BF6C0" } +0x823BFA68 = { name = "rex_sub_823BFA68" } +0x823BFF48 = { name = "rex_sub_823BFF48" } +0x823C0578 = { name = "rex_sub_823C0578" } +0x823C0930 = { name = "rex_sub_823C0930" } +0x823C0C78 = { name = "rex_sub_823C0C78" } +0x823C1070 = { name = "rex_sub_823C1070" } +0x823C15A8 = { name = "rex_sub_823C15A8" } +0x823C1C40 = { name = "rex_sub_823C1C40" } +0x823C2020 = { name = "rex_sub_823C2020" } +0x823C2368 = { name = "rex_sub_823C2368" } +0x823C2750 = { name = "rex_sub_823C2750" } +0x823C2C90 = { name = "rex_sub_823C2C90" } +0x823C3458 = { name = "rex_sub_823C3458" } +0x823C3568 = { name = "rex_sub_823C3568" } +0x823C37C0 = { name = "rex_sub_823C37C0" } +0x823C3910 = { name = "rex_sub_823C3910" } +0x823C3A50 = { name = "rex_sub_823C3A50" } +0x823C3B80 = { name = "rex_sub_823C3B80" } +0x823C3E78 = { name = "rex_sub_823C3E78" } +0x823C4190 = { name = "rex_sub_823C4190" } +0x823C47A8 = { name = "rex_sub_823C47A8" } +0x823C4F60 = { name = "rex_sub_823C4F60" } +0x823C5108 = { name = "rex_sub_823C5108" } +0x823C57F8 = { name = "rex_sub_823C57F8" } +0x823C5A20 = { name = "rex_sub_823C5A20" } +0x823C6428 = { name = "rex_sub_823C6428" } +0x823C6650 = { name = "rex_sub_823C6650" } +0x823C6820 = { name = "rex_sub_823C6820" } +0x823C6A70 = { name = "rex_sub_823C6A70" } +0x823C6D30 = { name = "rex_sub_823C6D30" } +0x823C7070 = { name = "rex_sub_823C7070" } +0x823C7718 = { name = "rex_sub_823C7718" } +0x823C7A10 = { name = "rex_sub_823C7A10" } +0x823C7D98 = { name = "rex_sub_823C7D98" } +0x823C7E70 = { name = "rex_sub_823C7E70" } +0x823C7F48 = { name = "rex_sub_823C7F48" } +0x823C8020 = { name = "rex_sub_823C8020" } +0x823C80F8 = { name = "rex_sub_823C80F8" } +0x823C81D0 = { name = "rex_sub_823C81D0" } +0x823C82A8 = { name = "rex_sub_823C82A8" } +0x823C8380 = { name = "rex_sub_823C8380" } +0x823C8458 = { name = "rex_sub_823C8458" } +0x823C8538 = { name = "rex_sub_823C8538" } +0x823C8618 = { name = "rex_sub_823C8618" } +0x823C86F8 = { name = "rex_sub_823C86F8" } +0x823C87D8 = { name = "rex_sub_823C87D8" } +0x823C88B0 = { name = "rex_sub_823C88B0" } +0x823C8988 = { name = "rex_sub_823C8988" } +0x823C8A60 = { name = "rex_sub_823C8A60" } +0x823C8B38 = { name = "rex_sub_823C8B38" } +0x823C8D00 = { name = "rex_sub_823C8D00" } +0x823C8F20 = { name = "rex_sub_823C8F20" } +0x823C9268 = { name = "rex_sub_823C9268" } +0x823C9480 = { name = "rex_sub_823C9480" } +0x823C9698 = { name = "rex_sub_823C9698" } +0x823C99F0 = { name = "rex_sub_823C99F0" } +0x823C9CA0 = { name = "rex_sub_823C9CA0" } +0x823C9F10 = { name = "rex_sub_823C9F10" } +0x823CA1A0 = { name = "rex_sub_823CA1A0" } +0x823CA4D8 = { name = "rex_sub_823CA4D8" } +0x823CA550 = { name = "rex_sub_823CA550" } +0x823CA578 = { name = "rex_sub_823CA578" } +0x823CA5D8 = { name = "rex_sub_823CA5D8" } +0x823CA690 = { name = "rex_sub_823CA690" } +0x823CAC80 = { name = "rex_sub_823CAC80" } +0x823CADA0 = { name = "rex_sub_823CADA0" } +0x823CAED0 = { name = "rex_sub_823CAED0" } +0x823CAF38 = { name = "rex_sub_823CAF38" } +0x823CAF80 = { name = "rex_sub_823CAF80" } +0x823CAF90 = { name = "rex_sub_823CAF90" } +0x823CAFA0 = { name = "rex_sub_823CAFA0" } +0x823CAFB0 = { name = "rex_sub_823CAFB0" } +0x823CAFC0 = { name = "rex_sub_823CAFC0" } +0x823CAFD0 = { name = "rex_sub_823CAFD0" } +0x823CB008 = { name = "rex_sub_823CB008" } +0x823CB088 = { name = "rex_sub_823CB088" } +0x823CB1A0 = { name = "rex_sub_823CB1A0" } +0x823CB210 = { name = "rex_sub_823CB210" } +0x823CB220 = { name = "rex_sub_823CB220" } +0x823CB230 = { name = "rex_sub_823CB230" } +0x823CB240 = { name = "rex_sub_823CB240" } +0x823CB2A0 = { name = "rex_sub_823CB2A0" } +0x823CB2C0 = { name = "rex_sub_823CB2C0" } +0x823CB3D8 = { name = "rex_sub_823CB3D8" } +0x823CB3E8 = { name = "rex_sub_823CB3E8" } +0x823CB3F8 = { name = "rex_sub_823CB3F8" } +0x823CB490 = { name = "rex_sub_823CB490" } +0x823CB4A0 = { name = "rex_sub_823CB4A0" } +0x823CB4E0 = { name = "rex_sub_823CB4E0" } +0x823CB520 = { name = "rex_sub_823CB520" } +0x823CB560 = { name = "rex_sub_823CB560" } +0x823CB5A0 = { name = "rex_sub_823CB5A0" } +0x823CB5E0 = { name = "rex_sub_823CB5E0" } +0x823CB620 = { name = "rex_sub_823CB620" } +0x823CB688 = { name = "rex_sub_823CB688" } +0x823CB708 = { name = "rex_sub_823CB708" } +0x823CB740 = { name = "rex_sub_823CB740" } +0x823CB780 = { name = "rex_sub_823CB780" } +0x823CB7C0 = { name = "rex_sub_823CB7C0" } +0x823CB800 = { name = "rex_sub_823CB800" } +0x823CB840 = { name = "rex_sub_823CB840" } +0x823CB880 = { name = "rex_sub_823CB880" } +0x823CB8C0 = { name = "rex_sub_823CB8C0" } +0x823CB8D0 = { name = "rex_sub_823CB8D0" } +0x823CB918 = { name = "rex_sub_823CB918" } +0x823CB998 = { name = "rex_sub_823CB998" } +0x823CB9A8 = { name = "rex_sub_823CB9A8" } +0x823CB9B8 = { name = "rex_sub_823CB9B8" } +0x823CB9C8 = { name = "rex_sub_823CB9C8" } +0x823CB9D8 = { name = "rex_sub_823CB9D8" } +0x823CBA10 = { name = "rex_sub_823CBA10" } +0x823CBA60 = { name = "rex_sub_823CBA60" } +0x823CBA70 = { name = "rex_sub_823CBA70" } +0x823CBA80 = { name = "rex_sub_823CBA80" } +0x823CBA90 = { name = "rex_sub_823CBA90" } +0x823CBAA0 = { name = "rex_sub_823CBAA0" } +0x823CBAB0 = { name = "rex_sub_823CBAB0" } +0x823CBAC0 = { name = "rex_sub_823CBAC0" } +0x823CBAD0 = { name = "rex_sub_823CBAD0" } +0x823CBAE0 = { name = "rex_sub_823CBAE0" } +0x823CBAF0 = { name = "rex_sub_823CBAF0" } +0x823CBB00 = { name = "rex_sub_823CBB00" } +0x823CBB10 = { name = "rex_sub_823CBB10" } +0x823CBB20 = { name = "rex_sub_823CBB20" } +0x823CBB30 = { name = "rex_sub_823CBB30" } +0x823CBB68 = { name = "rex_sub_823CBB68" } +0x823CBB78 = { name = "rex_sub_823CBB78" } +0x823CBB88 = { name = "rex_sub_823CBB88" } +0x823CBBD8 = { name = "rex_sub_823CBBD8" } +0x823CBBE8 = { name = "rex_sub_823CBBE8" } +0x823CBBF8 = { name = "rex_sub_823CBBF8" } +0x823CBC08 = { name = "rex_sub_823CBC08" } +0x823CBC18 = { name = "rex_sub_823CBC18" } +0x823CBC28 = { name = "rex_sub_823CBC28" } +0x823CBC38 = { name = "rex_sub_823CBC38" } +0x823CBC48 = { name = "rex_sub_823CBC48" } +0x823CBC58 = { name = "rex_sub_823CBC58" } +0x823CBC68 = { name = "rex_sub_823CBC68" } +0x823CBC78 = { name = "rex_sub_823CBC78" } +0x823CBC88 = { name = "rex_sub_823CBC88" } +0x823CBD08 = { name = "rex_sub_823CBD08" } +0x823CBD40 = { name = "rex_sub_823CBD40" } +0x823CBDA8 = { name = "rex_sub_823CBDA8" } +0x823CBDC8 = { name = "rex_sub_823CBDC8" } +0x823CBDD8 = { name = "rex_sub_823CBDD8" } +0x823CBDE8 = { name = "rex_sub_823CBDE8" } +0x823CBE20 = { name = "rex_sub_823CBE20" } +0x823CBE30 = { name = "rex_sub_823CBE30" } +0x823CBE68 = { name = "rex_sub_823CBE68" } +0x823CBEA0 = { name = "rex_sub_823CBEA0" } +0x823CBEE8 = { name = "rex_sub_823CBEE8" } +0x823CBF30 = { name = "rex_sub_823CBF30" } +0x823CBF68 = { name = "rex_sub_823CBF68" } +0x823CBFB0 = { name = "rex_sub_823CBFB0" } +0x823CBFE8 = { name = "rex_sub_823CBFE8" } +0x823CC068 = { name = "rex_sub_823CC068" } +0x823CC108 = { name = "rex_sub_823CC108" } +0x823CC240 = { name = "rex_sub_823CC240" } +0x823CC278 = { name = "rex_sub_823CC278" } +0x823CC3C8 = { name = "rex_sub_823CC3C8" } +0x823CC3D8 = { name = "rex_sub_823CC3D8" } +0x823CC3E8 = { name = "rex_sub_823CC3E8" } +0x823CC3F8 = { name = "rex_sub_823CC3F8" } +0x823CC470 = { name = "rex_sub_823CC470" } +0x823CC480 = { name = "rex_sub_823CC480" } +0x823CC490 = { name = "rex_sub_823CC490" } +0x823CC4D8 = { name = "rex_sub_823CC4D8" } +0x823CC510 = { name = "rex_sub_823CC510" } +0x823CC630 = { name = "rex_sub_823CC630" } +0x823CC668 = { name = "rex_sub_823CC668" } +0x823CC6A0 = { name = "rex_sub_823CC6A0" } +0x823CC6D8 = { name = "rex_sub_823CC6D8" } +0x823CC710 = { name = "rex_sub_823CC710" } +0x823CC720 = { name = "rex_sub_823CC720" } +0x823CC730 = { name = "rex_sub_823CC730" } +0x823CC740 = { name = "rex_sub_823CC740" } +0x823CC750 = { name = "rex_sub_823CC750" } +0x823CC760 = { name = "rex_sub_823CC760" } +0x823CC7B8 = { name = "rex_sub_823CC7B8" } +0x823CC7C8 = { name = "rex_sub_823CC7C8" } +0x823CC800 = { name = "rex_sub_823CC800" } +0x823CC860 = { name = "rex_sub_823CC860" } +0x823CC898 = { name = "rex_sub_823CC898" } +0x823CC8A8 = { name = "rex_sub_823CC8A8" } +0x823CC8F0 = { name = "rex_sub_823CC8F0" } +0x823CC900 = { name = "rex_sub_823CC900" } +0x823CC910 = { name = "rex_sub_823CC910" } +0x823CC920 = { name = "rex_sub_823CC920" } +0x823CC930 = { name = "rex_sub_823CC930" } +0x823CC940 = { name = "rex_sub_823CC940" } +0x823CC950 = { name = "rex_sub_823CC950" } +0x823CC960 = { name = "rex_sub_823CC960" } +0x823CC970 = { name = "rex_sub_823CC970" } +0x823CC980 = { name = "rex_sub_823CC980" } +0x823CC990 = { name = "rex_sub_823CC990" } +0x823CC9A0 = { name = "rex_sub_823CC9A0" } +0x823CC9B0 = { name = "rex_sub_823CC9B0" } +0x823CC9C0 = { name = "rex_sub_823CC9C0" } +0x823CC9D0 = { name = "rex_sub_823CC9D0" } +0x823CC9E0 = { name = "rex_sub_823CC9E0" } +0x823CC9F0 = { name = "rex_sub_823CC9F0" } +0x823CCA00 = { name = "rex_sub_823CCA00" } +0x823CCA10 = { name = "rex_sub_823CCA10" } +0x823CCA20 = { name = "rex_sub_823CCA20" } +0x823CCA30 = { name = "rex_sub_823CCA30" } +0x823CCA40 = { name = "rex_sub_823CCA40" } +0x823CCA50 = { name = "rex_sub_823CCA50" } +0x823CCA60 = { name = "rex_sub_823CCA60" } +0x823CCA70 = { name = "rex_sub_823CCA70" } +0x823CCA80 = { name = "rex_sub_823CCA80" } +0x823CCA90 = { name = "rex_sub_823CCA90" } +0x823CCAA0 = { name = "rex_sub_823CCAA0" } +0x823CCAB0 = { name = "rex_sub_823CCAB0" } +0x823CCAC0 = { name = "rex_sub_823CCAC0" } +0x823CCAD0 = { name = "rex_sub_823CCAD0" } +0x823CCAE0 = { name = "rex_sub_823CCAE0" } +0x823CCAF0 = { name = "rex_sub_823CCAF0" } +0x823CCB00 = { name = "rex_sub_823CCB00" } +0x823CCB10 = { name = "rex_sub_823CCB10" } +0x823CCB20 = { name = "rex_sub_823CCB20" } +0x823CCB30 = { name = "rex_sub_823CCB30" } +0x823CCB40 = { name = "rex_sub_823CCB40" } +0x823CCB50 = { name = "rex_sub_823CCB50" } +0x823CCB60 = { name = "rex_sub_823CCB60" } +0x823CCB70 = { name = "rex_sub_823CCB70" } +0x823CCB80 = { name = "rex_sub_823CCB80" } +0x823CCB90 = { name = "rex_sub_823CCB90" } +0x823CCBA0 = { name = "rex_sub_823CCBA0" } +0x823CCBB0 = { name = "rex_sub_823CCBB0" } +0x823CCBC0 = { name = "rex_sub_823CCBC0" } +0x823CCBD0 = { name = "rex_sub_823CCBD0" } +0x823CCBE0 = { name = "rex_sub_823CCBE0" } +0x823CCBF0 = { name = "rex_sub_823CCBF0" } +0x823CCC28 = { name = "rex_sub_823CCC28" } +0x823CCC58 = { name = "rex_sub_823CCC58" } +0x823CCC90 = { name = "rex_sub_823CCC90" } +0x823CCCA0 = { name = "rex_sub_823CCCA0" } +0x823CCCB0 = { name = "rex_sub_823CCCB0" } +0x823CCCC0 = { name = "rex_sub_823CCCC0" } +0x823CCCF8 = { name = "rex_sub_823CCCF8" } +0x823CCD30 = { name = "rex_sub_823CCD30" } +0x823CCD40 = { name = "rex_sub_823CCD40" } +0x823CCD50 = { name = "rex_sub_823CCD50" } +0x823CCD60 = { name = "rex_sub_823CCD60" } +0x823CCDC8 = { name = "rex_sub_823CCDC8" } +0x823CCDD8 = { name = "rex_sub_823CCDD8" } +0x823CCE10 = { name = "rex_sub_823CCE10" } +0x823CCE48 = { name = "rex_sub_823CCE48" } +0x823CCE58 = { name = "rex_sub_823CCE58" } +0x823CCE68 = { name = "rex_sub_823CCE68" } +0x823CCEA0 = { name = "rex_sub_823CCEA0" } +0x823CCED8 = { name = "rex_sub_823CCED8" } +0x823CCF38 = { name = "rex_sub_823CCF38" } +0x823CCF48 = { name = "rex_sub_823CCF48" } +0x823CCF58 = { name = "rex_sub_823CCF58" } +0x823CCF68 = { name = "rex_sub_823CCF68" } +0x823CCF78 = { name = "rex_sub_823CCF78" } +0x823CCF88 = { name = "rex_sub_823CCF88" } +0x823CCF98 = { name = "rex_sub_823CCF98" } +0x823CCFA8 = { name = "rex_sub_823CCFA8" } +0x823CCFE0 = { name = "rex_sub_823CCFE0" } +0x823CCFF0 = { name = "rex_sub_823CCFF0" } +0x823CD028 = { name = "rex_sub_823CD028" } +0x823CD060 = { name = "rex_sub_823CD060" } +0x823CD098 = { name = "rex_sub_823CD098" } +0x823CD0A8 = { name = "rex_sub_823CD0A8" } +0x823CD0B8 = { name = "rex_sub_823CD0B8" } +0x823CD0C8 = { name = "rex_sub_823CD0C8" } +0x823CD138 = { name = "rex_sub_823CD138" } +0x823CD1A8 = { name = "rex_sub_823CD1A8" } +0x823CD1B8 = { name = "rex_sub_823CD1B8" } +0x823CD1F8 = { name = "rex_sub_823CD1F8" } +0x823CD238 = { name = "rex_sub_823CD238" } +0x823CD278 = { name = "rex_sub_823CD278" } +0x823CD2B8 = { name = "rex_sub_823CD2B8" } +0x823CD2F8 = { name = "rex_sub_823CD2F8" } +0x823CD338 = { name = "rex_sub_823CD338" } +0x823CD378 = { name = "rex_sub_823CD378" } +0x823CD3B8 = { name = "rex_sub_823CD3B8" } +0x823CD3F8 = { name = "rex_sub_823CD3F8" } +0x823CD438 = { name = "rex_sub_823CD438" } +0x823CD478 = { name = "rex_sub_823CD478" } +0x823CD4B8 = { name = "rex_sub_823CD4B8" } +0x823CD4F8 = { name = "rex_sub_823CD4F8" } +0x823CD538 = { name = "rex_sub_823CD538" } +0x823CD578 = { name = "rex_sub_823CD578" } +0x823CD5B8 = { name = "rex_sub_823CD5B8" } +0x823CD5F8 = { name = "rex_sub_823CD5F8" } +0x823CD638 = { name = "rex_sub_823CD638" } +0x823CD670 = { name = "rex_sub_823CD670" } +0x823CD6B0 = { name = "rex_sub_823CD6B0" } +0x823CD6F0 = { name = "rex_sub_823CD6F0" } +0x823CD730 = { name = "rex_sub_823CD730" } +0x823CD770 = { name = "rex_sub_823CD770" } +0x823CD7B0 = { name = "rex_sub_823CD7B0" } +0x823CD7F0 = { name = "rex_sub_823CD7F0" } +0x823CD830 = { name = "rex_sub_823CD830" } +0x823CD870 = { name = "rex_sub_823CD870" } +0x823CD8B0 = { name = "rex_sub_823CD8B0" } +0x823CD8F0 = { name = "rex_sub_823CD8F0" } +0x823CD930 = { name = "rex_sub_823CD930" } +0x823CD970 = { name = "rex_sub_823CD970" } +0x823CD9B0 = { name = "rex_sub_823CD9B0" } +0x823CD9F0 = { name = "rex_sub_823CD9F0" } +0x823CDA30 = { name = "rex_sub_823CDA30" } +0x823CDA70 = { name = "rex_sub_823CDA70" } +0x823CDAB0 = { name = "rex_sub_823CDAB0" } +0x823CDAF0 = { name = "rex_sub_823CDAF0" } +0x823CDB68 = { name = "rex_sub_823CDB68" } +0x823CDBA8 = { name = "rex_sub_823CDBA8" } +0x823CDBE8 = { name = "rex_sub_823CDBE8" } +0x823CDC28 = { name = "rex_sub_823CDC28" } +0x823CDC68 = { name = "rex_sub_823CDC68" } +0x823CDCA8 = { name = "rex_sub_823CDCA8" } +0x823CDCE8 = { name = "rex_sub_823CDCE8" } +0x823CDD28 = { name = "rex_sub_823CDD28" } +0x823CDD68 = { name = "rex_sub_823CDD68" } +0x823CDDA8 = { name = "rex_sub_823CDDA8" } +0x823CDDE8 = { name = "rex_sub_823CDDE8" } +0x823CDE28 = { name = "rex_sub_823CDE28" } +0x823CDE68 = { name = "rex_sub_823CDE68" } +0x823CDEA8 = { name = "rex_sub_823CDEA8" } +0x823CDEE8 = { name = "rex_sub_823CDEE8" } +0x823CDF28 = { name = "rex_sub_823CDF28" } +0x823CDF68 = { name = "rex_sub_823CDF68" } +0x823CDFA8 = { name = "rex_sub_823CDFA8" } +0x823CDFE8 = { name = "rex_sub_823CDFE8" } +0x823CE028 = { name = "rex_sub_823CE028" } +0x823CE068 = { name = "rex_sub_823CE068" } +0x823CE0A8 = { name = "rex_sub_823CE0A8" } +0x823CE0E8 = { name = "rex_sub_823CE0E8" } +0x823CE128 = { name = "rex_sub_823CE128" } +0x823CE168 = { name = "rex_sub_823CE168" } +0x823CE178 = { name = "rex_sub_823CE178" } +0x823CE1B8 = { name = "rex_sub_823CE1B8" } +0x823CE1F8 = { name = "rex_sub_823CE1F8" } +0x823CE238 = { name = "rex_sub_823CE238" } +0x823CE278 = { name = "rex_sub_823CE278" } +0x823CE2B8 = { name = "rex_sub_823CE2B8" } +0x823CE2F8 = { name = "rex_sub_823CE2F8" } +0x823CE338 = { name = "rex_sub_823CE338" } +0x823CE360 = { name = "rex_sub_823CE360" } +0x823CE398 = { name = "rex_sub_823CE398" } +0x823CE408 = { name = "rex_sub_823CE408" } +0x823CE460 = { name = "rex_sub_823CE460" } +0x823CE4E0 = { name = "rex_sub_823CE4E0" } +0x823CE4F0 = { name = "rex_sub_823CE4F0" } +0x823CE5E0 = { name = "rex_sub_823CE5E0" } +0x823CE688 = { name = "rex_sub_823CE688" } +0x823CE788 = { name = "rex_sub_823CE788" } +0x823CE7E0 = { name = "rex_sub_823CE7E0" } +0x823CE838 = { name = "rex_sub_823CE838" } +0x823CE890 = { name = "rex_sub_823CE890" } +0x823CE8E8 = { name = "rex_sub_823CE8E8" } +0x823CE940 = { name = "rex_sub_823CE940" } +0x823CE998 = { name = "rex_sub_823CE998" } +0x823CE9F0 = { name = "rex_sub_823CE9F0" } +0x823CEA48 = { name = "rex_sub_823CEA48" } +0x823CEAA0 = { name = "rex_sub_823CEAA0" } +0x823CEAF8 = { name = "rex_sub_823CEAF8" } +0x823CEB50 = { name = "rex_sub_823CEB50" } +0x823CEBA8 = { name = "rex_sub_823CEBA8" } +0x823CEC00 = { name = "rex_sub_823CEC00" } +0x823CEE28 = { name = "rex_sub_823CEE28" } +0x823CEE90 = { name = "rex_sub_823CEE90" } +0x823CEF18 = { name = "rex_sub_823CEF18" } +0x823CEFA8 = { name = "rex_sub_823CEFA8" } +0x823CF110 = { name = "rex_sub_823CF110" } +0x823CF180 = { name = "rex_sub_823CF180" } +0x823CF1F0 = { name = "rex_sub_823CF1F0" } +0x823CF920 = { name = "rex_sub_823CF920" } +0x823CF930 = { name = "rex_sub_823CF930" } +0x823CF940 = { name = "rex_sub_823CF940" } +0x823CF988 = { name = "rex_sub_823CF988" } +0x823CF998 = { name = "rex_sub_823CF998" } +0x823CF9E0 = { name = "rex_sub_823CF9E0" } +0x823CF9F0 = { name = "rex_sub_823CF9F0" } +0x823CFA88 = { name = "rex_sub_823CFA88" } +0x823CFA98 = { name = "rex_sub_823CFA98" } +0x823CFAE0 = { name = "rex_sub_823CFAE0" } +0x823CFB90 = { name = "rex_sub_823CFB90" } +0x823CFCB8 = { name = "rex_sub_823CFCB8" } +0x823CFD68 = { name = "rex_sub_823CFD68" } +0x823CFD98 = { name = "rex_sub_823CFD98" } +0x823D0E00 = { name = "rex_sub_823D0E00" } +0x823D1070 = { name = "rex_sub_823D1070" } +0x823D1170 = { name = "rex_sub_823D1170" } +0x823D1538 = { name = "rex_sub_823D1538" } +0x823D15C8 = { name = "rex_sub_823D15C8" } +0x823D1630 = { name = "rex_sub_823D1630" } +0x823D1898 = { name = "rex_sub_823D1898" } +0x823D1958 = { name = "rex_sub_823D1958" } +0x823D1A48 = { name = "rex_sub_823D1A48" } +0x823D1AA8 = { name = "rex_sub_823D1AA8" } +0x823D1E28 = { name = "rex_sub_823D1E28" } +0x823D1F58 = { name = "rex_sub_823D1F58" } +0x823D20B0 = { name = "rex_sub_823D20B0" } +0x823D2120 = { name = "rex_sub_823D2120" } +0x823D21B8 = { name = "rex_sub_823D21B8" } +0x823D2208 = { name = "rex_sub_823D2208" } +0x823D22E0 = { name = "rex_sub_823D22E0" } +0x823D3670 = { name = "rex_sub_823D3670" } +0x823D37D8 = { name = "rex_sub_823D37D8" } +0x823D3E20 = { name = "rex_sub_823D3E20" } +0x823D4048 = { name = "rex_sub_823D4048" } +0x823D42A8 = { name = "rex_sub_823D42A8" } +0x823D4308 = { name = "rex_sub_823D4308" } +0x823D44E0 = { name = "rex_sub_823D44E0" } +0x823D46C8 = { name = "rex_sub_823D46C8" } +0x823D4758 = { name = "rex_sub_823D4758" } +0x823D47E8 = { name = "rex_sub_823D47E8" } +0x823D49C8 = { name = "rex_sub_823D49C8" } +0x823D4C88 = { name = "rex_sub_823D4C88" } +0x823D4CF0 = { name = "rex_sub_823D4CF0" } +0x823D4F38 = { name = "rex_sub_823D4F38" } +0x823D5148 = { name = "rex_sub_823D5148" } +0x823D51C0 = { name = "rex_sub_823D51C0" } +0x823D51D8 = { name = "rex_sub_823D51D8" } +0x823D51F0 = { name = "rex_sub_823D51F0" } +0x823D5248 = { name = "rex_sub_823D5248" } +0x823D53E8 = { name = "rex_sub_823D53E8" } +0x823D54A8 = { name = "rex_sub_823D54A8" } +0x823D5548 = { name = "rex_sub_823D5548" } +0x823D55E8 = { name = "rex_sub_823D55E8" } +0x823D5888 = { name = "rex_sub_823D5888" } +0x823D58F0 = { name = "rex_sub_823D58F0" } +0x823D5998 = { name = "rex_sub_823D5998" } +0x823D5B18 = { name = "rex_sub_823D5B18" } +0x823D5BC0 = { name = "rex_sub_823D5BC0" } +0x823D5D10 = { name = "rex_sub_823D5D10" } +0x823D5D80 = { name = "rex_sub_823D5D80" } +0x823D5E28 = { name = "rex_sub_823D5E28" } +0x823D5EA0 = { name = "rex_sub_823D5EA0" } +0x823D5F20 = { name = "rex_sub_823D5F20" } +0x823D6138 = { name = "rex_sub_823D6138" } +0x823D61D8 = { name = "rex_sub_823D61D8" } +0x823D69D8 = { name = "rex_sub_823D69D8" } +0x823D6CE0 = { name = "rex_sub_823D6CE0" } +0x823D6F90 = { name = "rex_sub_823D6F90" } +0x823D7228 = { name = "rex_sub_823D7228" } +0x823D7458 = { name = "rex_sub_823D7458" } +0x823D7648 = { name = "rex_sub_823D7648" } +0x823D78E0 = { name = "rex_sub_823D78E0" } +0x823D7C28 = { name = "rex_sub_823D7C28" } +0x823DA020 = { name = "rex_sub_823DA020" } +0x823DA278 = { name = "rex_sub_823DA278" } +0x823DA580 = { name = "rex_sub_823DA580" } +0x823DAB70 = { name = "rex_sub_823DAB70" } +0x823DAEA8 = { name = "rex_sub_823DAEA8" } +0x823DAFD8 = { name = "rex_sub_823DAFD8" } +0x823DB0F8 = { name = "rex_sub_823DB0F8" } +0x823DB198 = { name = "rex_sub_823DB198" } +0x823DB4C0 = { name = "rex_sub_823DB4C0" } +0x823DB848 = { name = "rex_sub_823DB848" } +0x823DBBD0 = { name = "rex_sub_823DBBD0" } +0x823DC588 = { name = "rex_sub_823DC588" } +0x823DCAA8 = { name = "rex_sub_823DCAA8" } +0x823DCF38 = { name = "rex_sub_823DCF38" } +0x823DD028 = { name = "rex_sub_823DD028" } +0x823DD178 = { name = "rex_sub_823DD178" } +0x823DD380 = { name = "rex_sub_823DD380" } +0x823DD470 = { name = "rex_sub_823DD470" } +0x823DD7B8 = { name = "rex_sub_823DD7B8" } +0x823DDA38 = { name = "rex_sub_823DDA38" } +0x823DDF28 = { name = "rex_sub_823DDF28" } +0x823DE510 = { name = "rex_sub_823DE510" } +0x823DE628 = { name = "rex_sub_823DE628" } +0x823DED30 = { name = "rex_sub_823DED30" } +0x823DF478 = { name = "rex_sub_823DF478" } +0x823DF558 = { name = "rex_sub_823DF558" } +0x823DF630 = { name = "rex_sub_823DF630" } +0x823DF930 = { name = "rex_sub_823DF930" } +0x823DFC58 = { name = "rex_sub_823DFC58" } +0x823DFFD8 = { name = "rex_sub_823DFFD8" } +0x823E0410 = { name = "rex_sub_823E0410" } +0x823E04B0 = { name = "rex_sub_823E04B0" } +0x823E0558 = { name = "rex_sub_823E0558" } +0x823E0978 = { name = "rex_sub_823E0978" } +0x823E0ED8 = { name = "rex_sub_823E0ED8" } +0x823E1060 = { name = "rex_sub_823E1060" } +0x823E1250 = { name = "rex_sub_823E1250" } +0x823E1320 = { name = "rex_sub_823E1320" } +0x823E13F0 = { name = "rex_sub_823E13F0" } diff --git a/src/ac6recomp_app.h b/src/ac6recomp_app.h new file mode 100644 index 00000000..a63c07b9 --- /dev/null +++ b/src/ac6recomp_app.h @@ -0,0 +1,33 @@ +// ac6recomp - ReXGlue Recompiled Project +// +// This file is yours to edit. 'rexglue migrate' will NOT overwrite it. +// Customize your app by overriding virtual hooks from rex::ReXApp. + +#pragma once + +#include +#include + +REXCVAR_DECLARE(bool, vfetch_index_rounding_bias); + +class Ac6recompApp : public rex::ReXApp { + public: + using rex::ReXApp::ReXApp; + + static std::unique_ptr Create( + rex::ui::WindowedAppContext& ctx) { + return std::unique_ptr(new Ac6recompApp(ctx, "ac6recomp", + PPCImageConfig)); + } + + protected: + void OnPreSetup(rex::RuntimeConfig& config) override { + // Fix black triangles caused by vertex fetch index precision (RCP). + REXCVAR_SET(vfetch_index_rounding_bias, true); + } + + // void OnPostSetup() override {} + // void OnCreateDialogs(rex::ui::ImGuiDrawer* drawer) override {} + // void OnShutdown() override {} + // void OnConfigurePaths(rex::PathConfig& paths) override {} +}; diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 00000000..fb2e7dfd --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,10 @@ +// ac6recomp - ReXGlue Recompiled Project +// +// This file is yours to edit. 'rexglue migrate' will NOT overwrite it. + +#include "generated/ac6recomp_config.h" +#include "generated/ac6recomp_init.h" + +#include "ac6recomp_app.h" + +REX_DEFINE_APP(ac6recomp, Ac6recompApp::Create) diff --git a/thirdparty/rexglue-sdk b/thirdparty/rexglue-sdk new file mode 160000 index 00000000..a1aea565 --- /dev/null +++ b/thirdparty/rexglue-sdk @@ -0,0 +1 @@ +Subproject commit a1aea56528c6ee22ff1985177ebc585e523b0ba8 From 6cb45c6f71036745d9482ba2d914966abd20f931 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 9 Mar 2026 03:33:19 -0500 Subject: [PATCH 02/29] Update rexglue-sdk submodule (keybind crash fix) --- thirdparty/rexglue-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/rexglue-sdk b/thirdparty/rexglue-sdk index a1aea565..289604d5 160000 --- a/thirdparty/rexglue-sdk +++ b/thirdparty/rexglue-sdk @@ -1 +1 @@ -Subproject commit a1aea56528c6ee22ff1985177ebc585e523b0ba8 +Subproject commit 289604d58700a07ad04b4cdb34be3d5a9a134df8 From 1c5a9079e325999cba2f231970d156f9a0856b3a Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 9 Mar 2026 03:37:00 -0500 Subject: [PATCH 03/29] Add new function to config --- ac6recomp_config.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/ac6recomp_config.toml b/ac6recomp_config.toml index af1b0b3e..f2353346 100644 --- a/ac6recomp_config.toml +++ b/ac6recomp_config.toml @@ -49,6 +49,7 @@ XMemCpy = 0x82382A90 0x820f5fc0 = {} 0x820f5fb0 = {} 0x82272990 = {} +0x820f6000 = {} 0x822f7120 = {} 0x82366a88 = {} 0x820f6080 = {} From cac5e1a11f4df9af0017b2d48a909004a3e98524 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 9 Mar 2026 04:12:05 -0500 Subject: [PATCH 04/29] more functions --- ac6recomp_config.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/ac6recomp_config.toml b/ac6recomp_config.toml index f2353346..c1dbd853 100644 --- a/ac6recomp_config.toml +++ b/ac6recomp_config.toml @@ -50,6 +50,7 @@ XMemCpy = 0x82382A90 0x820f5fb0 = {} 0x82272990 = {} 0x820f6000 = {} +0x822729a8 = {} 0x822f7120 = {} 0x82366a88 = {} 0x820f6080 = {} From 544ac4753fe2d5d8ddf4da6238781f7a31f5f6af Mon Sep 17 00:00:00 2001 From: rapidsamphire Date: Mon, 9 Mar 2026 04:13:17 -0500 Subject: [PATCH 05/29] Create LICENSE --- LICENSE | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..75c00a3e --- /dev/null +++ b/LICENSE @@ -0,0 +1,28 @@ +BSD 3-Clause License + +Copyright (c) 2026, rexglue + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. From b683f0cd65039721ebb4be3a4334c6cb73cdba15 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 9 Mar 2026 04:19:57 -0500 Subject: [PATCH 06/29] Add README --- README.md | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 00000000..60efe99c --- /dev/null +++ b/README.md @@ -0,0 +1,61 @@ +# AC6Recomp + +> [!CAUTION] +> This project is a work in progress, so a stable experience isn't guaranteed yet. It progresses in-game, but more testing and modifications are needed. + +Recompiled using the [ReXGlue SDK](https://github.com/rexglue/rexglue-sdk). + +## Prerequisites + +- [CMake](https://cmake.org/) 3.25+ +- [Ninja](https://ninja-build.org/) +- [Clang](https://releases.llvm.org/) (LLVM/Clang toolchain) +- A legally obtained copy of the game. + +## Building + +Clone the repository with submodules: + +```bash +git clone --recursive https://github.com/rapidsamphire/AC6Recomp.git +cd AC6Recomp +``` + +If you already cloned without `--recursive`: + +```bash +git submodule update --init --recursive +``` + +### Assets + +You need the game's original Xbox 360 disc image (ISO). Tools to extract it can be found [here](https://consolemods.org/wiki/Xbox:ISO_Extraction_%26_Repacking). + +After extraction, drop both the game assets and `default.xex` into the `assets/` directory. + +### Generate recompiled code + +```bash +cmake --preset win-amd64-relwithdebinfo +cmake --build --preset win-amd64-relwithdebinfo --target ac6recomp_codegen +``` + +### Build + +```bash +cmake --build --preset win-amd64-relwithdebinfo +``` + +(Relwithdebinfo is the recommended build preset as of now.) + +The executable will be in `out/build/win-amd64-relwithdebinfo/`. + +### Running + +```bash +./out/build/win-amd64-relwithdebinfo/ac6recomp assets +``` + +### Linux + +Replace `win-amd64-relwithdebinfo` with `linux-amd64-relwithdebinfo` in the commands above. From f534ff01f3ab4a068df658d2cb66cef482865d6a Mon Sep 17 00:00:00 2001 From: rapidsamphire Date: Mon, 9 Mar 2026 04:32:52 -0500 Subject: [PATCH 07/29] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 60efe99c..324dfb0f 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # AC6Recomp > [!CAUTION] -> This project is a work in progress, so a stable experience isn't guaranteed yet. It progresses in-game, but more testing and modifications are needed. +> This project is a work in progress, so a stable experience isn't guaranteed yet. It progresses in-game, but with likely bugs and crashes and more testing is needed. Recompiled using the [ReXGlue SDK](https://github.com/rexglue/rexglue-sdk). From 16c99ffcf3aa7ce7e8835d3f0c7b1bc3d6b425cc Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 9 Mar 2026 04:37:17 -0500 Subject: [PATCH 08/29] Add new function to config --- ac6recomp_config.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/ac6recomp_config.toml b/ac6recomp_config.toml index c1dbd853..b6ca914d 100644 --- a/ac6recomp_config.toml +++ b/ac6recomp_config.toml @@ -54,6 +54,7 @@ XMemCpy = 0x82382A90 0x822f7120 = {} 0x82366a88 = {} 0x820f6080 = {} +0x82322330 = {} 0x82272c68 = {} 0x82272c50 = {} 0x822e0eb8 = {} From f87cc7dde70e473af4d5e0f19011ac9ef939139d Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 9 Mar 2026 09:57:33 -0500 Subject: [PATCH 09/29] Add more rexcrt entries, add guest framerate counter --- CMakeLists.txt | 1 + ac6recomp_config.toml | 31 +++++++++++++++++++ src/ac6recomp_app.h | 11 ++++++- src/render_hooks.cpp | 71 +++++++++++++++++++++++++++++++++++++++++++ src/render_hooks.h | 23 ++++++++++++++ 5 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 src/render_hooks.cpp create mode 100644 src/render_hooks.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 31ace1c2..57d537b5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,6 +14,7 @@ include(generated/rexglue.cmake) # Sources set(AC6RECOMP_SOURCES src/main.cpp + src/render_hooks.cpp ) if(WIN32) diff --git a/ac6recomp_config.toml b/ac6recomp_config.toml index b6ca914d..11f09032 100644 --- a/ac6recomp_config.toml +++ b/ac6recomp_config.toml @@ -21,6 +21,14 @@ memcpy = 0x82382F18 memmove = 0x82383870 memset = 0x823830F0 XMemCpy = 0x82382A90 +strncmp = 0x82383930 +strncpy = 0x82382370 +strchr = 0x82382190 +strstr = 0x82382520 +strrchr = 0x8238E810 +strcpy_s = 0x823821D0 +memcpy_s = 0x82381DE0 +memmove_s = 0x823809F0 [functions] 0x82090000 = { name = "rex_sub_82090000" } @@ -10544,3 +10552,26 @@ XMemCpy = 0x82382A90 0x823E1250 = { name = "rex_sub_823E1250" } 0x823E1320 = { name = "rex_sub_823E1320" } 0x823E13F0 = { name = "rex_sub_823E13F0" } + +# --------------------------------------------------------------------------- +# Midasm hooks — 60fps unlock (Phase 1) +# --------------------------------------------------------------------------- + +# Skip `ori r3,r3,2` that sets vsync swap interval to 2 (30fps lock). +# When hook returns true, jumps past the ori to 0x821F075C. +[[midasm_hook]] +address = 0x821F0758 +name = "ac6VsyncIntervalHook" +jump_address_on_true = 0x821F075C + +# Override the FPS divisor in the delta time formula. +# r29 holds the divisor (default 60); hook sets it to 30 when unlocked. +[[midasm_hook]] +address = 0x821EFD38 +name = "ac6DeltaDivisorHook" +registers = ["r29"] + +# Record frame timestamps before VdSwap for timing overlay. +[[midasm_hook]] +address = 0x821F0664 +name = "ac6PresentTimingHook" diff --git a/src/ac6recomp_app.h b/src/ac6recomp_app.h index a63c07b9..3a15ab78 100644 --- a/src/ac6recomp_app.h +++ b/src/ac6recomp_app.h @@ -7,6 +7,9 @@ #include #include +#include + +#include "render_hooks.h" REXCVAR_DECLARE(bool, vfetch_index_rounding_bias); @@ -26,8 +29,14 @@ class Ac6recompApp : public rex::ReXApp { REXCVAR_SET(vfetch_index_rounding_bias, true); } + void OnCreateDialogs(rex::ui::ImGuiDrawer* drawer) override { + debug_overlay()->SetStatsProvider([] { + auto gs = ac6::GetFrameStats(); + return rex::ui::FrameStats{gs.frame_time_ms, gs.fps, gs.frame_count}; + }); + } + // void OnPostSetup() override {} - // void OnCreateDialogs(rex::ui::ImGuiDrawer* drawer) override {} // void OnShutdown() override {} // void OnConfigurePaths(rex::PathConfig& paths) override {} }; diff --git a/src/render_hooks.cpp b/src/render_hooks.cpp new file mode 100644 index 00000000..495ac9a6 --- /dev/null +++ b/src/render_hooks.cpp @@ -0,0 +1,71 @@ +/** + * @file render_hooks.cpp + * @brief Mid-asm hooks for vsync interval, frame timing, and 60fps unlock. + */ +#include "render_hooks.h" + +#include +#include + +#include +#include + +REXCVAR_DEFINE_BOOL(ac6_unlock_fps, false, "AC6", "Unlock frame rate to 60fps"); + +using Clock = std::chrono::steady_clock; + +namespace { + +// Frame timing state (written on render thread, read from UI thread). +std::atomic g_frame_time_ms{0.0}; +std::atomic g_fps{0.0}; +std::atomic g_frame_count{0}; +Clock::time_point g_frame_start{}; + +} // namespace + +// --------------------------------------------------------------------------- +// Hook: VdSetDisplayMode swap interval skip (0x821F0758) +// --------------------------------------------------------------------------- +bool ac6VsyncIntervalHook() { + return REXCVAR_GET(ac6_unlock_fps); +} + +// --------------------------------------------------------------------------- +// Hook: Delta time divisor override (0x821EFD38) +// --------------------------------------------------------------------------- +void ac6DeltaDivisorHook(PPCRegister& r29) { + if (REXCVAR_GET(ac6_unlock_fps)) { + r29.u64 = 30; + } +} + +// --------------------------------------------------------------------------- +// Hook: Frame timing stats (0x821F0664, before VdSwap call) +// +// Records timestamp at each present call to measure render-thread frame time. +// --------------------------------------------------------------------------- +void ac6PresentTimingHook() { + auto now = Clock::now(); + if (g_frame_start.time_since_epoch().count() != 0) { + double ms = + std::chrono::duration(now - g_frame_start) + .count(); + g_frame_time_ms.store(ms, std::memory_order_relaxed); + g_fps.store(ms > 0.0 ? 1000.0 / ms : 0.0, std::memory_order_relaxed); + g_frame_count.fetch_add(1, std::memory_order_relaxed); + } + g_frame_start = now; +} + +namespace ac6 { + +FrameStats GetFrameStats() { + return FrameStats{ + g_frame_time_ms.load(std::memory_order_relaxed), + g_fps.load(std::memory_order_relaxed), + g_frame_count.load(std::memory_order_relaxed), + }; +} + +} // namespace ac6 diff --git a/src/render_hooks.h b/src/render_hooks.h new file mode 100644 index 00000000..8949276f --- /dev/null +++ b/src/render_hooks.h @@ -0,0 +1,23 @@ +/** + * @file render_hooks.h + * @brief Mid-asm hooks for vsync interval, frame timing, and 60fps unlock. + */ +#pragma once + +#include + +#include + +REXCVAR_DECLARE(bool, ac6_unlock_fps); + +namespace ac6 { + +struct FrameStats { + double frame_time_ms; + double fps; + uint64_t frame_count; +}; + +FrameStats GetFrameStats(); + +} // namespace ac6 From f30af37279851b529366866e1cc563077a196d5d Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 10 Mar 2026 13:02:16 -0500 Subject: [PATCH 10/29] Add D3D state shadowing, 60fps unlock, and render hooks --- .gitignore | 1 + CMakeLists.txt | 1 + CMakePresets.json | 4 +- ac6recomp_config.toml | 46 +++++++-- src/ac6recomp_app.h | 9 -- src/d3d_hooks.cpp | 221 +++++++++++++++++++++++++++++++++++++++++ src/d3d_hooks.h | 21 ++++ src/d3d_state.h | 79 +++++++++++++++ src/main.cpp | 4 - src/render_hooks.cpp | 39 ++++---- src/render_hooks.h | 4 - thirdparty/rexglue-sdk | 2 +- 12 files changed, 383 insertions(+), 48 deletions(-) create mode 100644 src/d3d_hooks.cpp create mode 100644 src/d3d_hooks.h create mode 100644 src/d3d_state.h diff --git a/.gitignore b/.gitignore index 339f188e..4a730508 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Build output out/ +bin/ # Generated recomp code generated/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 57d537b5..6ff01a86 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,7 @@ include(generated/rexglue.cmake) set(AC6RECOMP_SOURCES src/main.cpp src/render_hooks.cpp + src/d3d_hooks.cpp ) if(WIN32) diff --git a/CMakePresets.json b/CMakePresets.json index 6f951e37..cdbea71e 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -10,8 +10,8 @@ "cacheVariables": { "CMAKE_C_COMPILER": "clang", "CMAKE_CXX_COMPILER": "clang++", - "CMAKE_C_FLAGS": "-march=x86-64-v3", - "CMAKE_CXX_FLAGS": "-march=x86-64-v3", + "CMAKE_C_FLAGS": "-march=x86-64-v3 -w", + "CMAKE_CXX_FLAGS": "-march=x86-64-v3 -w", "REXSDK_DIR": "${sourceDir}/thirdparty/rexglue-sdk" }, "condition": { diff --git a/ac6recomp_config.toml b/ac6recomp_config.toml index 11f09032..4aee7fdb 100644 --- a/ac6recomp_config.toml +++ b/ac6recomp_config.toml @@ -57,6 +57,7 @@ memmove_s = 0x823809F0 0x820f5fc0 = {} 0x820f5fb0 = {} 0x82272990 = {} +0x82272668 = {} 0x820f6000 = {} 0x822729a8 = {} 0x822f7120 = {} @@ -10550,28 +10551,57 @@ memmove_s = 0x823809F0 0x823E0ED8 = { name = "rex_sub_823E0ED8" } 0x823E1060 = { name = "rex_sub_823E1060" } 0x823E1250 = { name = "rex_sub_823E1250" } +0x821e27b8 = {} 0x823E1320 = { name = "rex_sub_823E1320" } 0x823E13F0 = { name = "rex_sub_823E13F0" } +0x82272c98 = {} # --------------------------------------------------------------------------- # Midasm hooks — 60fps unlock (Phase 1) # --------------------------------------------------------------------------- -# Skip `ori r3,r3,2` that sets vsync swap interval to 2 (30fps lock). -# When hook returns true, jumps past the ori to 0x821F075C. +# Bypass the flip interval gate in the vblank handler (rex_sub_821EEAC8). +# At 0x821EEBE4, the `ble cr6,0x821EEBEC` branches to the render path +# In D3D_VblankHandler (0x821EEAC8), the branch at 0x821EEBE0 +# takes the render path when the vblank counter (offset 52) <= 1. +# This hook was intended as the 60fps unlock but the counter +# naturally cycles 0→1→0 per frame, so the condition always passes +# and the hook never actually fires. Kept for safety/fallback. [[midasm_hook]] -address = 0x821F0758 -name = "ac6VsyncIntervalHook" -jump_address_on_true = 0x821F075C +address = 0x821EEBE4 +name = "ac6FlipIntervalHook" +jump_address_on_true = 0x821EEBEC # Override the FPS divisor in the delta time formula. -# r29 holds the divisor (default 60); hook sets it to 30 when unlocked. +# r29 holds the divisor (default 60); hook always sets it to 30 +# so the delta formula produces correct game speed at any framerate. +# At 30fps: delta = min(101, 100) = 100. At 60fps: delta ≈ 51. +# Both yield ~3000 sim-units/sec matching the original 30fps baseline. [[midasm_hook]] address = 0x821EFD38 name = "ac6DeltaDivisorHook" registers = ["r29"] -# Record frame timestamps before VdSwap for timing overlay. +# Record frame timestamps at each D3DDevice_Swap call for timing overlay. +# Placed before the device[21516] branch so it fires unconditionally — +# when that field is non-zero the function skips VdSwap, which caused +# the old hook at 0x821F0664 to miss every other frame at 60fps. [[midasm_hook]] -address = 0x821F0664 +address = 0x821F05F8 name = "ac6PresentTimingHook" + +# Force D3DPRESENT_INTERVAL to ONE (60fps) when the unlock CVar is on. +# +# In sub_821EFE78 (the EndFrame/present-interval encoder), the game +# loads D3DPRESENT_INTERVAL from device[13580] into r10 at 0x821EFF2C. +# The comparison chain starting at 0x821EFF30 converts it to a GPU +# swap interval count (2 = every 2nd VBlank = 30fps). +# +# This hook fires before the first comparison; when enabled it forces +# r10 = 1 (INTERVAL_ONE) and jumps to loc_821EFF74 which is the +# existing code path for "present every VBlank" = 60fps. +[[midasm_hook]] +address = 0x821EFF30 +name = "ac6PresentIntervalHook" +registers = ["r10"] +jump_address_on_true = 0x821EFF74 diff --git a/src/ac6recomp_app.h b/src/ac6recomp_app.h index 3a15ab78..79fa6155 100644 --- a/src/ac6recomp_app.h +++ b/src/ac6recomp_app.h @@ -1,8 +1,3 @@ -// ac6recomp - ReXGlue Recompiled Project -// -// This file is yours to edit. 'rexglue migrate' will NOT overwrite it. -// Customize your app by overriding virtual hooks from rex::ReXApp. - #pragma once #include @@ -25,7 +20,6 @@ class Ac6recompApp : public rex::ReXApp { protected: void OnPreSetup(rex::RuntimeConfig& config) override { - // Fix black triangles caused by vertex fetch index precision (RCP). REXCVAR_SET(vfetch_index_rounding_bias, true); } @@ -36,7 +30,4 @@ class Ac6recompApp : public rex::ReXApp { }); } - // void OnPostSetup() override {} - // void OnShutdown() override {} - // void OnConfigurePaths(rex::PathConfig& paths) override {} }; diff --git a/src/d3d_hooks.cpp b/src/d3d_hooks.cpp new file mode 100644 index 00000000..39c74189 --- /dev/null +++ b/src/d3d_hooks.cpp @@ -0,0 +1,221 @@ +#include "d3d_hooks.h" + +#include +#include +#include + +REXCVAR_DEFINE_BOOL(ac6_d3d_trace, false, "AC6/Render", + "Log every D3D device state change and draw call"); + +namespace { +const rex::LogCategoryId kLogGPU = rex::log::GPU; +} // namespace + +namespace { + +ac6::d3d::ShadowState g_shadow{}; +ac6::d3d::DrawStats g_live_stats{}; +ac6::d3d::DrawStatsSnapshot g_snapshot{}; + +} // namespace + +PPC_EXTERN_FUNC(__imp__rex_sub_821DEF18); // DrawIndexedVertices +PPC_EXTERN_FUNC(__imp__rex_sub_821DF300); // DrawIndexedVertices_Shared +PPC_EXTERN_FUNC(__imp__rex_sub_821DD0A8); // SetTexture +PPC_EXTERN_FUNC(__imp__rex_sub_821D95C8); // SetRenderTarget +PPC_EXTERN_FUNC(__imp__rex_sub_821D9D38); // SetDepthStencil +PPC_EXTERN_FUNC(__imp__rex_sub_821DE7D0); // SetVertexDeclaration +PPC_EXTERN_FUNC(__imp__rex_sub_821DD1C8); // SetIndexBuffer +PPC_EXTERN_FUNC(__imp__rex_sub_821DA698); // SetViewport +PPC_EXTERN_FUNC(__imp__rex_sub_821E2BB8); // Resolve + +// D3DDevice_DrawIndexedVertices (0x821DEF18) +PPC_FUNC_IMPL(rex_sub_821DEF18) { + PPC_FUNC_PROLOGUE(); + + uint32_t index_count = ctx.r6.u32; + + g_live_stats.draw_calls.fetch_add(1, std::memory_order_relaxed); + g_live_stats.draw_calls_indexed.fetch_add(1, std::memory_order_relaxed); + g_live_stats.total_indices.fetch_add(index_count, std::memory_order_relaxed); + + if (REXCVAR_GET(ac6_d3d_trace)) { + REXLOG_CAT_TRACE(kLogGPU, + "DrawIndexedVertices: prim={} start={} count={}", + ctx.r4.u32, ctx.r5.u32, index_count); + } + + __imp__rex_sub_821DEF18(ctx, base); +} + +// D3DDevice_DrawIndexedVertices_Shared (0x821DF300) +PPC_FUNC_IMPL(rex_sub_821DF300) { + PPC_FUNC_PROLOGUE(); + + uint32_t index_count = ctx.r7.u32; + + g_live_stats.draw_calls.fetch_add(1, std::memory_order_relaxed); + g_live_stats.draw_calls_indexed_shared.fetch_add(1, std::memory_order_relaxed); + g_live_stats.total_indices.fetch_add(index_count, std::memory_order_relaxed); + + if (REXCVAR_GET(ac6_d3d_trace)) { + REXLOG_CAT_TRACE(kLogGPU, + "DrawIndexedVertices_Shared: prim={} flags={} start={} count={}", + ctx.r4.u32, ctx.r5.u32, ctx.r6.u32, index_count); + } + + __imp__rex_sub_821DF300(ctx, base); +} + +// D3DDevice_SetTexture (0x821DD0A8) +PPC_FUNC_IMPL(rex_sub_821DD0A8) { + PPC_FUNC_PROLOGUE(); + + uint32_t slot = ctx.r4.u32; + uint32_t texture_ptr = ctx.r5.u32; + + if (slot < ac6::d3d::kMaxTextures) { + g_shadow.textures[slot] = texture_ptr; + } + g_live_stats.set_texture_calls.fetch_add(1, std::memory_order_relaxed); + + if (REXCVAR_GET(ac6_d3d_trace)) { + REXLOG_CAT_TRACE(kLogGPU, + "SetTexture: slot={} texture=0x{:08X}", + slot, texture_ptr); + } + + __imp__rex_sub_821DD0A8(ctx, base); +} + +// D3DDevice_SetRenderTarget (0x821D95C8) +PPC_FUNC_IMPL(rex_sub_821D95C8) { + PPC_FUNC_PROLOGUE(); + + uint32_t index = ctx.r4.u32; + uint32_t surface = ctx.r5.u32; + + if (index < ac6::d3d::kMaxRenderTargets) { + g_shadow.render_targets[index] = surface; + } + g_live_stats.set_render_target_calls.fetch_add(1, std::memory_order_relaxed); + + if (REXCVAR_GET(ac6_d3d_trace)) { + REXLOG_CAT_TRACE(kLogGPU, + "SetRenderTarget: index={} surface=0x{:08X}", + index, surface); + } + + __imp__rex_sub_821D95C8(ctx, base); +} + +// D3DDevice_SetDepthStencil (0x821D9D38) +PPC_FUNC_IMPL(rex_sub_821D9D38) { + PPC_FUNC_PROLOGUE(); + + uint32_t surface = ctx.r4.u32; + g_shadow.depth_stencil = surface; + g_live_stats.set_depth_stencil_calls.fetch_add(1, std::memory_order_relaxed); + + if (REXCVAR_GET(ac6_d3d_trace)) { + REXLOG_CAT_TRACE(kLogGPU, + "SetDepthStencil: surface=0x{:08X}", surface); + } + + __imp__rex_sub_821D9D38(ctx, base); +} + +// D3DDevice_SetVertexDeclaration (0x821DE7D0) +PPC_FUNC_IMPL(rex_sub_821DE7D0) { + PPC_FUNC_PROLOGUE(); + + uint32_t decl = ctx.r4.u32; + g_shadow.vertex_declaration = decl; + g_live_stats.set_vertex_decl_calls.fetch_add(1, std::memory_order_relaxed); + + if (REXCVAR_GET(ac6_d3d_trace)) { + REXLOG_CAT_TRACE(kLogGPU, + "SetVertexDeclaration: decl=0x{:08X}", decl); + } + + __imp__rex_sub_821DE7D0(ctx, base); +} + +// D3DDevice_SetIndexBuffer (0x821DD1C8) +PPC_FUNC_IMPL(rex_sub_821DD1C8) { + PPC_FUNC_PROLOGUE(); + + uint32_t buffer = ctx.r4.u32; + g_shadow.index_buffer = buffer; + g_live_stats.set_index_buffer_calls.fetch_add(1, std::memory_order_relaxed); + + if (REXCVAR_GET(ac6_d3d_trace)) { + REXLOG_CAT_TRACE(kLogGPU, + "SetIndexBuffer: buffer=0x{:08X}", buffer); + } + + __imp__rex_sub_821DD1C8(ctx, base); +} + +// D3DDevice_SetViewport (0x821DA698) +PPC_FUNC_IMPL(rex_sub_821DA698) { + PPC_FUNC_PROLOGUE(); + + g_shadow.viewport.x = ctx.r4.u32; + g_shadow.viewport.y = ctx.r5.u32; + g_shadow.viewport.width = ctx.r6.u32; + g_shadow.viewport.height = ctx.r7.u32; + g_live_stats.set_viewport_calls.fetch_add(1, std::memory_order_relaxed); + + if (REXCVAR_GET(ac6_d3d_trace)) { + REXLOG_CAT_TRACE(kLogGPU, + "SetViewport: {}x{} at ({},{})", + g_shadow.viewport.width, g_shadow.viewport.height, + g_shadow.viewport.x, g_shadow.viewport.y); + } + + __imp__rex_sub_821DA698(ctx, base); +} + +// D3DDevice_Resolve (0x821E2BB8) +PPC_FUNC_IMPL(rex_sub_821E2BB8) { + PPC_FUNC_PROLOGUE(); + + g_live_stats.resolve_calls.fetch_add(1, std::memory_order_relaxed); + + if (REXCVAR_GET(ac6_d3d_trace)) { + REXLOG_CAT_TRACE(kLogGPU, "Resolve"); + } + + __imp__rex_sub_821E2BB8(ctx, base); +} + +namespace ac6::d3d { + +void OnFrameBoundary() { + g_snapshot.draw_calls = g_live_stats.draw_calls.load(std::memory_order_relaxed); + g_snapshot.draw_calls_indexed = g_live_stats.draw_calls_indexed.load(std::memory_order_relaxed); + g_snapshot.draw_calls_indexed_shared = g_live_stats.draw_calls_indexed_shared.load(std::memory_order_relaxed); + g_snapshot.total_indices = g_live_stats.total_indices.load(std::memory_order_relaxed); + g_snapshot.set_texture_calls = g_live_stats.set_texture_calls.load(std::memory_order_relaxed); + g_snapshot.set_render_target_calls = g_live_stats.set_render_target_calls.load(std::memory_order_relaxed); + g_snapshot.set_depth_stencil_calls = g_live_stats.set_depth_stencil_calls.load(std::memory_order_relaxed); + g_snapshot.set_vertex_decl_calls = g_live_stats.set_vertex_decl_calls.load(std::memory_order_relaxed); + g_snapshot.set_index_buffer_calls = g_live_stats.set_index_buffer_calls.load(std::memory_order_relaxed); + g_snapshot.set_stream_source_calls = g_live_stats.set_stream_source_calls.load(std::memory_order_relaxed); + g_snapshot.set_viewport_calls = g_live_stats.set_viewport_calls.load(std::memory_order_relaxed); + g_snapshot.clear_calls = g_live_stats.clear_calls.load(std::memory_order_relaxed); + g_snapshot.resolve_calls = g_live_stats.resolve_calls.load(std::memory_order_relaxed); + + g_live_stats.Reset(); +} + +const DrawStatsSnapshot& GetDrawStats() { + return g_snapshot; +} + +const ShadowState& GetShadowState() { + return g_shadow; +} + +} // namespace ac6::d3d diff --git a/src/d3d_hooks.h b/src/d3d_hooks.h new file mode 100644 index 00000000..ecd352c8 --- /dev/null +++ b/src/d3d_hooks.h @@ -0,0 +1,21 @@ +/** + * @file d3d_hooks.h + * @brief Public interface for the D3D state shadowing layer. + * + * Provides per-frame draw statistics and a read-only view of the current + * D3D device shadow state. Call OnFrameBoundary() once per frame (typically + * from the present/swap hook) to snapshot stats and reset counters. + */ +#pragma once + +#include "d3d_state.h" + +namespace ac6::d3d { + +void OnFrameBoundary(); + +const DrawStatsSnapshot& GetDrawStats(); + +const ShadowState& GetShadowState(); + +} // namespace ac6::d3d diff --git a/src/d3d_state.h b/src/d3d_state.h new file mode 100644 index 00000000..a67e4af6 --- /dev/null +++ b/src/d3d_state.h @@ -0,0 +1,79 @@ +#pragma once + +#include +#include +#include + +namespace ac6::d3d { + +inline constexpr uint32_t kMaxRenderTargets = 5; +inline constexpr uint32_t kMaxTextures = 16; +inline constexpr uint32_t kMaxStreams = 16; + +struct DrawStats { + std::atomic draw_calls{0}; + std::atomic draw_calls_indexed{0}; + std::atomic draw_calls_indexed_shared{0}; + std::atomic total_indices{0}; + std::atomic set_texture_calls{0}; + std::atomic set_render_target_calls{0}; + std::atomic set_depth_stencil_calls{0}; + std::atomic set_vertex_decl_calls{0}; + std::atomic set_index_buffer_calls{0}; + std::atomic set_stream_source_calls{0}; + std::atomic set_viewport_calls{0}; + std::atomic clear_calls{0}; + std::atomic resolve_calls{0}; + + void Reset() { + draw_calls.store(0, std::memory_order_relaxed); + draw_calls_indexed.store(0, std::memory_order_relaxed); + draw_calls_indexed_shared.store(0, std::memory_order_relaxed); + total_indices.store(0, std::memory_order_relaxed); + set_texture_calls.store(0, std::memory_order_relaxed); + set_render_target_calls.store(0, std::memory_order_relaxed); + set_depth_stencil_calls.store(0, std::memory_order_relaxed); + set_vertex_decl_calls.store(0, std::memory_order_relaxed); + set_index_buffer_calls.store(0, std::memory_order_relaxed); + set_stream_source_calls.store(0, std::memory_order_relaxed); + set_viewport_calls.store(0, std::memory_order_relaxed); + clear_calls.store(0, std::memory_order_relaxed); + resolve_calls.store(0, std::memory_order_relaxed); + } +}; + +struct DrawStatsSnapshot { + uint32_t draw_calls; + uint32_t draw_calls_indexed; + uint32_t draw_calls_indexed_shared; + uint64_t total_indices; + uint32_t set_texture_calls; + uint32_t set_render_target_calls; + uint32_t set_depth_stencil_calls; + uint32_t set_vertex_decl_calls; + uint32_t set_index_buffer_calls; + uint32_t set_stream_source_calls; + uint32_t set_viewport_calls; + uint32_t clear_calls; + uint32_t resolve_calls; +}; + +// All values are guest addresses into PPC address space. +struct ShadowState { + uint32_t device{0}; + std::array render_targets{}; + uint32_t depth_stencil{0}; + std::array textures{}; + uint32_t vertex_declaration{0}; + uint32_t index_buffer{0}; + std::array stream_sources{}; + + struct { + uint32_t x{0}; + uint32_t y{0}; + uint32_t width{0}; + uint32_t height{0}; + } viewport; +}; + +} // namespace ac6::d3d diff --git a/src/main.cpp b/src/main.cpp index fb2e7dfd..9c0a5b6d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,7 +1,3 @@ -// ac6recomp - ReXGlue Recompiled Project -// -// This file is yours to edit. 'rexglue migrate' will NOT overwrite it. - #include "generated/ac6recomp_config.h" #include "generated/ac6recomp_init.h" diff --git a/src/render_hooks.cpp b/src/render_hooks.cpp index 495ac9a6..d96c0350 100644 --- a/src/render_hooks.cpp +++ b/src/render_hooks.cpp @@ -1,8 +1,5 @@ -/** - * @file render_hooks.cpp - * @brief Mid-asm hooks for vsync interval, frame timing, and 60fps unlock. - */ #include "render_hooks.h" +#include "d3d_hooks.h" #include #include @@ -16,7 +13,6 @@ using Clock = std::chrono::steady_clock; namespace { -// Frame timing state (written on render thread, read from UI thread). std::atomic g_frame_time_ms{0.0}; std::atomic g_fps{0.0}; std::atomic g_frame_count{0}; @@ -24,35 +20,38 @@ Clock::time_point g_frame_start{}; } // namespace -// --------------------------------------------------------------------------- -// Hook: VdSetDisplayMode swap interval skip (0x821F0758) -// --------------------------------------------------------------------------- -bool ac6VsyncIntervalHook() { +// Fallback flip interval bypass — rarely fires since vblank counter cycles 0→1→0. +bool ac6FlipIntervalHook() { return REXCVAR_GET(ac6_unlock_fps); } -// --------------------------------------------------------------------------- -// Hook: Delta time divisor override (0x821EFD38) -// --------------------------------------------------------------------------- -void ac6DeltaDivisorHook(PPCRegister& r29) { +// Primary 60fps unlock — forces D3DPRESENT_INTERVAL to 1 (every VBlank). +bool ac6PresentIntervalHook(PPCRegister& r10) { if (REXCVAR_GET(ac6_unlock_fps)) { - r29.u64 = 30; + r10.u64 = 1; + return true; } + return false; } -// --------------------------------------------------------------------------- -// Hook: Frame timing stats (0x821F0664, before VdSwap call) -// -// Records timestamp at each present call to measure render-thread frame time. -// --------------------------------------------------------------------------- +// Divisor=30 makes the delta time formula self-correct at any framerate. +void ac6DeltaDivisorHook(PPCRegister& r29) { + r29.u64 = 30; +} + +// Hooked before the device[21516] branch so it fires every frame, not just VdSwap frames. void ac6PresentTimingHook() { + ac6::d3d::OnFrameBoundary(); + auto now = Clock::now(); if (g_frame_start.time_since_epoch().count() != 0) { double ms = std::chrono::duration(now - g_frame_start) .count(); + float fps_val = ms > 0.0 ? static_cast(1000.0 / ms) : 0.0f; + g_frame_time_ms.store(ms, std::memory_order_relaxed); - g_fps.store(ms > 0.0 ? 1000.0 / ms : 0.0, std::memory_order_relaxed); + g_fps.store(static_cast(fps_val), std::memory_order_relaxed); g_frame_count.fetch_add(1, std::memory_order_relaxed); } g_frame_start = now; diff --git a/src/render_hooks.h b/src/render_hooks.h index 8949276f..95ddcca5 100644 --- a/src/render_hooks.h +++ b/src/render_hooks.h @@ -1,7 +1,3 @@ -/** - * @file render_hooks.h - * @brief Mid-asm hooks for vsync interval, frame timing, and 60fps unlock. - */ #pragma once #include diff --git a/thirdparty/rexglue-sdk b/thirdparty/rexglue-sdk index 289604d5..1df9f883 160000 --- a/thirdparty/rexglue-sdk +++ b/thirdparty/rexglue-sdk @@ -1 +1 @@ -Subproject commit 289604d58700a07ad04b4cdb34be3d5a9a134df8 +Subproject commit 1df9f8831cf4fff67a76cda0e5e9a56209f6093f From db9cf0492291d1d921c974a3741caa4c7fe6ea8a Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 10 Mar 2026 13:13:09 -0500 Subject: [PATCH 11/29] ac6_unlock_fps and vsync are set true and false respectively by default. --- .vscode/launch.json | 8 +++++++- src/ac6recomp_app.h | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 1dd2ec7a..dfec1bc1 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -9,7 +9,13 @@ "args": [ "C:\\Users\\Zalamander\\AC6Recomp\\assets", "--enable_console=false", - "--log_level=info" + "--log_level=info", + "--d3d12_allow_variable_refresh_rate_and_tearing=true", + "--swap_post_effect=fxaa", + "--present_effect=bilinear", + "--present_fsr_quality_mode=fsr", + "--resolution=1440p", + "--fullscreen=true" ], "cwd": "${workspaceFolder}", "console": "integratedTerminal" diff --git a/src/ac6recomp_app.h b/src/ac6recomp_app.h index 79fa6155..667c254e 100644 --- a/src/ac6recomp_app.h +++ b/src/ac6recomp_app.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include @@ -21,6 +22,8 @@ class Ac6recompApp : public rex::ReXApp { protected: void OnPreSetup(rex::RuntimeConfig& config) override { REXCVAR_SET(vfetch_index_rounding_bias, true); + REXCVAR_SET(ac6_unlock_fps, true); + REXCVAR_SET(vsync, false); } void OnCreateDialogs(rex::ui::ImGuiDrawer* drawer) override { From ca9bdff989a58fd3582088c97b8ae5f9572018a2 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 10 Mar 2026 14:00:32 -0500 Subject: [PATCH 12/29] another missing function --- .vscode/launch.json | 5 ++--- ac6recomp_config.toml | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index dfec1bc1..3e6fa827 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -11,9 +11,8 @@ "--enable_console=false", "--log_level=info", "--d3d12_allow_variable_refresh_rate_and_tearing=true", - "--swap_post_effect=fxaa", - "--present_effect=bilinear", - "--present_fsr_quality_mode=fsr", + "--present_effect=fsr3", + "--present_fsr_quality_mode=nativeaa", "--resolution=1440p", "--fullscreen=true" ], diff --git a/ac6recomp_config.toml b/ac6recomp_config.toml index 4aee7fdb..89a170b4 100644 --- a/ac6recomp_config.toml +++ b/ac6recomp_config.toml @@ -10555,6 +10555,7 @@ memmove_s = 0x823809F0 0x823E1320 = { name = "rex_sub_823E1320" } 0x823E13F0 = { name = "rex_sub_823E13F0" } 0x82272c98 = {} +0x82322300 = {} # --------------------------------------------------------------------------- # Midasm hooks — 60fps unlock (Phase 1) From 551209701cf0c9e883d633979586103f266bb068 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 10 Mar 2026 19:16:32 -0500 Subject: [PATCH 13/29] another missing func --- ac6recomp_config.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ac6recomp_config.toml b/ac6recomp_config.toml index 89a170b4..6b710d95 100644 --- a/ac6recomp_config.toml +++ b/ac6recomp_config.toml @@ -10556,9 +10556,10 @@ memmove_s = 0x823809F0 0x823E13F0 = { name = "rex_sub_823E13F0" } 0x82272c98 = {} 0x82322300 = {} +0x82272cc8 = {} # --------------------------------------------------------------------------- -# Midasm hooks — 60fps unlock (Phase 1) +# Midasm hooks — 60fps unlock # --------------------------------------------------------------------------- # Bypass the flip interval gate in the vblank handler (rex_sub_821EEAC8). From 6f48114625a7567d6f1f931e4b377c2f62ba6248 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 11 Mar 2026 09:47:46 -0500 Subject: [PATCH 14/29] Added more D3D Device hooks, more function shit{ --- ac6recomp_config.toml | 2 + src/d3d_hooks.cpp | 225 ++++++++++++++++++++++++++++++++++++++++++ src/d3d_state.h | 35 ++++++- src/render_hooks.cpp | 2 +- 4 files changed, 261 insertions(+), 3 deletions(-) diff --git a/ac6recomp_config.toml b/ac6recomp_config.toml index 6b710d95..53e88f22 100644 --- a/ac6recomp_config.toml +++ b/ac6recomp_config.toml @@ -10557,6 +10557,7 @@ memmove_s = 0x823809F0 0x82272c98 = {} 0x82322300 = {} 0x82272cc8 = {} +0x82272918 = {} # --------------------------------------------------------------------------- # Midasm hooks — 60fps unlock @@ -10591,6 +10592,7 @@ registers = ["r29"] [[midasm_hook]] address = 0x821F05F8 name = "ac6PresentTimingHook" +registers = ["r31"] # Force D3DPRESENT_INTERVAL to ONE (60fps) when the unlock CVar is on. # diff --git a/src/d3d_hooks.cpp b/src/d3d_hooks.cpp index 39c74189..6d02663e 100644 --- a/src/d3d_hooks.cpp +++ b/src/d3d_hooks.cpp @@ -21,12 +21,22 @@ ac6::d3d::DrawStatsSnapshot g_snapshot{}; PPC_EXTERN_FUNC(__imp__rex_sub_821DEF18); // DrawIndexedVertices PPC_EXTERN_FUNC(__imp__rex_sub_821DF300); // DrawIndexedVertices_Shared +PPC_EXTERN_FUNC(__imp__rex_sub_821DEA48); // DrawPrimitive PPC_EXTERN_FUNC(__imp__rex_sub_821DD0A8); // SetTexture PPC_EXTERN_FUNC(__imp__rex_sub_821D95C8); // SetRenderTarget PPC_EXTERN_FUNC(__imp__rex_sub_821D9D38); // SetDepthStencil PPC_EXTERN_FUNC(__imp__rex_sub_821DE7D0); // SetVertexDeclaration PPC_EXTERN_FUNC(__imp__rex_sub_821DD1C8); // SetIndexBuffer PPC_EXTERN_FUNC(__imp__rex_sub_821DA698); // SetViewport +PPC_EXTERN_FUNC(__imp__rex_sub_821DC538); // SetStreamSource +PPC_EXTERN_FUNC(__imp__rex_sub_821DC6C8); // SetSamplerState_MagFilter +PPC_EXTERN_FUNC(__imp__rex_sub_821DC9C0); // SetSamplerState_C +PPC_EXTERN_FUNC(__imp__rex_sub_821DCA68); // SetSamplerState_B +PPC_EXTERN_FUNC(__imp__rex_sub_821DCB08); // SetSamplerState_MipLevel +PPC_EXTERN_FUNC(__imp__rex_sub_821DCB88); // SetSamplerState_A +PPC_EXTERN_FUNC(__imp__rex_sub_821DBAF8); // SetShaderGPRAlloc +PPC_EXTERN_FUNC(__imp__rex_sub_821E2380); // Clear +PPC_EXTERN_FUNC(__imp__rex_sub_821E10C8); // SetTextureFetchConstant PPC_EXTERN_FUNC(__imp__rex_sub_821E2BB8); // Resolve // D3DDevice_DrawIndexedVertices (0x821DEF18) @@ -190,13 +200,226 @@ PPC_FUNC_IMPL(rex_sub_821E2BB8) { __imp__rex_sub_821E2BB8(ctx, base); } +// D3DDevice_DrawPrimitive (0x821DEA48) +// r3=pDevice, r4=PrimitiveType, r5=VertexCount +PPC_FUNC_IMPL(rex_sub_821DEA48) { + PPC_FUNC_PROLOGUE(); + + uint32_t prim_type = ctx.r4.u32; + uint32_t vertex_count = ctx.r5.u32; + + g_live_stats.draw_calls.fetch_add(1, std::memory_order_relaxed); + g_live_stats.draw_calls_primitive.fetch_add(1, std::memory_order_relaxed); + g_live_stats.total_vertices.fetch_add(vertex_count, std::memory_order_relaxed); + + if (REXCVAR_GET(ac6_d3d_trace)) { + REXLOG_CAT_TRACE(kLogGPU, + "DrawPrimitive: prim={} count={}", + prim_type, vertex_count); + } + + __imp__rex_sub_821DEA48(ctx, base); +} + +// D3DDevice_SetStreamSource (0x821DC538) +// r3=pDevice, r4=StreamNumber, r5=pStreamData, r6=OffsetInBytes, r7=Stride +PPC_FUNC_IMPL(rex_sub_821DC538) { + PPC_FUNC_PROLOGUE(); + + uint32_t stream = ctx.r4.u32; + uint32_t buffer = ctx.r5.u32; + uint32_t offset = ctx.r6.u32; + uint32_t stride = ctx.r7.u32; + + if (stream < ac6::d3d::kMaxStreams) { + g_shadow.streams[stream].buffer = buffer; + g_shadow.streams[stream].offset = offset; + g_shadow.streams[stream].stride = stride; + } + g_live_stats.set_stream_source_calls.fetch_add(1, std::memory_order_relaxed); + + if (REXCVAR_GET(ac6_d3d_trace)) { + REXLOG_CAT_TRACE(kLogGPU, + "SetStreamSource: stream={} buffer=0x{:08X} offset={} stride={}", + stream, buffer, offset, stride); + } + + __imp__rex_sub_821DC538(ctx, base); +} + +// D3DDevice_SetSamplerState_MagFilter (0x821DC6C8) +// r3=pDevice, r4=Sampler, r5=Value +PPC_FUNC_IMPL(rex_sub_821DC6C8) { + PPC_FUNC_PROLOGUE(); + + uint32_t sampler = ctx.r4.u32; + uint32_t value = ctx.r5.u32; + + if (sampler < ac6::d3d::kMaxSamplers) { + g_shadow.samplers[sampler].mag_filter = value; + } + g_live_stats.set_sampler_state_calls.fetch_add(1, std::memory_order_relaxed); + + if (REXCVAR_GET(ac6_d3d_trace)) { + REXLOG_CAT_TRACE(kLogGPU, + "SetSamplerState_MagFilter: sampler={} value={}", + sampler, value); + } + + __imp__rex_sub_821DC6C8(ctx, base); +} + +// D3DDevice_SetSamplerState_A (0x821DCB88) — min filter +// r3=pDevice, r4=Sampler, r5=Value +PPC_FUNC_IMPL(rex_sub_821DCB88) { + PPC_FUNC_PROLOGUE(); + + uint32_t sampler = ctx.r4.u32; + uint32_t value = ctx.r5.u32; + + if (sampler < ac6::d3d::kMaxSamplers) { + g_shadow.samplers[sampler].min_filter = value; + } + g_live_stats.set_sampler_state_calls.fetch_add(1, std::memory_order_relaxed); + + if (REXCVAR_GET(ac6_d3d_trace)) { + REXLOG_CAT_TRACE(kLogGPU, + "SetSamplerState_A: sampler={} value={}", + sampler, value); + } + + __imp__rex_sub_821DCB88(ctx, base); +} + +// D3DDevice_SetSamplerState_B (0x821DCA68) — mip filter +// r3=pDevice, r4=Sampler, r5=Value +PPC_FUNC_IMPL(rex_sub_821DCA68) { + PPC_FUNC_PROLOGUE(); + + uint32_t sampler = ctx.r4.u32; + uint32_t value = ctx.r5.u32; + + if (sampler < ac6::d3d::kMaxSamplers) { + g_shadow.samplers[sampler].mip_filter = value; + } + g_live_stats.set_sampler_state_calls.fetch_add(1, std::memory_order_relaxed); + + if (REXCVAR_GET(ac6_d3d_trace)) { + REXLOG_CAT_TRACE(kLogGPU, + "SetSamplerState_B: sampler={} value={}", + sampler, value); + } + + __imp__rex_sub_821DCA68(ctx, base); +} + +// D3DDevice_SetSamplerState_C (0x821DC9C0) — border color +// r3=pDevice, r4=Sampler, r5=Value +PPC_FUNC_IMPL(rex_sub_821DC9C0) { + PPC_FUNC_PROLOGUE(); + + uint32_t sampler = ctx.r4.u32; + uint32_t value = ctx.r5.u32; + + if (sampler < ac6::d3d::kMaxSamplers) { + g_shadow.samplers[sampler].border_color = value; + } + g_live_stats.set_sampler_state_calls.fetch_add(1, std::memory_order_relaxed); + + if (REXCVAR_GET(ac6_d3d_trace)) { + REXLOG_CAT_TRACE(kLogGPU, + "SetSamplerState_C: sampler={} value={}", + sampler, value); + } + + __imp__rex_sub_821DC9C0(ctx, base); +} + +// D3DDevice_SetSamplerState_MipLevel (0x821DCB08) +// r3=pDevice, r4=Sampler, r5=Value +PPC_FUNC_IMPL(rex_sub_821DCB08) { + PPC_FUNC_PROLOGUE(); + + uint32_t sampler = ctx.r4.u32; + uint32_t value = ctx.r5.u32; + + if (sampler < ac6::d3d::kMaxSamplers) { + g_shadow.samplers[sampler].mip_level = value; + } + g_live_stats.set_sampler_state_calls.fetch_add(1, std::memory_order_relaxed); + + if (REXCVAR_GET(ac6_d3d_trace)) { + REXLOG_CAT_TRACE(kLogGPU, + "SetSamplerState_MipLevel: sampler={} value={}", + sampler, value); + } + + __imp__rex_sub_821DCB08(ctx, base); +} + +// D3DDevice_SetShaderGPRAlloc (0x821DBAF8) +// r3=pDevice, r4=Flags +PPC_FUNC_IMPL(rex_sub_821DBAF8) { + PPC_FUNC_PROLOGUE(); + + uint32_t flags = ctx.r4.u32; + g_shadow.shader_gpr_alloc = flags; + + if (REXCVAR_GET(ac6_d3d_trace)) { + REXLOG_CAT_TRACE(kLogGPU, + "SetShaderGPRAlloc: flags=0x{:08X}", flags); + } + + __imp__rex_sub_821DBAF8(ctx, base); +} + +// D3DDevice_Clear (0x821E2380) +// r3=pDevice, r4=Count, r5=pRects, r6=Flags, r7=Color, f1=Z, r8=Stencil, r9=EDRAMClear +PPC_FUNC_IMPL(rex_sub_821E2380) { + PPC_FUNC_PROLOGUE(); + + g_live_stats.clear_calls.fetch_add(1, std::memory_order_relaxed); + + if (REXCVAR_GET(ac6_d3d_trace)) { + REXLOG_CAT_TRACE(kLogGPU, + "Clear: count={} flags=0x{:X} color=0x{:08X} stencil={}", + ctx.r4.u32, ctx.r6.u32, ctx.r7.u32, ctx.r8.u32); + } + + __imp__rex_sub_821E2380(ctx, base); +} + +// D3DDevice_SetTextureFetchConstant (0x821E10C8) +// r3=pDevice, r4=Register, r5=pTexture +PPC_FUNC_IMPL(rex_sub_821E10C8) { + PPC_FUNC_PROLOGUE(); + + uint32_t reg = ctx.r4.u32; + uint32_t texture = ctx.r5.u32; + + if (reg < ac6::d3d::kMaxFetchConstants) { + g_shadow.texture_fetch_ptrs[reg] = texture; + } + g_live_stats.set_texture_fetch_calls.fetch_add(1, std::memory_order_relaxed); + + if (REXCVAR_GET(ac6_d3d_trace)) { + REXLOG_CAT_TRACE(kLogGPU, + "SetTextureFetchConstant: reg={} texture=0x{:08X}", + reg, texture); + } + + __imp__rex_sub_821E10C8(ctx, base); +} + namespace ac6::d3d { void OnFrameBoundary() { g_snapshot.draw_calls = g_live_stats.draw_calls.load(std::memory_order_relaxed); g_snapshot.draw_calls_indexed = g_live_stats.draw_calls_indexed.load(std::memory_order_relaxed); g_snapshot.draw_calls_indexed_shared = g_live_stats.draw_calls_indexed_shared.load(std::memory_order_relaxed); + g_snapshot.draw_calls_primitive = g_live_stats.draw_calls_primitive.load(std::memory_order_relaxed); g_snapshot.total_indices = g_live_stats.total_indices.load(std::memory_order_relaxed); + g_snapshot.total_vertices = g_live_stats.total_vertices.load(std::memory_order_relaxed); g_snapshot.set_texture_calls = g_live_stats.set_texture_calls.load(std::memory_order_relaxed); g_snapshot.set_render_target_calls = g_live_stats.set_render_target_calls.load(std::memory_order_relaxed); g_snapshot.set_depth_stencil_calls = g_live_stats.set_depth_stencil_calls.load(std::memory_order_relaxed); @@ -204,6 +427,8 @@ void OnFrameBoundary() { g_snapshot.set_index_buffer_calls = g_live_stats.set_index_buffer_calls.load(std::memory_order_relaxed); g_snapshot.set_stream_source_calls = g_live_stats.set_stream_source_calls.load(std::memory_order_relaxed); g_snapshot.set_viewport_calls = g_live_stats.set_viewport_calls.load(std::memory_order_relaxed); + g_snapshot.set_sampler_state_calls = g_live_stats.set_sampler_state_calls.load(std::memory_order_relaxed); + g_snapshot.set_texture_fetch_calls = g_live_stats.set_texture_fetch_calls.load(std::memory_order_relaxed); g_snapshot.clear_calls = g_live_stats.clear_calls.load(std::memory_order_relaxed); g_snapshot.resolve_calls = g_live_stats.resolve_calls.load(std::memory_order_relaxed); diff --git a/src/d3d_state.h b/src/d3d_state.h index a67e4af6..6678d852 100644 --- a/src/d3d_state.h +++ b/src/d3d_state.h @@ -9,12 +9,16 @@ namespace ac6::d3d { inline constexpr uint32_t kMaxRenderTargets = 5; inline constexpr uint32_t kMaxTextures = 16; inline constexpr uint32_t kMaxStreams = 16; +inline constexpr uint32_t kMaxSamplers = 16; +inline constexpr uint32_t kMaxFetchConstants = 32; struct DrawStats { std::atomic draw_calls{0}; std::atomic draw_calls_indexed{0}; std::atomic draw_calls_indexed_shared{0}; + std::atomic draw_calls_primitive{0}; std::atomic total_indices{0}; + std::atomic total_vertices{0}; std::atomic set_texture_calls{0}; std::atomic set_render_target_calls{0}; std::atomic set_depth_stencil_calls{0}; @@ -22,6 +26,8 @@ struct DrawStats { std::atomic set_index_buffer_calls{0}; std::atomic set_stream_source_calls{0}; std::atomic set_viewport_calls{0}; + std::atomic set_sampler_state_calls{0}; + std::atomic set_texture_fetch_calls{0}; std::atomic clear_calls{0}; std::atomic resolve_calls{0}; @@ -29,7 +35,9 @@ struct DrawStats { draw_calls.store(0, std::memory_order_relaxed); draw_calls_indexed.store(0, std::memory_order_relaxed); draw_calls_indexed_shared.store(0, std::memory_order_relaxed); + draw_calls_primitive.store(0, std::memory_order_relaxed); total_indices.store(0, std::memory_order_relaxed); + total_vertices.store(0, std::memory_order_relaxed); set_texture_calls.store(0, std::memory_order_relaxed); set_render_target_calls.store(0, std::memory_order_relaxed); set_depth_stencil_calls.store(0, std::memory_order_relaxed); @@ -37,6 +45,8 @@ struct DrawStats { set_index_buffer_calls.store(0, std::memory_order_relaxed); set_stream_source_calls.store(0, std::memory_order_relaxed); set_viewport_calls.store(0, std::memory_order_relaxed); + set_sampler_state_calls.store(0, std::memory_order_relaxed); + set_texture_fetch_calls.store(0, std::memory_order_relaxed); clear_calls.store(0, std::memory_order_relaxed); resolve_calls.store(0, std::memory_order_relaxed); } @@ -46,7 +56,9 @@ struct DrawStatsSnapshot { uint32_t draw_calls; uint32_t draw_calls_indexed; uint32_t draw_calls_indexed_shared; + uint32_t draw_calls_primitive; uint64_t total_indices; + uint64_t total_vertices; uint32_t set_texture_calls; uint32_t set_render_target_calls; uint32_t set_depth_stencil_calls; @@ -54,11 +66,27 @@ struct DrawStatsSnapshot { uint32_t set_index_buffer_calls; uint32_t set_stream_source_calls; uint32_t set_viewport_calls; + uint32_t set_sampler_state_calls; + uint32_t set_texture_fetch_calls; uint32_t clear_calls; uint32_t resolve_calls; }; -// All values are guest addresses into PPC address space. +struct StreamBinding { + uint32_t buffer{0}; // Guest address of D3DVertexBuffer + uint32_t offset{0}; // Offset in bytes + uint32_t stride{0}; // Vertex stride in bytes +}; + +struct SamplerBinding { + uint32_t mag_filter{0}; // D3DTEXTUREFILTERTYPE + uint32_t min_filter{0}; // Sampler state A + uint32_t mip_filter{0}; // Sampler state B + uint32_t mip_level{0}; // Max mip level + uint32_t border_color{0}; // Sampler state C +}; + +// All values are guest addresses into PPC address space unless noted. struct ShadowState { uint32_t device{0}; std::array render_targets{}; @@ -66,7 +94,10 @@ struct ShadowState { std::array textures{}; uint32_t vertex_declaration{0}; uint32_t index_buffer{0}; - std::array stream_sources{}; + std::array streams{}; + std::array samplers{}; + std::array texture_fetch_ptrs{}; + uint32_t shader_gpr_alloc{0}; struct { uint32_t x{0}; diff --git a/src/render_hooks.cpp b/src/render_hooks.cpp index d96c0350..756acc88 100644 --- a/src/render_hooks.cpp +++ b/src/render_hooks.cpp @@ -40,7 +40,7 @@ void ac6DeltaDivisorHook(PPCRegister& r29) { } // Hooked before the device[21516] branch so it fires every frame, not just VdSwap frames. -void ac6PresentTimingHook() { +void ac6PresentTimingHook(PPCRegister& /*r31*/) { ac6::d3d::OnFrameBoundary(); auto now = Clock::now(); From 9c2e56b9c97310cabbd0b03b43d30ba9ba80f204 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 11 Mar 2026 10:20:16 -0500 Subject: [PATCH 15/29] feat(d3d): add per-frame draw call capture with full binding snapshots --- src/d3d_hooks.cpp | 46 +++++++++++++++++++++++++++++-- src/d3d_hooks.h | 2 ++ src/d3d_state.h | 69 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 115 insertions(+), 2 deletions(-) diff --git a/src/d3d_hooks.cpp b/src/d3d_hooks.cpp index 6d02663e..a0655be8 100644 --- a/src/d3d_hooks.cpp +++ b/src/d3d_hooks.cpp @@ -17,6 +17,14 @@ ac6::d3d::ShadowState g_shadow{}; ac6::d3d::DrawStats g_live_stats{}; ac6::d3d::DrawStatsSnapshot g_snapshot{}; +// Double-buffered draw log: write_log accumulates during the frame, +// read_log holds the previous frame's captures for consumers. +ac6::d3d::FrameDrawLog g_draw_log[2]{}; +uint32_t g_draw_log_write{0}; // Index into g_draw_log for current frame + +ac6::d3d::FrameDrawLog& WriteLog() { return g_draw_log[g_draw_log_write]; } +const ac6::d3d::FrameDrawLog& ReadLog() { return g_draw_log[g_draw_log_write ^ 1]; } + } // namespace PPC_EXTERN_FUNC(__imp__rex_sub_821DEF18); // DrawIndexedVertices @@ -40,38 +48,58 @@ PPC_EXTERN_FUNC(__imp__rex_sub_821E10C8); // SetTextureFetchConstant PPC_EXTERN_FUNC(__imp__rex_sub_821E2BB8); // Resolve // D3DDevice_DrawIndexedVertices (0x821DEF18) +// r3=pDevice, r4=PrimitiveType, r5=StartIndex, r6=IndexCount PPC_FUNC_IMPL(rex_sub_821DEF18) { PPC_FUNC_PROLOGUE(); + uint32_t prim_type = ctx.r4.u32; + uint32_t start_index = ctx.r5.u32; uint32_t index_count = ctx.r6.u32; g_live_stats.draw_calls.fetch_add(1, std::memory_order_relaxed); g_live_stats.draw_calls_indexed.fetch_add(1, std::memory_order_relaxed); g_live_stats.total_indices.fetch_add(index_count, std::memory_order_relaxed); + { + auto& cap = WriteLog().Append(ac6::d3d::DrawType::Indexed, g_shadow); + cap.primitive_type = prim_type; + cap.start_index = start_index; + cap.count = index_count; + } + if (REXCVAR_GET(ac6_d3d_trace)) { REXLOG_CAT_TRACE(kLogGPU, "DrawIndexedVertices: prim={} start={} count={}", - ctx.r4.u32, ctx.r5.u32, index_count); + prim_type, start_index, index_count); } __imp__rex_sub_821DEF18(ctx, base); } // D3DDevice_DrawIndexedVertices_Shared (0x821DF300) +// r3=pDevice, r4=PrimitiveType, r5=Flags, r6=StartIndex, r7=IndexCount PPC_FUNC_IMPL(rex_sub_821DF300) { PPC_FUNC_PROLOGUE(); + uint32_t prim_type = ctx.r4.u32; + uint32_t start_index = ctx.r6.u32; uint32_t index_count = ctx.r7.u32; g_live_stats.draw_calls.fetch_add(1, std::memory_order_relaxed); g_live_stats.draw_calls_indexed_shared.fetch_add(1, std::memory_order_relaxed); g_live_stats.total_indices.fetch_add(index_count, std::memory_order_relaxed); + { + auto& cap = WriteLog().Append(ac6::d3d::DrawType::IndexedShared, g_shadow); + cap.primitive_type = prim_type; + cap.start_index = start_index; + cap.count = index_count; + } + if (REXCVAR_GET(ac6_d3d_trace)) { REXLOG_CAT_TRACE(kLogGPU, "DrawIndexedVertices_Shared: prim={} flags={} start={} count={}", - ctx.r4.u32, ctx.r5.u32, ctx.r6.u32, index_count); + prim_type, ctx.r5.u32, start_index, index_count); } __imp__rex_sub_821DF300(ctx, base); @@ -212,6 +240,12 @@ PPC_FUNC_IMPL(rex_sub_821DEA48) { g_live_stats.draw_calls_primitive.fetch_add(1, std::memory_order_relaxed); g_live_stats.total_vertices.fetch_add(vertex_count, std::memory_order_relaxed); + { + auto& cap = WriteLog().Append(ac6::d3d::DrawType::Primitive, g_shadow); + cap.primitive_type = prim_type; + cap.count = vertex_count; + } + if (REXCVAR_GET(ac6_d3d_trace)) { REXLOG_CAT_TRACE(kLogGPU, "DrawPrimitive: prim={} count={}", @@ -433,6 +467,10 @@ void OnFrameBoundary() { g_snapshot.resolve_calls = g_live_stats.resolve_calls.load(std::memory_order_relaxed); g_live_stats.Reset(); + + // Swap draw log buffers: current write becomes read, old read becomes new write + g_draw_log_write ^= 1; + WriteLog().Reset(); } const DrawStatsSnapshot& GetDrawStats() { @@ -443,4 +481,8 @@ const ShadowState& GetShadowState() { return g_shadow; } +const FrameDrawLog& GetFrameDrawLog() { + return ReadLog(); +} + } // namespace ac6::d3d diff --git a/src/d3d_hooks.h b/src/d3d_hooks.h index ecd352c8..f2f4383b 100644 --- a/src/d3d_hooks.h +++ b/src/d3d_hooks.h @@ -18,4 +18,6 @@ const DrawStatsSnapshot& GetDrawStats(); const ShadowState& GetShadowState(); +const FrameDrawLog& GetFrameDrawLog(); + } // namespace ac6::d3d diff --git a/src/d3d_state.h b/src/d3d_state.h index 6678d852..bf07def0 100644 --- a/src/d3d_state.h +++ b/src/d3d_state.h @@ -3,6 +3,7 @@ #include #include #include +#include namespace ac6::d3d { @@ -107,4 +108,72 @@ struct ShadowState { } viewport; }; +enum class DrawType : uint8_t { + Indexed, + IndexedShared, + Primitive, +}; + +struct DrawCallCapture { + uint32_t draw_id{0}; // Monotonic per-frame draw index + DrawType type{DrawType::Indexed}; + uint32_t primitive_type{0}; + uint32_t start_index{0}; // Start index (indexed) or unused (primitive) + uint32_t count{0}; // Index count or vertex count + + // Full binding snapshot (copied from ShadowState at draw time) + std::array render_targets{}; + uint32_t depth_stencil{0}; + std::array textures{}; + uint32_t vertex_declaration{0}; + uint32_t index_buffer{0}; + std::array streams{}; + std::array samplers{}; + std::array texture_fetch_ptrs{}; + uint32_t shader_gpr_alloc{0}; + + struct { + uint32_t x{0}; + uint32_t y{0}; + uint32_t width{0}; + uint32_t height{0}; + } viewport; +}; + +inline constexpr uint32_t kMaxDrawCapturesPerFrame = 4096; + +struct FrameDrawLog { + std::vector captures; + uint32_t next_draw_id{0}; + + void Reserve() { captures.reserve(kMaxDrawCapturesPerFrame); } + + void Reset() { + captures.clear(); + next_draw_id = 0; + } + + DrawCallCapture& Append(DrawType type, const ShadowState& state) { + auto& c = captures.emplace_back(); + c.draw_id = next_draw_id++; + c.type = type; + + c.render_targets = state.render_targets; + c.depth_stencil = state.depth_stencil; + c.textures = state.textures; + c.vertex_declaration = state.vertex_declaration; + c.index_buffer = state.index_buffer; + c.streams = state.streams; + c.samplers = state.samplers; + c.texture_fetch_ptrs = state.texture_fetch_ptrs; + c.shader_gpr_alloc = state.shader_gpr_alloc; + c.viewport.x = state.viewport.x; + c.viewport.y = state.viewport.y; + c.viewport.width = state.viewport.width; + c.viewport.height = state.viewport.height; + + return c; + } +}; + } // namespace ac6::d3d From 2b6f4a6c340e0e661880279cfb19e28039d3a56e Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 11 Mar 2026 11:07:23 -0500 Subject: [PATCH 16/29] Revert "feat(d3d): add per-frame draw call capture with full binding snapshots" This reverts commit 9c2e56b9c97310cabbd0b03b43d30ba9ba80f204. --- src/d3d_hooks.cpp | 46 ++----------------------------- src/d3d_hooks.h | 2 -- src/d3d_state.h | 69 ----------------------------------------------- 3 files changed, 2 insertions(+), 115 deletions(-) diff --git a/src/d3d_hooks.cpp b/src/d3d_hooks.cpp index a0655be8..6d02663e 100644 --- a/src/d3d_hooks.cpp +++ b/src/d3d_hooks.cpp @@ -17,14 +17,6 @@ ac6::d3d::ShadowState g_shadow{}; ac6::d3d::DrawStats g_live_stats{}; ac6::d3d::DrawStatsSnapshot g_snapshot{}; -// Double-buffered draw log: write_log accumulates during the frame, -// read_log holds the previous frame's captures for consumers. -ac6::d3d::FrameDrawLog g_draw_log[2]{}; -uint32_t g_draw_log_write{0}; // Index into g_draw_log for current frame - -ac6::d3d::FrameDrawLog& WriteLog() { return g_draw_log[g_draw_log_write]; } -const ac6::d3d::FrameDrawLog& ReadLog() { return g_draw_log[g_draw_log_write ^ 1]; } - } // namespace PPC_EXTERN_FUNC(__imp__rex_sub_821DEF18); // DrawIndexedVertices @@ -48,58 +40,38 @@ PPC_EXTERN_FUNC(__imp__rex_sub_821E10C8); // SetTextureFetchConstant PPC_EXTERN_FUNC(__imp__rex_sub_821E2BB8); // Resolve // D3DDevice_DrawIndexedVertices (0x821DEF18) -// r3=pDevice, r4=PrimitiveType, r5=StartIndex, r6=IndexCount PPC_FUNC_IMPL(rex_sub_821DEF18) { PPC_FUNC_PROLOGUE(); - uint32_t prim_type = ctx.r4.u32; - uint32_t start_index = ctx.r5.u32; uint32_t index_count = ctx.r6.u32; g_live_stats.draw_calls.fetch_add(1, std::memory_order_relaxed); g_live_stats.draw_calls_indexed.fetch_add(1, std::memory_order_relaxed); g_live_stats.total_indices.fetch_add(index_count, std::memory_order_relaxed); - { - auto& cap = WriteLog().Append(ac6::d3d::DrawType::Indexed, g_shadow); - cap.primitive_type = prim_type; - cap.start_index = start_index; - cap.count = index_count; - } - if (REXCVAR_GET(ac6_d3d_trace)) { REXLOG_CAT_TRACE(kLogGPU, "DrawIndexedVertices: prim={} start={} count={}", - prim_type, start_index, index_count); + ctx.r4.u32, ctx.r5.u32, index_count); } __imp__rex_sub_821DEF18(ctx, base); } // D3DDevice_DrawIndexedVertices_Shared (0x821DF300) -// r3=pDevice, r4=PrimitiveType, r5=Flags, r6=StartIndex, r7=IndexCount PPC_FUNC_IMPL(rex_sub_821DF300) { PPC_FUNC_PROLOGUE(); - uint32_t prim_type = ctx.r4.u32; - uint32_t start_index = ctx.r6.u32; uint32_t index_count = ctx.r7.u32; g_live_stats.draw_calls.fetch_add(1, std::memory_order_relaxed); g_live_stats.draw_calls_indexed_shared.fetch_add(1, std::memory_order_relaxed); g_live_stats.total_indices.fetch_add(index_count, std::memory_order_relaxed); - { - auto& cap = WriteLog().Append(ac6::d3d::DrawType::IndexedShared, g_shadow); - cap.primitive_type = prim_type; - cap.start_index = start_index; - cap.count = index_count; - } - if (REXCVAR_GET(ac6_d3d_trace)) { REXLOG_CAT_TRACE(kLogGPU, "DrawIndexedVertices_Shared: prim={} flags={} start={} count={}", - prim_type, ctx.r5.u32, start_index, index_count); + ctx.r4.u32, ctx.r5.u32, ctx.r6.u32, index_count); } __imp__rex_sub_821DF300(ctx, base); @@ -240,12 +212,6 @@ PPC_FUNC_IMPL(rex_sub_821DEA48) { g_live_stats.draw_calls_primitive.fetch_add(1, std::memory_order_relaxed); g_live_stats.total_vertices.fetch_add(vertex_count, std::memory_order_relaxed); - { - auto& cap = WriteLog().Append(ac6::d3d::DrawType::Primitive, g_shadow); - cap.primitive_type = prim_type; - cap.count = vertex_count; - } - if (REXCVAR_GET(ac6_d3d_trace)) { REXLOG_CAT_TRACE(kLogGPU, "DrawPrimitive: prim={} count={}", @@ -467,10 +433,6 @@ void OnFrameBoundary() { g_snapshot.resolve_calls = g_live_stats.resolve_calls.load(std::memory_order_relaxed); g_live_stats.Reset(); - - // Swap draw log buffers: current write becomes read, old read becomes new write - g_draw_log_write ^= 1; - WriteLog().Reset(); } const DrawStatsSnapshot& GetDrawStats() { @@ -481,8 +443,4 @@ const ShadowState& GetShadowState() { return g_shadow; } -const FrameDrawLog& GetFrameDrawLog() { - return ReadLog(); -} - } // namespace ac6::d3d diff --git a/src/d3d_hooks.h b/src/d3d_hooks.h index f2f4383b..ecd352c8 100644 --- a/src/d3d_hooks.h +++ b/src/d3d_hooks.h @@ -18,6 +18,4 @@ const DrawStatsSnapshot& GetDrawStats(); const ShadowState& GetShadowState(); -const FrameDrawLog& GetFrameDrawLog(); - } // namespace ac6::d3d diff --git a/src/d3d_state.h b/src/d3d_state.h index bf07def0..6678d852 100644 --- a/src/d3d_state.h +++ b/src/d3d_state.h @@ -3,7 +3,6 @@ #include #include #include -#include namespace ac6::d3d { @@ -108,72 +107,4 @@ struct ShadowState { } viewport; }; -enum class DrawType : uint8_t { - Indexed, - IndexedShared, - Primitive, -}; - -struct DrawCallCapture { - uint32_t draw_id{0}; // Monotonic per-frame draw index - DrawType type{DrawType::Indexed}; - uint32_t primitive_type{0}; - uint32_t start_index{0}; // Start index (indexed) or unused (primitive) - uint32_t count{0}; // Index count or vertex count - - // Full binding snapshot (copied from ShadowState at draw time) - std::array render_targets{}; - uint32_t depth_stencil{0}; - std::array textures{}; - uint32_t vertex_declaration{0}; - uint32_t index_buffer{0}; - std::array streams{}; - std::array samplers{}; - std::array texture_fetch_ptrs{}; - uint32_t shader_gpr_alloc{0}; - - struct { - uint32_t x{0}; - uint32_t y{0}; - uint32_t width{0}; - uint32_t height{0}; - } viewport; -}; - -inline constexpr uint32_t kMaxDrawCapturesPerFrame = 4096; - -struct FrameDrawLog { - std::vector captures; - uint32_t next_draw_id{0}; - - void Reserve() { captures.reserve(kMaxDrawCapturesPerFrame); } - - void Reset() { - captures.clear(); - next_draw_id = 0; - } - - DrawCallCapture& Append(DrawType type, const ShadowState& state) { - auto& c = captures.emplace_back(); - c.draw_id = next_draw_id++; - c.type = type; - - c.render_targets = state.render_targets; - c.depth_stencil = state.depth_stencil; - c.textures = state.textures; - c.vertex_declaration = state.vertex_declaration; - c.index_buffer = state.index_buffer; - c.streams = state.streams; - c.samplers = state.samplers; - c.texture_fetch_ptrs = state.texture_fetch_ptrs; - c.shader_gpr_alloc = state.shader_gpr_alloc; - c.viewport.x = state.viewport.x; - c.viewport.y = state.viewport.y; - c.viewport.width = state.viewport.width; - c.viewport.height = state.viewport.height; - - return c; - } -}; - } // namespace ac6::d3d From 00977c8af9415a3ddf6e9ff270208fce456a5cb8 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 11 Mar 2026 19:14:13 -0500 Subject: [PATCH 17/29] chore: update rexglue-sdk submodule to upstream v0.3.2 + AC6 fixes Rebased ac6recomp-local-fixes onto rexglue/rexglue-sdk@v0.3.2 (upstream/main), incorporating 40 new upstream commits including PPC ISA additions (lvebx/lvehx/ lvewx, mfctr/mfxer, rldic/rldcl/rldcr, blrl, bdnzlr, etc.), numeric precision fixes, and FidelityFX/graphics backend improvements. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- thirdparty/rexglue-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/rexglue-sdk b/thirdparty/rexglue-sdk index 1df9f883..d7dadd5a 160000 --- a/thirdparty/rexglue-sdk +++ b/thirdparty/rexglue-sdk @@ -1 +1 @@ -Subproject commit 1df9f8831cf4fff67a76cda0e5e9a56209f6093f +Subproject commit d7dadd5ad780bb5d28956c2ba4e4d91ce1a85e38 From e6ae507f7ecd7ce267f8787883ddadca8c6f4ec8 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 14 Mar 2026 22:40:09 -0500 Subject: [PATCH 18/29] chore: ignore local git worktrees --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 4a730508..27f3739d 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,6 @@ assets/ # CMake user presets (machine-local) CMakeUserPresets.json + +# Local git worktrees +.worktrees/ From 2f2f59a388681bff615ff00d37be7fa45a048149 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 18 Mar 2026 02:49:40 -0500 Subject: [PATCH 19/29] chore: update rexglue-sdk to v0.4.0 (rebased local patches) --- thirdparty/rexglue-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/rexglue-sdk b/thirdparty/rexglue-sdk index d7dadd5a..13a64e47 160000 --- a/thirdparty/rexglue-sdk +++ b/thirdparty/rexglue-sdk @@ -1 +1 @@ -Subproject commit d7dadd5ad780bb5d28956c2ba4e4d91ce1a85e38 +Subproject commit 13a64e47f1a037bdab9f8d698f0628d9fbe82a0d From 4a844aa2f9659fcbf4c399a871f02e815de97cce Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 22 Mar 2026 12:24:54 -0500 Subject: [PATCH 20/29] Update rexglue-sdk to ac6recomp-local-fixes-v2 (upstream v0.7.1 + graphics fix + icon extraction) --- thirdparty/rexglue-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/rexglue-sdk b/thirdparty/rexglue-sdk index 13a64e47..f01b9005 160000 --- a/thirdparty/rexglue-sdk +++ b/thirdparty/rexglue-sdk @@ -1 +1 @@ -Subproject commit 13a64e47f1a037bdab9f8d698f0628d9fbe82a0d +Subproject commit f01b90056b20c974d86ac5d5de57f06f20f0975d From cbddb7b6c13b56d3b3aba9c5d3d8e799d0437c4a Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 23 Mar 2026 07:40:17 -0500 Subject: [PATCH 21/29] chore: update rexglue-sdk submodule (indirect_calls bctr fix) --- thirdparty/rexglue-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/rexglue-sdk b/thirdparty/rexglue-sdk index f01b9005..58922979 160000 --- a/thirdparty/rexglue-sdk +++ b/thirdparty/rexglue-sdk @@ -1 +1 @@ -Subproject commit f01b90056b20c974d86ac5d5de57f06f20f0975d +Subproject commit 589229799675f63006beb09deb8d1e3d621f6ee6 From 83a785d5c6598ba8c1964a95318595b406e931bb Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 28 Mar 2026 17:06:46 -0500 Subject: [PATCH 22/29] chore(deps): update rexglue-sdk to v0.7.2 + local fixes --- thirdparty/rexglue-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/rexglue-sdk b/thirdparty/rexglue-sdk index 58922979..ec2d07a8 160000 --- a/thirdparty/rexglue-sdk +++ b/thirdparty/rexglue-sdk @@ -1 +1 @@ -Subproject commit 589229799675f63006beb09deb8d1e3d621f6ee6 +Subproject commit ec2d07a873cf4c6a4d4b4bb9d70c8a2fed32ec72 From 4aa97588cfd5fcd6c4087746b17a7800bc3c126d Mon Sep 17 00:00:00 2001 From: salh Date: Tue, 31 Mar 2026 20:03:41 +0300 Subject: [PATCH 23/29] exp: fix VdSwap assert_true crashes (Bug #1) - defensive logging in submodule --- thirdparty/rexglue-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/rexglue-sdk b/thirdparty/rexglue-sdk index ec2d07a8..cd043b5a 160000 --- a/thirdparty/rexglue-sdk +++ b/thirdparty/rexglue-sdk @@ -1 +1 @@ -Subproject commit ec2d07a873cf4c6a4d4b4bb9d70c8a2fed32ec72 +Subproject commit cd043b5ab71bc66964ae4b3eeb66d5f6c0f79290 From 552fb08e70996ccd3e844dbe5fc784ae7692267d Mon Sep 17 00:00:00 2001 From: salh Date: Wed, 1 Apr 2026 08:48:45 +0300 Subject: [PATCH 24/29] exp: update rexglue-sdk submodule: checkpoints 4-8 + scratch_buffer_used_ guard --- thirdparty/rexglue-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/rexglue-sdk b/thirdparty/rexglue-sdk index cd043b5a..c513a5af 160000 --- a/thirdparty/rexglue-sdk +++ b/thirdparty/rexglue-sdk @@ -1 +1 @@ -Subproject commit cd043b5ab71bc66964ae4b3eeb66d5f6c0f79290 +Subproject commit c513a5af4f0f5513fc829b227a55fc4b86b0ead9 From 5995618d3cd59c2452e633ad029bf2160db9f00e Mon Sep 17 00:00:00 2001 From: salh Date: Thu, 2 Apr 2026 03:26:30 +0300 Subject: [PATCH 25/29] exp: prevent crash after IssueSwap by pausing GPU thread --- thirdparty/rexglue-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/rexglue-sdk b/thirdparty/rexglue-sdk index c513a5af..cb05a6ec 160000 --- a/thirdparty/rexglue-sdk +++ b/thirdparty/rexglue-sdk @@ -1 +1 @@ -Subproject commit c513a5af4f0f5513fc829b227a55fc4b86b0ead9 +Subproject commit cb05a6ec581d0d97f16afeafe4057962aa1dcfac From 44d4865b5a12f817531019f280ff4e8ddd84a155 Mon Sep 17 00:00:00 2001 From: salh Date: Sat, 4 Apr 2026 11:56:27 +0300 Subject: [PATCH 26/29] update rexglue-sdk submodule to remove sleep hack --- thirdparty/rexglue-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/rexglue-sdk b/thirdparty/rexglue-sdk index cb05a6ec..dd53ae07 160000 --- a/thirdparty/rexglue-sdk +++ b/thirdparty/rexglue-sdk @@ -1 +1 @@ -Subproject commit cb05a6ec581d0d97f16afeafe4057962aa1dcfac +Subproject commit dd53ae0723fdb1c81750ad903164a6ff4a90f42b From 77f5da905a9b7d73654296c8d2de8333f367747d Mon Sep 17 00:00:00 2001 From: salh Date: Tue, 14 Apr 2026 12:37:39 +0300 Subject: [PATCH 27/29] Initial source-only import --- .gitignore | 20 + CMakeLists.txt | 3 +- README.md | 48 +- src/ac6_native_graphics.cpp | 1480 +++++++++++++++++++++++++++ src/ac6_native_graphics.h | 84 ++ src/ac6_native_graphics_overlay.cpp | 206 ++++ src/ac6_native_graphics_overlay.h | 28 + src/ac6recomp_app.h | 41 +- src/d3d_hooks.cpp | 350 ++++++- src/d3d_hooks.h | 14 +- src/d3d_state.h | 80 ++ src/main.cpp | 10 + src/render_hooks.cpp | 67 +- src/render_hooks.h | 12 +- 14 files changed, 2362 insertions(+), 81 deletions(-) create mode 100644 src/ac6_native_graphics.cpp create mode 100644 src/ac6_native_graphics.h create mode 100644 src/ac6_native_graphics_overlay.cpp create mode 100644 src/ac6_native_graphics_overlay.h diff --git a/.gitignore b/.gitignore index 27f3739d..d4dc3997 100644 --- a/.gitignore +++ b/.gitignore @@ -7,9 +7,16 @@ generated/ # Game assets (user-supplied) assets/ +*.xex +*.iso +*.god +*.zar +*.pkg +*.bin # VS local settings .vs/ +.vscode/ # Copilot and debugging workflow .github/instructions/ @@ -19,3 +26,16 @@ CMakeUserPresets.json # Local git worktrees .worktrees/ + +# Local notes, backups, and scratch work +.claude/ +backup/ +OLD_XENON_BUILD/ +rexglue_sdk_new/ +autoresearch/ +*.bak +*.tmp +tmp_*.py +build_*.txt +*.log +New Text Document.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 6ff01a86..b35a3a86 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,6 +14,8 @@ include(generated/rexglue.cmake) # Sources set(AC6RECOMP_SOURCES src/main.cpp + src/ac6_native_graphics.cpp + src/ac6_native_graphics_overlay.cpp src/render_hooks.cpp src/d3d_hooks.cpp ) @@ -25,4 +27,3 @@ else() endif() rexglue_setup_target(ac6recomp) - diff --git a/README.md b/README.md index 324dfb0f..30076f6a 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,35 @@ # AC6Recomp > [!CAUTION] -> This project is a work in progress, so a stable experience isn't guaranteed yet. It progresses in-game, but with likely bugs and crashes and more testing is needed. +> This project is still work in progress. It can boot and run in-game, but bugs, crashes, and missing functionality should be expected. Recompiled using the [ReXGlue SDK](https://github.com/rexglue/rexglue-sdk). +## Repository policy + +This repository is intended to contain source code only. + +Do not commit or redistribute: + +- retail game data +- `default.xex` +- disc images, packages, title updates, or firmware files +- console keys or any other proprietary Microsoft / publisher material + +Users must supply their own legally obtained game files locally. This repository does not include those files ## Prerequisites - [CMake](https://cmake.org/) 3.25+ - [Ninja](https://ninja-build.org/) - [Clang](https://releases.llvm.org/) (LLVM/Clang toolchain) -- A legally obtained copy of the game. +- A legally obtained copy of the game, prepared by the end user outside this repository -## Building +## Clone Clone the repository with submodules: ```bash -git clone --recursive https://github.com/rapidsamphire/AC6Recomp.git +git clone --recursive cd AC6Recomp ``` @@ -27,35 +39,45 @@ If you already cloned without `--recursive`: git submodule update --init --recursive ``` -### Assets +## Local file layout -You need the game's original Xbox 360 disc image (ISO). Tools to extract it can be found [here](https://consolemods.org/wiki/Xbox:ISO_Extraction_%26_Repacking). +Place your personally obtained game files in `assets/` so they are available only on your machine and remain untracked by Git. -After extraction, drop both the game assets and `default.xex` into the `assets/` directory. +Expected minimum layout: -### Generate recompiled code +```text +assets/ + default.xex + ... +``` + +The codegen config expects `assets/default.xex`. + +## Build + +Generate recompiled code: ```bash cmake --preset win-amd64-relwithdebinfo cmake --build --preset win-amd64-relwithdebinfo --target ac6recomp_codegen ``` -### Build +Build the project: ```bash cmake --build --preset win-amd64-relwithdebinfo ``` -(Relwithdebinfo is the recommended build preset as of now.) +`RelWithDebInfo` is the recommended preset at the moment. -The executable will be in `out/build/win-amd64-relwithdebinfo/`. +The executable will be produced in `out/build/win-amd64-relwithdebinfo/`. -### Running +## Run ```bash ./out/build/win-amd64-relwithdebinfo/ac6recomp assets ``` -### Linux +## Linux Replace `win-amd64-relwithdebinfo` with `linux-amd64-relwithdebinfo` in the commands above. diff --git a/src/ac6_native_graphics.cpp b/src/ac6_native_graphics.cpp new file mode 100644 index 00000000..edeee874 --- /dev/null +++ b/src/ac6_native_graphics.cpp @@ -0,0 +1,1480 @@ +#include "ac6_native_graphics.h" + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "d3d_hooks.h" + +#if REX_HAS_D3D12 +#include +#include +#include +#include +#include +#endif + +REXCVAR_DEFINE_BOOL(ac6_native_graphics_bootstrap, true, "AC6/Render", + "Use the experimental native graphics bootstrap backend"); +REXCVAR_DEFINE_BOOL( + ac6_native_graphics_placeholder_present, false, "AC6/Render", + "Allow the native graphics bootstrap backend to replace the legacy swap path with a " + "preview frame generated by the experimental native replay compositor"); +REXCVAR_DEFINE_BOOL( + ac6_allow_gpu_trace_stream, false, "AC6/Render", + "Allow legacy GPU trace streaming during AC6 native graphics experiments"); + +namespace ac6::graphics { +namespace { + +using rex::X_STATUS; + +#if REX_HAS_D3D12 +namespace shaders { +#include "thirdparty/rexglue-sdk/src/ui/shaders/bytecode/d3d12_5_1/immediate_ps.h" +#include "thirdparty/rexglue-sdk/src/ui/shaders/bytecode/d3d12_5_1/immediate_vs.h" +} // namespace shaders +#endif + +std::mutex g_native_graphics_status_mutex; +NativeGraphicsStatusSnapshot g_native_graphics_status{}; + +struct CapturedFrameEvent { + enum class Type { + kDraw, + kClear, + kResolve, + }; + + uint32_t sequence = 0; + Type type = Type::kDraw; + const ac6::d3d::ShadowState* shadow_state = nullptr; +}; + +struct ReplayPassCandidate { + ac6::d3d::ShadowState binding{}; + uint32_t start_sequence = 0; + uint32_t end_sequence = 0; + uint32_t draw_count = 0; + uint32_t clear_count = 0; + uint32_t resolve_count = 0; +}; + +struct ReplayCandidateKey { + uint32_t rt0 = 0; + uint32_t depth_stencil = 0; + uint32_t viewport_x = 0; + uint32_t viewport_y = 0; + uint32_t viewport_width = 0; + uint32_t viewport_height = 0; +}; + +constexpr uint32_t kSelectedPassPreviewColorSampleCount = 4; +constexpr uint32_t kSelectedPassPreviewStepCount = 4; + +using FloatColor = std::array; + +struct SelectedPassClearStep { + uint32_t color = 0; + uint32_t rect_count = 0; + std::array rects{}; +}; + +struct SelectedPassPreviewData { + SelectedPassPreviewSummary summary{}; + std::array clear_steps{}; + uint32_t clear_step_count = 0; +}; + +bool SamePassBinding(const ac6::d3d::ShadowState& left, + const ac6::d3d::ShadowState& right) { + return left.render_targets[0] == right.render_targets[0] && + left.depth_stencil == right.depth_stencil && + left.viewport.width == right.viewport.width && + left.viewport.height == right.viewport.height; +} + +bool SameReplayCandidate(const ReplayCandidateKey& left, const ReplayCandidateKey& right) { + return left.rt0 == right.rt0 && left.depth_stencil == right.depth_stencil && + left.viewport_x == right.viewport_x && left.viewport_y == right.viewport_y && + left.viewport_width == right.viewport_width && + left.viewport_height == right.viewport_height; +} + +ReplayCandidateKey MakeReplayCandidateKey(const NativeReplayPlanSummary& replay_plan) { + return ReplayCandidateKey{replay_plan.present_candidate_rt0, + replay_plan.present_candidate_depth_stencil, + replay_plan.present_candidate_viewport_x, + replay_plan.present_candidate_viewport_y, + replay_plan.present_candidate_viewport_width, + replay_plan.present_candidate_viewport_height}; +} + +bool SequenceInSelectedPass(uint32_t sequence, const NativeReplayPlanSummary& replay_plan) { + return replay_plan.valid && sequence >= replay_plan.selected_pass_start_sequence && + sequence <= replay_plan.selected_pass_end_sequence; +} + +FloatColor DecodeArgbColor(uint32_t packed_color) { + return {float((packed_color >> 16) & 0xFFu) / 255.0f, + float((packed_color >> 8) & 0xFFu) / 255.0f, + float(packed_color & 0xFFu) / 255.0f, 1.0f}; +} + +FloatColor MixColors(const FloatColor& left, const FloatColor& right, float t) { + const float clamped_t = std::clamp(t, 0.0f, 1.0f); + const float inverse_t = 1.0f - clamped_t; + return {left[0] * inverse_t + right[0] * clamped_t, + left[1] * inverse_t + right[1] * clamped_t, + left[2] * inverse_t + right[2] * clamped_t, 1.0f}; +} + +uint32_t PackImmediateColor(const FloatColor& color) { + const auto pack_channel = [](float value) -> uint32_t { + return uint32_t(std::clamp(value, 0.0f, 1.0f) * 255.0f + 0.5f); + }; + const uint32_t r = pack_channel(color[0]); + const uint32_t g = pack_channel(color[1]); + const uint32_t b = pack_channel(color[2]); + const uint32_t a = pack_channel(color[3]); + return r | (g << 8) | (b << 16) | (a << 24); +} + +uint32_t ScoreReplayPass(const ReplayPassCandidate& pass, + const rex::system::GraphicsSwapSubmission& submission, + bool is_last_pass) { + uint32_t score = 0; + if (pass.binding.viewport.width == submission.frontbuffer_width && + pass.binding.viewport.height == submission.frontbuffer_height) { + score += 100; + } + if (pass.draw_count) { + score += 40 + std::min(pass.draw_count, 64); + } + if (pass.resolve_count) { + score += 20; + } + if (pass.binding.render_targets[0]) { + score += 10; + } + if (is_last_pass) { + score += 25; + } + return score; +} + +NativeReplayPlanSummary AnalyzeReplayPlan( + const ac6::d3d::FrameCaptureSnapshot& frame_capture, + const rex::system::GraphicsSwapSubmission& submission) { + NativeReplayPlanSummary summary; + summary.frame_index = frame_capture.frame_index; + + std::vector events; + events.reserve(frame_capture.draws.size() + frame_capture.clears.size() + + frame_capture.resolves.size()); + + for (const auto& draw : frame_capture.draws) { + events.push_back( + {draw.sequence, CapturedFrameEvent::Type::kDraw, &draw.shadow_state}); + } + for (const auto& clear : frame_capture.clears) { + events.push_back( + {clear.sequence, CapturedFrameEvent::Type::kClear, &clear.shadow_state}); + } + for (const auto& resolve : frame_capture.resolves) { + events.push_back( + {resolve.sequence, CapturedFrameEvent::Type::kResolve, &resolve.shadow_state}); + } + + if (events.empty()) { + return summary; + } + + std::sort(events.begin(), events.end(), + [](const CapturedFrameEvent& left, const CapturedFrameEvent& right) { + return left.sequence < right.sequence; + }); + + std::vector passes; + ReplayPassCandidate current_pass; + bool current_pass_valid = false; + auto flush_pass = [&]() { + if (!current_pass_valid) { + return; + } + passes.push_back(current_pass); + current_pass = {}; + current_pass_valid = false; + }; + + for (const CapturedFrameEvent& event : events) { + if (!event.shadow_state) { + continue; + } + if (!current_pass_valid || !SamePassBinding(current_pass.binding, *event.shadow_state)) { + flush_pass(); + current_pass.binding = *event.shadow_state; + current_pass.start_sequence = event.sequence; + current_pass_valid = true; + } + current_pass.end_sequence = event.sequence; + + switch (event.type) { + case CapturedFrameEvent::Type::kDraw: + ++summary.draw_event_count; + ++current_pass.draw_count; + break; + case CapturedFrameEvent::Type::kClear: + ++summary.clear_event_count; + ++current_pass.clear_count; + break; + case CapturedFrameEvent::Type::kResolve: + ++summary.resolve_event_count; + ++current_pass.resolve_count; + break; + } + } + + flush_pass(); + + summary.pass_count = static_cast(passes.size()); + if (!passes.empty()) { + summary.first_pass_draw_count = passes.front().draw_count; + summary.last_pass_draw_count = passes.back().draw_count; + } + + uint32_t best_score = 0; + uint32_t best_index = 0; + bool best_index_valid = false; + for (uint32_t i = 0; i < passes.size(); ++i) { + const ReplayPassCandidate& pass = passes[i]; + summary.largest_pass_draw_count = + std::max(summary.largest_pass_draw_count, pass.draw_count); + bool matches_swap_size = pass.binding.viewport.width == submission.frontbuffer_width && + pass.binding.viewport.height == submission.frontbuffer_height; + if (matches_swap_size) { + ++summary.swap_size_match_pass_count; + } + bool is_last_pass = (i + 1) == passes.size(); + uint32_t score = ScoreReplayPass(pass, submission, is_last_pass); + if (!best_index_valid || score > best_score || + (score == best_score && i > best_index)) { + best_index_valid = true; + best_index = i; + best_score = score; + } + } + + if (best_index_valid) { + const ReplayPassCandidate& selected_pass = passes[best_index]; + summary.selected_pass_index = best_index; + summary.selected_pass_score = best_score; + summary.selected_pass_start_sequence = selected_pass.start_sequence; + summary.selected_pass_end_sequence = selected_pass.end_sequence; + summary.selected_pass_draw_count = selected_pass.draw_count; + summary.selected_pass_clear_count = selected_pass.clear_count; + summary.selected_pass_resolve_count = selected_pass.resolve_count; + summary.selected_pass_is_last = (best_index + 1) == passes.size(); + summary.selected_pass_has_resolve = selected_pass.resolve_count != 0; + summary.present_candidate_rt0 = selected_pass.binding.render_targets[0]; + summary.present_candidate_depth_stencil = selected_pass.binding.depth_stencil; + summary.present_candidate_viewport_x = selected_pass.binding.viewport.x; + summary.present_candidate_viewport_y = selected_pass.binding.viewport.y; + summary.present_candidate_viewport_width = selected_pass.binding.viewport.width; + summary.present_candidate_viewport_height = selected_pass.binding.viewport.height; + summary.present_candidate_matches_swap_size = + summary.present_candidate_viewport_width == submission.frontbuffer_width && + summary.present_candidate_viewport_height == submission.frontbuffer_height; + summary.valid = true; + } + return summary; +} + +SelectedPassPreviewData BuildSelectedPassPreview( + const ac6::d3d::FrameCaptureSnapshot& frame_capture, + const NativeReplayPlanSummary& replay_plan) { + SelectedPassPreviewData preview; + if (!replay_plan.valid) { + return preview; + } + + preview.summary.valid = true; + preview.summary.draw_count = replay_plan.selected_pass_draw_count; + preview.summary.clear_count = replay_plan.selected_pass_clear_count; + preview.summary.resolve_count = replay_plan.selected_pass_resolve_count; + + bool has_first_clear = false; + for (const auto& clear : frame_capture.clears) { + if (!SequenceInSelectedPass(clear.sequence, replay_plan)) { + continue; + } + + if (!has_first_clear) { + preview.summary.first_clear_color = clear.color; + has_first_clear = true; + } + preview.summary.last_clear_color = clear.color; + preview.summary.using_clear_fill = true; + + preview.summary.sampled_clear_rect_count += clear.captured_rect_count; + if (preview.clear_step_count < preview.clear_steps.size()) { + SelectedPassClearStep& step = preview.clear_steps[preview.clear_step_count++]; + step.color = clear.color; + step.rect_count = clear.captured_rect_count; + step.rects = clear.rects; + } else { + SelectedPassClearStep& step = preview.clear_steps.back(); + step.color = clear.color; + step.rect_count = clear.captured_rect_count; + step.rects = clear.rects; + } + } + + preview.summary.sampled_clear_color_count = preview.clear_step_count; + return preview; +} + +#if REX_HAS_D3D12 +class Ac6NativeGraphicsSystem final : public rex::graphics::d3d12::D3D12GraphicsSystem { + public: + X_STATUS Setup(rex::runtime::FunctionDispatcher* function_dispatcher, + rex::system::KernelState* kernel_state, + rex::ui::WindowedAppContext* app_context, + bool with_presentation) override { + X_STATUS status = rex::graphics::d3d12::D3D12GraphicsSystem::Setup( + function_dispatcher, kernel_state, app_context, with_presentation); + if (XFAILED(status)) { + return status; + } + + d3d12_provider_ = static_cast(provider()); + d3d12_presenter_ = with_presentation + ? static_cast(presenter()) + : nullptr; + if (!d3d12_provider_) { + REXLOG_ERROR("AC6 native graphics bootstrap failed to acquire the D3D12 provider"); + rex::graphics::d3d12::D3D12GraphicsSystem::Shutdown(); + return X_STATUS_UNSUCCESSFUL; + } + + { + std::lock_guard lock(g_native_graphics_status_mutex); + g_native_graphics_status.backend_active = true; + g_native_graphics_status.provider_ready = d3d12_provider_ != nullptr; + g_native_graphics_status.presenter_ready = d3d12_presenter_ != nullptr; + } + + if (REXCVAR_GET(ac6_native_graphics_placeholder_present)) { + REXLOG_WARN( + "AC6 native graphics bootstrap backend is active. The legacy D3D12 " + "graphics core remains enabled for compatibility, while direct swap " + "presentation is intercepted by the native replay preview path."); + } else { + REXLOG_WARN( + "AC6 native graphics bootstrap backend is active. The legacy D3D12 " + "graphics core remains enabled for compatibility, and direct swap " + "submissions are observed natively while legacy PM4 presentation " + "remains authoritative."); + } + return X_STATUS_SUCCESS; + } + + void Shutdown() override { + ShutdownPlaceholderRefreshResources(); + { + std::lock_guard lock(g_native_graphics_status_mutex); + g_native_graphics_status.backend_active = false; + g_native_graphics_status.provider_ready = false; + g_native_graphics_status.presenter_ready = false; + g_native_graphics_status.placeholder_resources_initialized = false; + g_native_graphics_status.last_swap_intercepted = false; + g_native_graphics_status.last_swap_fell_back = false; + } + d3d12_presenter_ = nullptr; + d3d12_provider_ = nullptr; + last_swap_submission_ = {}; + swap_count_ = 0; + last_replay_plan_ = {}; + last_selected_pass_preview_ = {}; + last_selected_candidate_ = {}; + last_selected_candidate_valid_ = false; + selected_candidate_streak_ = 0; + logged_first_swap_ = false; + logged_first_present_ = false; + logged_passthrough_swap_ = false; + logged_refresh_failure_ = false; + last_present_used_raster_replay_ = false; + rex::graphics::d3d12::D3D12GraphicsSystem::Shutdown(); + } + + bool HandleVideoSwap(const rex::system::GraphicsSwapSubmission& submission) override { + last_swap_submission_ = submission; + ++swap_count_; + last_present_used_raster_replay_ = false; + ac6::d3d::FrameCaptureSnapshot frame_capture = ac6::d3d::GetFrameCapture(); + NativeReplayPlanSummary replay_plan = AnalyzeReplayPlan(frame_capture, submission); + if (replay_plan.valid) { + ReplayCandidateKey candidate_key = MakeReplayCandidateKey(replay_plan); + if (last_selected_candidate_valid_ && + SameReplayCandidate(last_selected_candidate_, candidate_key)) { + ++selected_candidate_streak_; + } else { + last_selected_candidate_ = candidate_key; + last_selected_candidate_valid_ = true; + selected_candidate_streak_ = 1; + } + replay_plan.selected_pass_streak = selected_candidate_streak_; + replay_plan.selected_pass_is_stable = selected_candidate_streak_ >= 3; + } else { + last_selected_candidate_valid_ = false; + selected_candidate_streak_ = 0; + } + last_replay_plan_ = replay_plan; + last_selected_pass_preview_ = BuildSelectedPassPreview(frame_capture, replay_plan); + + { + std::lock_guard lock(g_native_graphics_status_mutex); + g_native_graphics_status.total_swap_count = swap_count_; + g_native_graphics_status.last_frontbuffer_virtual_address = + submission.frontbuffer_virtual_address; + g_native_graphics_status.last_frontbuffer_physical_address = + submission.frontbuffer_physical_address; + g_native_graphics_status.last_frontbuffer_width = submission.frontbuffer_width; + g_native_graphics_status.last_frontbuffer_height = submission.frontbuffer_height; + g_native_graphics_status.last_texture_format = submission.texture_format; + g_native_graphics_status.last_color_space = submission.color_space; + g_native_graphics_status.capture_summary = ac6::d3d::GetFrameCaptureSummary(); + g_native_graphics_status.replay_plan = replay_plan; + g_native_graphics_status.selected_pass_preview = last_selected_pass_preview_.summary; + g_native_graphics_status.last_swap_intercepted = false; + g_native_graphics_status.last_swap_fell_back = false; + } + + if (!logged_first_swap_) { + logged_first_swap_ = true; + REXLOG_WARN( + "AC6 native graphics bootstrap received the first direct swap " + "(fb_va={:08X}, fb_pa={:08X}, {}x{}, fmt={:08X})", + submission.frontbuffer_virtual_address, submission.frontbuffer_physical_address, + submission.frontbuffer_width, submission.frontbuffer_height, submission.texture_format); + } + + if (!REXCVAR_GET(ac6_native_graphics_placeholder_present)) { + if (!logged_passthrough_swap_) { + logged_passthrough_swap_ = true; + REXLOG_WARN( + "AC6 native graphics bootstrap is leaving direct swap presentation " + "on the legacy PM4 path because ac6_native_graphics_placeholder_present=false"); + } + { + std::lock_guard lock(g_native_graphics_status_mutex); + ++g_native_graphics_status.fallback_swap_count; + g_native_graphics_status.last_swap_fell_back = true; + } + return false; + } + + if (!EnsurePlaceholderRefreshResources()) { + if (!logged_refresh_failure_) { + logged_refresh_failure_ = true; + REXLOG_WARN( + "AC6 native graphics bootstrap could not initialize diagnostic " + "direct-swap replay resources; falling back to the legacy PM4 swap path"); + } + { + std::lock_guard lock(g_native_graphics_status_mutex); + ++g_native_graphics_status.fallback_swap_count; + g_native_graphics_status.last_swap_fell_back = true; + } + return false; + } + + if (!RefreshPlaceholderFrame(submission)) { + if (!logged_refresh_failure_) { + logged_refresh_failure_ = true; + REXLOG_WARN( + "AC6 native graphics bootstrap could not refresh the diagnostic " + "direct-swap replay frame; falling back to the legacy PM4 swap path"); + } + { + std::lock_guard lock(g_native_graphics_status_mutex); + ++g_native_graphics_status.fallback_swap_count; + g_native_graphics_status.last_swap_fell_back = true; + } + return false; + } + + if (!logged_first_present_) { + logged_first_present_ = true; + REXLOG_WARN( + "AC6 native graphics bootstrap is now presenting a raster replay " + "preview frame through the direct swap path"); + } + + { + std::lock_guard lock(g_native_graphics_status_mutex); + ++g_native_graphics_status.intercepted_swap_count; + g_native_graphics_status.selected_pass_preview.using_raster_replay = + last_present_used_raster_replay_; + g_native_graphics_status.last_swap_intercepted = true; + } + DispatchInterruptCallback(0, 2); + return true; + } + + private: + static constexpr uint32_t kPlaceholderRefreshSlotCount = 3; + static constexpr uint32_t kPlaceholderHeartbeatPeriod = 120; + static constexpr uint32_t kRasterPreviewMaxRectCount = 64; + static constexpr uint32_t kRasterPreviewMaxVertexCount = kRasterPreviewMaxRectCount * 6; + + struct PlaceholderRefreshSlot { + Microsoft::WRL::ComPtr command_allocator; + Microsoft::WRL::ComPtr shader_visible_uav_heap; + Microsoft::WRL::ComPtr cpu_uav_heap; + Microsoft::WRL::ComPtr rtv_heap; + Microsoft::WRL::ComPtr raster_render_target; + Microsoft::WRL::ComPtr vertex_upload_buffer; + uint8_t* vertex_upload_mapping = nullptr; + uint32_t raster_target_width = 0; + uint32_t raster_target_height = 0; + uint64_t last_submission = 0; + }; + + bool EnsurePlaceholderRefreshResources() { + if (placeholder_resources_initialized_) { + return true; + } + if (!InitializePlaceholderRefreshResources()) { + return false; + } + placeholder_resources_initialized_ = true; + { + std::lock_guard lock(g_native_graphics_status_mutex); + g_native_graphics_status.placeholder_resources_initialized = true; + } + return true; + } + + bool InitializeRasterPreviewResources(ID3D12Device* device) { + D3D12_ROOT_PARAMETER root_parameters[3] = {}; + D3D12_DESCRIPTOR_RANGE descriptor_range_texture = {}; + D3D12_DESCRIPTOR_RANGE descriptor_range_sampler = {}; + + root_parameters[0].ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE; + root_parameters[0].DescriptorTable.NumDescriptorRanges = 1; + root_parameters[0].DescriptorTable.pDescriptorRanges = &descriptor_range_texture; + root_parameters[0].ShaderVisibility = D3D12_SHADER_VISIBILITY_PIXEL; + descriptor_range_texture.RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_SRV; + descriptor_range_texture.NumDescriptors = 1; + descriptor_range_texture.BaseShaderRegister = 0; + descriptor_range_texture.RegisterSpace = 0; + descriptor_range_texture.OffsetInDescriptorsFromTableStart = 0; + + root_parameters[1].ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE; + root_parameters[1].DescriptorTable.NumDescriptorRanges = 1; + root_parameters[1].DescriptorTable.pDescriptorRanges = &descriptor_range_sampler; + root_parameters[1].ShaderVisibility = D3D12_SHADER_VISIBILITY_PIXEL; + descriptor_range_sampler.RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER; + descriptor_range_sampler.NumDescriptors = 1; + descriptor_range_sampler.BaseShaderRegister = 0; + descriptor_range_sampler.RegisterSpace = 0; + descriptor_range_sampler.OffsetInDescriptorsFromTableStart = 0; + + root_parameters[2].ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS; + root_parameters[2].Constants.ShaderRegister = 0; + root_parameters[2].Constants.RegisterSpace = 0; + root_parameters[2].Constants.Num32BitValues = 2; + root_parameters[2].ShaderVisibility = D3D12_SHADER_VISIBILITY_VERTEX; + + D3D12_ROOT_SIGNATURE_DESC root_signature_desc = {}; + root_signature_desc.NumParameters = uint32_t(std::size(root_parameters)); + root_signature_desc.pParameters = root_parameters; + root_signature_desc.NumStaticSamplers = 0; + root_signature_desc.pStaticSamplers = nullptr; + root_signature_desc.Flags = D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT; + raster_preview_root_signature_.Attach( + rex::ui::d3d12::util::CreateRootSignature(*d3d12_provider_, root_signature_desc)); + if (!raster_preview_root_signature_) { + REXLOG_ERROR( + "AC6 native graphics bootstrap failed to create the raster replay " + "root signature"); + return false; + } + + D3D12_GRAPHICS_PIPELINE_STATE_DESC pipeline_desc = {}; + pipeline_desc.pRootSignature = raster_preview_root_signature_.Get(); + pipeline_desc.VS.pShaderBytecode = shaders::immediate_vs; + pipeline_desc.VS.BytecodeLength = sizeof(shaders::immediate_vs); + pipeline_desc.PS.pShaderBytecode = shaders::immediate_ps; + pipeline_desc.PS.BytecodeLength = sizeof(shaders::immediate_ps); + D3D12_RENDER_TARGET_BLEND_DESC& blend_desc = pipeline_desc.BlendState.RenderTarget[0]; + blend_desc.BlendEnable = TRUE; + blend_desc.SrcBlend = D3D12_BLEND_SRC_ALPHA; + blend_desc.DestBlend = D3D12_BLEND_INV_SRC_ALPHA; + blend_desc.BlendOp = D3D12_BLEND_OP_ADD; + blend_desc.SrcBlendAlpha = D3D12_BLEND_ONE; + blend_desc.DestBlendAlpha = D3D12_BLEND_ONE; + blend_desc.BlendOpAlpha = D3D12_BLEND_OP_ADD; + blend_desc.RenderTargetWriteMask = D3D12_COLOR_WRITE_ENABLE_ALL; + pipeline_desc.SampleMask = UINT_MAX; + pipeline_desc.RasterizerState.FillMode = D3D12_FILL_MODE_SOLID; + pipeline_desc.RasterizerState.CullMode = D3D12_CULL_MODE_NONE; + pipeline_desc.RasterizerState.FrontCounterClockwise = FALSE; + pipeline_desc.RasterizerState.DepthClipEnable = TRUE; + D3D12_INPUT_ELEMENT_DESC input_elements[3] = {}; + input_elements[0].SemanticName = "POSITION"; + input_elements[0].Format = DXGI_FORMAT_R32G32_FLOAT; + input_elements[0].AlignedByteOffset = offsetof(rex::ui::ImmediateVertex, x); + input_elements[1].SemanticName = "TEXCOORD"; + input_elements[1].Format = DXGI_FORMAT_R32G32_FLOAT; + input_elements[1].AlignedByteOffset = offsetof(rex::ui::ImmediateVertex, u); + input_elements[2].SemanticName = "COLOR"; + input_elements[2].Format = DXGI_FORMAT_R8G8B8A8_UNORM; + input_elements[2].AlignedByteOffset = offsetof(rex::ui::ImmediateVertex, color); + pipeline_desc.InputLayout.pInputElementDescs = input_elements; + pipeline_desc.InputLayout.NumElements = uint32_t(std::size(input_elements)); + pipeline_desc.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE; + pipeline_desc.NumRenderTargets = 1; + pipeline_desc.RTVFormats[0] = rex::ui::d3d12::D3D12Presenter::kGuestOutputFormat; + pipeline_desc.SampleDesc.Count = 1; + if (FAILED(device->CreateGraphicsPipelineState(&pipeline_desc, + IID_PPV_ARGS(&raster_preview_pipeline_)))) { + REXLOG_ERROR( + "AC6 native graphics bootstrap failed to create the raster replay " + "pipeline"); + return false; + } + + D3D12_DESCRIPTOR_HEAP_DESC view_heap_desc = {}; + view_heap_desc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV; + view_heap_desc.NumDescriptors = 1; + view_heap_desc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE; + if (FAILED(device->CreateDescriptorHeap(&view_heap_desc, + IID_PPV_ARGS(&raster_preview_view_heap_)))) { + REXLOG_ERROR( + "AC6 native graphics bootstrap failed to create the raster replay " + "view heap"); + return false; + } + + D3D12_SHADER_RESOURCE_VIEW_DESC texture_view_desc = {}; + texture_view_desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; + texture_view_desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2D; + texture_view_desc.Shader4ComponentMapping = + D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING( + D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1, + D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1, + D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1, + D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1); + texture_view_desc.Texture2D.MostDetailedMip = 0; + texture_view_desc.Texture2D.MipLevels = 1; + texture_view_desc.Texture2D.PlaneSlice = 0; + texture_view_desc.Texture2D.ResourceMinLODClamp = 0.0f; + device->CreateShaderResourceView( + nullptr, &texture_view_desc, + raster_preview_view_heap_->GetCPUDescriptorHandleForHeapStart()); + + D3D12_DESCRIPTOR_HEAP_DESC sampler_heap_desc = {}; + sampler_heap_desc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER; + sampler_heap_desc.NumDescriptors = 1; + sampler_heap_desc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE; + if (FAILED(device->CreateDescriptorHeap(&sampler_heap_desc, + IID_PPV_ARGS(&raster_preview_sampler_heap_)))) { + REXLOG_ERROR( + "AC6 native graphics bootstrap failed to create the raster replay " + "sampler heap"); + return false; + } + + D3D12_SAMPLER_DESC sampler_desc = {}; + sampler_desc.Filter = D3D12_FILTER_MIN_MAG_MIP_POINT; + sampler_desc.AddressU = D3D12_TEXTURE_ADDRESS_MODE_CLAMP; + sampler_desc.AddressV = D3D12_TEXTURE_ADDRESS_MODE_CLAMP; + sampler_desc.AddressW = D3D12_TEXTURE_ADDRESS_MODE_CLAMP; + sampler_desc.MaxAnisotropy = 1; + device->CreateSampler(&sampler_desc, + raster_preview_sampler_heap_->GetCPUDescriptorHandleForHeapStart()); + + D3D12_DESCRIPTOR_HEAP_DESC rtv_heap_desc = {}; + rtv_heap_desc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV; + rtv_heap_desc.NumDescriptors = 1; + rtv_heap_desc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE; + rtv_heap_desc.NodeMask = 0; + + D3D12_RESOURCE_DESC upload_buffer_desc = {}; + rex::ui::d3d12::util::FillBufferResourceDesc( + upload_buffer_desc, sizeof(rex::ui::ImmediateVertex) * kRasterPreviewMaxVertexCount, + D3D12_RESOURCE_FLAG_NONE); + + for (PlaceholderRefreshSlot& slot : placeholder_refresh_slots_) { + if (FAILED(device->CreateDescriptorHeap(&rtv_heap_desc, IID_PPV_ARGS(&slot.rtv_heap)))) { + REXLOG_ERROR( + "AC6 native graphics bootstrap failed to create a raster replay " + "RTV heap"); + return false; + } + if (FAILED(device->CreateCommittedResource( + &rex::ui::d3d12::util::kHeapPropertiesUpload, D3D12_HEAP_FLAG_NONE, + &upload_buffer_desc, D3D12_RESOURCE_STATE_GENERIC_READ, nullptr, + IID_PPV_ARGS(&slot.vertex_upload_buffer)))) { + REXLOG_ERROR( + "AC6 native graphics bootstrap failed to create a raster replay " + "vertex upload buffer"); + return false; + } + D3D12_RANGE read_range = {0, 0}; + if (FAILED(slot.vertex_upload_buffer->Map(0, &read_range, + reinterpret_cast(&slot.vertex_upload_mapping)))) { + REXLOG_ERROR( + "AC6 native graphics bootstrap failed to map a raster replay " + "vertex upload buffer"); + return false; + } + } + + return true; + } + + bool EnsureRasterPreviewRenderTarget(PlaceholderRefreshSlot& slot, uint32_t width, + uint32_t height) { + if (slot.raster_render_target && slot.raster_target_width == width && + slot.raster_target_height == height) { + return true; + } + + slot.raster_render_target.Reset(); + slot.raster_target_width = 0; + slot.raster_target_height = 0; + + D3D12_CLEAR_VALUE clear_value = {}; + clear_value.Format = rex::ui::d3d12::D3D12Presenter::kGuestOutputFormat; + clear_value.Color[0] = 0.0f; + clear_value.Color[1] = 0.0f; + clear_value.Color[2] = 0.0f; + clear_value.Color[3] = 1.0f; + + D3D12_RESOURCE_DESC render_target_desc = {}; + render_target_desc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D; + render_target_desc.Alignment = 0; + render_target_desc.Width = width; + render_target_desc.Height = height; + render_target_desc.DepthOrArraySize = 1; + render_target_desc.MipLevels = 1; + render_target_desc.Format = rex::ui::d3d12::D3D12Presenter::kGuestOutputFormat; + render_target_desc.SampleDesc.Count = 1; + render_target_desc.SampleDesc.Quality = 0; + render_target_desc.Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN; + render_target_desc.Flags = D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET; + if (FAILED(d3d12_provider_->GetDevice()->CreateCommittedResource( + &rex::ui::d3d12::util::kHeapPropertiesDefault, + d3d12_provider_->GetHeapFlagCreateNotZeroed(), &render_target_desc, + D3D12_RESOURCE_STATE_RENDER_TARGET, &clear_value, + IID_PPV_ARGS(&slot.raster_render_target)))) { + REXLOG_ERROR( + "AC6 native graphics bootstrap failed to create a {}x{} raster replay " + "render target", + width, height); + return false; + } + + d3d12_provider_->GetDevice()->CreateRenderTargetView( + slot.raster_render_target.Get(), nullptr, slot.rtv_heap->GetCPUDescriptorHandleForHeapStart()); + slot.raster_target_width = width; + slot.raster_target_height = height; + return true; + } + + bool InitializePlaceholderRefreshResources() { + auto fail = [this](const char* message) { + REXLOG_ERROR("{}", message); + ShutdownPlaceholderRefreshResources(); + return false; + }; + + ID3D12Device* device = d3d12_provider_->GetDevice(); + ID3D12CommandQueue* direct_queue = d3d12_provider_->GetDirectQueue(); + if (!device || !direct_queue) { + return fail("AC6 native graphics bootstrap D3D12 provider is missing device or queue"); + } + + if (!placeholder_submission_tracker_.Initialize(device, direct_queue)) { + return fail("AC6 native graphics bootstrap failed to create the placeholder submission tracker"); + } + + D3D12_DESCRIPTOR_HEAP_DESC uav_heap_desc = {}; + uav_heap_desc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV; + uav_heap_desc.NumDescriptors = 1; + uav_heap_desc.NodeMask = 0; + + for (uint32_t i = 0; i < kPlaceholderRefreshSlotCount; ++i) { + PlaceholderRefreshSlot& slot = placeholder_refresh_slots_[i]; + if (FAILED(device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, + IID_PPV_ARGS(&slot.command_allocator)))) { + return fail("AC6 native graphics bootstrap failed to create a placeholder command allocator"); + } + + uav_heap_desc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE; + if (FAILED(device->CreateDescriptorHeap(&uav_heap_desc, + IID_PPV_ARGS(&slot.shader_visible_uav_heap)))) { + return fail( + "AC6 native graphics bootstrap failed to create a shader-visible UAV heap"); + } + + uav_heap_desc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE; + if (FAILED(device->CreateDescriptorHeap(&uav_heap_desc, IID_PPV_ARGS(&slot.cpu_uav_heap)))) { + return fail("AC6 native graphics bootstrap failed to create a CPU UAV heap"); + } + } + + if (FAILED(device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, + placeholder_refresh_slots_[0].command_allocator.Get(), + nullptr, IID_PPV_ARGS(&placeholder_command_list_)))) { + return fail("AC6 native graphics bootstrap failed to create the placeholder command list"); + } + if (FAILED(placeholder_command_list_->Close())) { + return fail("AC6 native graphics bootstrap failed to close the placeholder command list"); + } + + if (!InitializeRasterPreviewResources(device)) { + return fail("AC6 native graphics bootstrap failed to initialize raster replay resources"); + } + + placeholder_refresh_slot_index_ = 0; + return true; + } + + void ShutdownPlaceholderRefreshResources() { + placeholder_submission_tracker_.Shutdown(); + placeholder_command_list_.Reset(); + raster_preview_pipeline_.Reset(); + raster_preview_root_signature_.Reset(); + raster_preview_view_heap_.Reset(); + raster_preview_sampler_heap_.Reset(); + placeholder_refresh_slot_index_ = 0; + placeholder_resources_initialized_ = false; + { + std::lock_guard lock(g_native_graphics_status_mutex); + g_native_graphics_status.placeholder_resources_initialized = false; + } + for (PlaceholderRefreshSlot& slot : placeholder_refresh_slots_) { + slot.last_submission = 0; + if (slot.vertex_upload_buffer && slot.vertex_upload_mapping) { + slot.vertex_upload_buffer->Unmap(0, nullptr); + } + slot.vertex_upload_mapping = nullptr; + slot.vertex_upload_buffer.Reset(); + slot.raster_render_target.Reset(); + slot.rtv_heap.Reset(); + slot.raster_target_width = 0; + slot.raster_target_height = 0; + slot.cpu_uav_heap.Reset(); + slot.shader_visible_uav_heap.Reset(); + slot.command_allocator.Reset(); + } + } + + bool RefreshPlaceholderFrame(const rex::system::GraphicsSwapSubmission& submission) { + if (!d3d12_presenter_ || !submission.frontbuffer_width || !submission.frontbuffer_height) { + return false; + } + + return d3d12_presenter_->RefreshGuestOutput( + submission.frontbuffer_width, submission.frontbuffer_height, + submission.frontbuffer_width, submission.frontbuffer_height, + [this, submission](rex::ui::Presenter::GuestOutputRefreshContext& context) { + return RecordPlaceholderFrame( + static_cast( + context), + submission); + }); + } + + bool SubmitPlaceholderCommandList(PlaceholderRefreshSlot& slot) { + if (FAILED(placeholder_command_list_->Close())) { + REXLOG_ERROR("AC6 native graphics bootstrap failed to close the placeholder command list"); + return false; + } + + ID3D12CommandList* execute_command_list = placeholder_command_list_.Get(); + d3d12_provider_->GetDirectQueue()->ExecuteCommandLists(1, &execute_command_list); + slot.last_submission = placeholder_submission_tracker_.GetCurrentSubmission(); + if (!placeholder_submission_tracker_.NextSubmission()) { + REXLOG_WARN( + "AC6 native graphics bootstrap could not signal the placeholder " + "refresh fence immediately"); + } + placeholder_refresh_slot_index_ = + (placeholder_refresh_slot_index_ + 1) % kPlaceholderRefreshSlotCount; + return true; + } + + bool TryRecordRasterPlaceholderFrame( + PlaceholderRefreshSlot& slot, ID3D12Resource* guest_output_resource, + const rex::system::GraphicsSwapSubmission& submission) { + if (!raster_preview_pipeline_ || !raster_preview_root_signature_ || !raster_preview_view_heap_ || + !raster_preview_sampler_heap_ || !slot.rtv_heap || !slot.vertex_upload_mapping || + !guest_output_resource) { + return false; + } + if (!EnsureRasterPreviewRenderTarget(slot, submission.frontbuffer_width, + submission.frontbuffer_height)) { + return false; + } + + const UINT width = submission.frontbuffer_width; + const UINT height = submission.frontbuffer_height; + const UINT title_band_height = std::max(1, height / 8); + const UINT status_band_height = std::max(1, height / 20); + const UINT heartbeat_width = + std::max(1, UINT((uint64_t(width) * + (((swap_count_ - 1) % kPlaceholderHeartbeatPeriod) + 1)) / + kPlaceholderHeartbeatPeriod)); + + const NativeReplayPlanSummary& replay_plan = last_replay_plan_; + const SelectedPassPreviewData& selected_pass_preview = last_selected_pass_preview_; + const uint32_t candidate_seed = + replay_plan.present_candidate_rt0 ^ (replay_plan.present_candidate_depth_stencil * 33u) ^ + (replay_plan.selected_pass_score * 2654435761u); + auto channel = [candidate_seed](uint32_t shift, float low, float high) { + const float t = float((candidate_seed >> shift) & 0xFFu) / 255.0f; + return low + (high - low) * t; + }; + + const FloatColor background_color = {replay_plan.valid ? 0.03f : 0.08f, + replay_plan.valid ? 0.04f : 0.06f, + replay_plan.valid ? 0.07f : 0.10f, 1.0f}; + const FloatColor title_band_color = { + replay_plan.selected_pass_is_stable ? 0.18f + : (replay_plan.present_candidate_matches_swap_size ? 0.18f : 0.55f), + replay_plan.selected_pass_is_stable ? 0.62f + : (replay_plan.present_candidate_matches_swap_size ? 0.56f : 0.22f), + replay_plan.selected_pass_is_stable ? 0.46f + : (replay_plan.present_candidate_matches_swap_size ? 0.24f : 0.18f), 1.0f}; + const FloatColor fallback_candidate_color = {channel(0, 0.20f, 0.92f), + channel(8, 0.18f, 0.75f), + channel(16, 0.16f, 0.88f), 1.0f}; + const FloatColor resolve_color = {0.98f, 0.95f, 0.28f, 0.92f}; + const FloatColor heartbeat_color = {0.96f, 0.92f, 0.22f, 1.0f}; + const FloatColor candidate_base_color = + selected_pass_preview.summary.using_clear_fill + ? DecodeArgbColor(selected_pass_preview.summary.last_clear_color) + : fallback_candidate_color; + const FloatColor stripe_color = MixColors(candidate_base_color, title_band_color, 0.40f); + const FloatColor candidate_outline_color = + MixColors(candidate_base_color, heartbeat_color, 0.55f); + const FloatColor score_color = MixColors(candidate_outline_color, heartbeat_color, 0.35f); + + UINT candidate_left = 0; + UINT candidate_top = title_band_height; + UINT candidate_width = width; + UINT candidate_height = std::max(1, height - title_band_height - status_band_height); + if (replay_plan.valid && replay_plan.present_candidate_viewport_width && + replay_plan.present_candidate_viewport_height) { + candidate_left = std::min(width - 1, replay_plan.present_candidate_viewport_x); + candidate_top = std::min(height - 1, replay_plan.present_candidate_viewport_y); + candidate_width = + std::max(1, std::min(replay_plan.present_candidate_viewport_width, + width - candidate_left)); + candidate_height = + std::max(1, std::min(replay_plan.present_candidate_viewport_height, + height - candidate_top)); + } + const UINT candidate_right = std::min(width, candidate_left + candidate_width); + const UINT candidate_bottom = std::min(height, candidate_top + candidate_height); + + std::array vertices = {}; + uint32_t vertex_count = 0; + auto push_rect = [&](float left, float top, float right, float bottom, FloatColor color) { + left = std::clamp(left, 0.0f, float(width)); + top = std::clamp(top, 0.0f, float(height)); + right = std::clamp(right, 0.0f, float(width)); + bottom = std::clamp(bottom, 0.0f, float(height)); + if (left >= right || top >= bottom || vertex_count + 6 > vertices.size()) { + return; + } + const uint32_t packed_color = PackImmediateColor(color); + auto emit_vertex = [&](float x, float y) { + rex::ui::ImmediateVertex& vertex = vertices[vertex_count++]; + vertex.x = x; + vertex.y = y; + vertex.u = 0.0f; + vertex.v = 0.0f; + vertex.color = packed_color; + }; + emit_vertex(left, top); + emit_vertex(right, top); + emit_vertex(right, bottom); + emit_vertex(left, top); + emit_vertex(right, bottom); + emit_vertex(left, bottom); + }; + + push_rect(float(candidate_left), float(candidate_top), float(candidate_right), + float(candidate_bottom), candidate_base_color); + + const FloatColor clear_overlay_tint = {1.0f, 1.0f, 1.0f, 0.92f}; + for (uint32_t i = 0; i < selected_pass_preview.clear_step_count; ++i) { + const SelectedPassClearStep& step = selected_pass_preview.clear_steps[i]; + FloatColor step_color = DecodeArgbColor(step.color); + step_color[3] = clear_overlay_tint[3]; + if (step.rect_count) { + for (uint32_t rect_index = 0; rect_index < step.rect_count; ++rect_index) { + const ac6::d3d::ClearRect& rect = step.rects[rect_index]; + push_rect(float(rect.left), float(rect.top), float(rect.right), float(rect.bottom), + step_color); + } + } else { + push_rect(float(candidate_left), float(candidate_top), float(candidate_right), + float(candidate_bottom), step_color); + } + } + + UINT resolve_band_height = 0; + if (replay_plan.valid && replay_plan.selected_pass_has_resolve) { + resolve_band_height = std::max(1, candidate_height / 10); + push_rect(float(candidate_left), float(candidate_bottom - resolve_band_height), + float(candidate_right), float(candidate_bottom), resolve_color); + } + + if (selected_pass_preview.summary.draw_count && candidate_width > 8 && candidate_height > 8) { + const UINT stripe_count = + std::min(12, std::max(1, 1 + (selected_pass_preview.summary.draw_count / 6))); + const UINT stripe_width = + std::max(1, candidate_width / std::max(24, stripe_count * 5)); + const UINT stripe_top = candidate_top; + const UINT stripe_bottom = + candidate_bottom > resolve_band_height ? (candidate_bottom - resolve_band_height) + : candidate_bottom; + const UINT stripe_area_height = + stripe_bottom > stripe_top ? (stripe_bottom - stripe_top) : 0; + for (UINT i = 0; i < stripe_count && stripe_area_height; ++i) { + const UINT stripe_center_x = + candidate_left + ((i + 1) * candidate_width) / (stripe_count + 1); + const UINT stripe_left = stripe_center_x > stripe_width / 2 + ? stripe_center_x - stripe_width / 2 + : candidate_left; + const UINT stripe_right = std::min(candidate_right, stripe_left + stripe_width); + const UINT stripe_height = + std::max(1, stripe_area_height * (45 + ((i * 13) % 40)) / 100); + const UINT stripe_start = stripe_bottom > stripe_height ? (stripe_bottom - stripe_height) + : stripe_top; + FloatColor lane_color = + (i & 1u) ? MixColors(stripe_color, heartbeat_color, 0.22f) + : MixColors(stripe_color, background_color, 0.10f); + lane_color[3] = 0.42f; + push_rect(float(stripe_left), float(stripe_start), float(stripe_right), + float(stripe_bottom), lane_color); + } + } + + if (candidate_width > 2 && candidate_height > 2) { + const UINT outline_thickness = + std::max(1, std::min(4, std::min(candidate_width, candidate_height) / 96 + 1)); + const UINT bottom_outline_top = + candidate_bottom > outline_thickness ? (candidate_bottom - outline_thickness) + : candidate_top; + push_rect(float(candidate_left), float(candidate_top), float(candidate_right), + float(std::min(candidate_bottom, candidate_top + outline_thickness)), + candidate_outline_color); + push_rect(float(candidate_left), float(bottom_outline_top), float(candidate_right), + float(candidate_bottom), candidate_outline_color); + push_rect(float(candidate_left), float(candidate_top), + float(std::min(candidate_right, candidate_left + outline_thickness)), + float(candidate_bottom), candidate_outline_color); + push_rect(float(candidate_right > outline_thickness ? (candidate_right - outline_thickness) + : candidate_left), + float(candidate_top), float(candidate_right), float(candidate_bottom), + candidate_outline_color); + } + + if (replay_plan.valid && replay_plan.pass_count) { + const UINT score_width = std::max( + 1, UINT((uint64_t(width) * std::min(replay_plan.selected_pass_score, 220u)) / + 220u)); + push_rect(0.0f, float(title_band_height), float(score_width), + float(std::min(height, title_band_height + status_band_height)), score_color); + } + push_rect(0.0f, 0.0f, float(width), float(title_band_height), title_band_color); + push_rect(0.0f, float(height - status_band_height), float(heartbeat_width), float(height), + heartbeat_color); + + D3D12_VIEWPORT viewport = {}; + viewport.TopLeftX = 0.0f; + viewport.TopLeftY = 0.0f; + viewport.Width = float(width); + viewport.Height = float(height); + viewport.MinDepth = 0.0f; + viewport.MaxDepth = 1.0f; + D3D12_RECT scissor = {0, 0, LONG(width), LONG(height)}; + placeholder_command_list_->RSSetViewports(1, &viewport); + placeholder_command_list_->RSSetScissorRects(1, &scissor); + + const D3D12_CPU_DESCRIPTOR_HANDLE rtv = + slot.rtv_heap->GetCPUDescriptorHandleForHeapStart(); + placeholder_command_list_->OMSetRenderTargets(1, &rtv, TRUE, nullptr); + placeholder_command_list_->ClearRenderTargetView(rtv, background_color.data(), 0, nullptr); + + if (vertex_count) { + std::memcpy(slot.vertex_upload_mapping, vertices.data(), + sizeof(rex::ui::ImmediateVertex) * vertex_count); + D3D12_VERTEX_BUFFER_VIEW vertex_buffer_view = {}; + vertex_buffer_view.BufferLocation = slot.vertex_upload_buffer->GetGPUVirtualAddress(); + vertex_buffer_view.SizeInBytes = UINT(sizeof(rex::ui::ImmediateVertex) * vertex_count); + vertex_buffer_view.StrideInBytes = UINT(sizeof(rex::ui::ImmediateVertex)); + + ID3D12DescriptorHeap* descriptor_heaps[] = {raster_preview_view_heap_.Get(), + raster_preview_sampler_heap_.Get()}; + placeholder_command_list_->SetDescriptorHeaps(uint32_t(std::size(descriptor_heaps)), + descriptor_heaps); + placeholder_command_list_->SetGraphicsRootSignature(raster_preview_root_signature_.Get()); + const float coordinate_space_size_inv[2] = {1.0f / float(width), 1.0f / float(height)}; + placeholder_command_list_->SetGraphicsRoot32BitConstants(2, 2, coordinate_space_size_inv, 0); + placeholder_command_list_->SetGraphicsRootDescriptorTable( + 0, raster_preview_view_heap_->GetGPUDescriptorHandleForHeapStart()); + placeholder_command_list_->SetGraphicsRootDescriptorTable( + 1, raster_preview_sampler_heap_->GetGPUDescriptorHandleForHeapStart()); + placeholder_command_list_->SetPipelineState(raster_preview_pipeline_.Get()); + placeholder_command_list_->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST); + placeholder_command_list_->IASetVertexBuffers(0, 1, &vertex_buffer_view); + placeholder_command_list_->DrawInstanced(vertex_count, 1, 0, 0); + } + + D3D12_RESOURCE_BARRIER barriers[3] = {}; + barriers[0].Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION; + barriers[0].Transition.pResource = slot.raster_render_target.Get(); + barriers[0].Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES; + barriers[0].Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET; + barriers[0].Transition.StateAfter = D3D12_RESOURCE_STATE_COPY_SOURCE; + barriers[1].Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION; + barriers[1].Transition.pResource = guest_output_resource; + barriers[1].Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES; + barriers[1].Transition.StateBefore = rex::ui::d3d12::D3D12Presenter::kGuestOutputInternalState; + barriers[1].Transition.StateAfter = D3D12_RESOURCE_STATE_COPY_DEST; + placeholder_command_list_->ResourceBarrier(2, barriers); + + D3D12_TEXTURE_COPY_LOCATION copy_dest = {}; + copy_dest.pResource = guest_output_resource; + copy_dest.Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX; + copy_dest.SubresourceIndex = 0; + D3D12_TEXTURE_COPY_LOCATION copy_source = {}; + copy_source.pResource = slot.raster_render_target.Get(); + copy_source.Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX; + copy_source.SubresourceIndex = 0; + placeholder_command_list_->CopyTextureRegion(©_dest, 0, 0, 0, ©_source, nullptr); + + barriers[0].Transition.StateBefore = D3D12_RESOURCE_STATE_COPY_DEST; + barriers[0].Transition.StateAfter = rex::ui::d3d12::D3D12Presenter::kGuestOutputInternalState; + barriers[0].Transition.pResource = guest_output_resource; + barriers[1].Transition.StateBefore = D3D12_RESOURCE_STATE_COPY_SOURCE; + barriers[1].Transition.StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET; + barriers[1].Transition.pResource = slot.raster_render_target.Get(); + placeholder_command_list_->ResourceBarrier(2, barriers); + + return true; + } + + bool RecordPlaceholderFrame( + rex::ui::d3d12::D3D12Presenter::D3D12GuestOutputRefreshContext& context, + const rex::system::GraphicsSwapSubmission& submission) { + std::lock_guard lock(placeholder_refresh_mutex_); + + if (!d3d12_provider_ || !placeholder_command_list_) { + return false; + } + + PlaceholderRefreshSlot& slot = placeholder_refresh_slots_[placeholder_refresh_slot_index_]; + if (slot.last_submission && + !placeholder_submission_tracker_.AwaitSubmissionCompletion(slot.last_submission)) { + REXLOG_ERROR( + "AC6 native graphics bootstrap failed to await placeholder refresh " + "slot {}", placeholder_refresh_slot_index_); + return false; + } + + ID3D12Resource* guest_output_resource = context.resource_uav_capable(); + if (!guest_output_resource) { + return false; + } + + if (FAILED(slot.command_allocator->Reset())) { + REXLOG_ERROR("AC6 native graphics bootstrap failed to reset a placeholder command allocator"); + return false; + } + if (FAILED(placeholder_command_list_->Reset(slot.command_allocator.Get(), nullptr))) { + REXLOG_ERROR("AC6 native graphics bootstrap failed to reset the placeholder command list"); + return false; + } + + last_present_used_raster_replay_ = false; + if (TryRecordRasterPlaceholderFrame(slot, guest_output_resource, submission)) { + context.SetIs8bpc(true); + last_present_used_raster_replay_ = true; + return SubmitPlaceholderCommandList(slot); + } + if (FAILED(placeholder_command_list_->Reset(slot.command_allocator.Get(), nullptr))) { + REXLOG_ERROR( + "AC6 native graphics bootstrap failed to reset the placeholder command list " + "for the legacy fallback path"); + return false; + } + + ID3D12Device* device = d3d12_provider_->GetDevice(); + D3D12_UNORDERED_ACCESS_VIEW_DESC uav_desc = {}; + uav_desc.Format = rex::ui::d3d12::D3D12Presenter::kGuestOutputFormat; + uav_desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2D; + uav_desc.Texture2D.MipSlice = 0; + uav_desc.Texture2D.PlaneSlice = 0; + + D3D12_CPU_DESCRIPTOR_HANDLE uav_cpu_visible = + slot.shader_visible_uav_heap->GetCPUDescriptorHandleForHeapStart(); + D3D12_GPU_DESCRIPTOR_HANDLE uav_gpu_visible = + slot.shader_visible_uav_heap->GetGPUDescriptorHandleForHeapStart(); + D3D12_CPU_DESCRIPTOR_HANDLE uav_cpu = + slot.cpu_uav_heap->GetCPUDescriptorHandleForHeapStart(); + device->CreateUnorderedAccessView(guest_output_resource, nullptr, &uav_desc, uav_cpu_visible); + device->CreateUnorderedAccessView(guest_output_resource, nullptr, &uav_desc, uav_cpu); + + ID3D12DescriptorHeap* descriptor_heaps[] = {slot.shader_visible_uav_heap.Get()}; + placeholder_command_list_->SetDescriptorHeaps(1, descriptor_heaps); + + D3D12_RESOURCE_BARRIER barrier = {}; + barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION; + barrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE; + barrier.Transition.pResource = guest_output_resource; + barrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES; + barrier.Transition.StateBefore = rex::ui::d3d12::D3D12Presenter::kGuestOutputInternalState; + barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_UNORDERED_ACCESS; + placeholder_command_list_->ResourceBarrier(1, &barrier); + + context.SetIs8bpc(true); + + const UINT width = submission.frontbuffer_width; + const UINT height = submission.frontbuffer_height; + const UINT title_band_height = std::max(1, height / 8); + const UINT status_band_height = std::max(1, height / 20); + const UINT heartbeat_width = + std::max(1, UINT((uint64_t(width) * + (((swap_count_ - 1) % kPlaceholderHeartbeatPeriod) + 1)) / + kPlaceholderHeartbeatPeriod)); + + const NativeReplayPlanSummary& replay_plan = last_replay_plan_; + const SelectedPassPreviewData& selected_pass_preview = last_selected_pass_preview_; + const uint32_t candidate_seed = + replay_plan.present_candidate_rt0 ^ (replay_plan.present_candidate_depth_stencil * 33u) ^ + (replay_plan.selected_pass_score * 2654435761u); + auto channel = [candidate_seed](uint32_t shift, float low, float high) { + float t = float((candidate_seed >> shift) & 0xFFu) / 255.0f; + return low + (high - low) * t; + }; + + const FloatColor background_color = {replay_plan.valid ? 0.04f : 0.08f, + replay_plan.valid ? 0.05f : 0.06f, + replay_plan.valid ? 0.08f : 0.10f, 1.0f}; + const FloatColor title_band_color = { + replay_plan.selected_pass_is_stable ? 0.18f + : (replay_plan.present_candidate_matches_swap_size ? 0.18f : 0.55f), + replay_plan.selected_pass_is_stable ? 0.62f + : (replay_plan.present_candidate_matches_swap_size ? 0.56f : 0.22f), + replay_plan.selected_pass_is_stable ? 0.46f + : (replay_plan.present_candidate_matches_swap_size ? 0.24f : 0.18f), 1.0f}; + const FloatColor fallback_candidate_color = {channel(0, 0.20f, 0.92f), + channel(8, 0.18f, 0.75f), + channel(16, 0.16f, 0.88f), 1.0f}; + const FloatColor resolve_color = {0.96f, 0.94f, 0.30f, 1.0f}; + const FloatColor heartbeat_color = {0.95f, 0.92f, 0.24f, 1.0f}; + const FloatColor candidate_base_color = + selected_pass_preview.summary.using_clear_fill + ? DecodeArgbColor(selected_pass_preview.summary.last_clear_color) + : fallback_candidate_color; + const FloatColor candidate_outline_color = MixColors(candidate_base_color, heartbeat_color, 0.5f); + const FloatColor stripe_color = MixColors(candidate_base_color, title_band_color, 0.4f); + + auto clear_rect = [&](const FloatColor& color, UINT left, UINT top, UINT right, UINT bottom) { + if (left >= right || top >= bottom) { + return; + } + D3D12_RECT rect = {LONG(left), LONG(top), LONG(right), LONG(bottom)}; + placeholder_command_list_->ClearUnorderedAccessViewFloat( + uav_gpu_visible, uav_cpu, guest_output_resource, color.data(), 1, &rect); + }; + + placeholder_command_list_->ClearUnorderedAccessViewFloat( + uav_gpu_visible, uav_cpu, guest_output_resource, background_color.data(), 0, nullptr); + + UINT candidate_left = 0; + UINT candidate_top = title_band_height; + UINT candidate_width = width; + UINT candidate_height = std::max(1, height - title_band_height - status_band_height); + if (replay_plan.valid && replay_plan.present_candidate_viewport_width && + replay_plan.present_candidate_viewport_height) { + candidate_left = std::min(width - 1, replay_plan.present_candidate_viewport_x); + candidate_top = std::min(height - 1, replay_plan.present_candidate_viewport_y); + candidate_width = + std::max(1, std::min(replay_plan.present_candidate_viewport_width, + width - candidate_left)); + candidate_height = + std::max(1, std::min(replay_plan.present_candidate_viewport_height, + height - candidate_top)); + } + D3D12_RECT center_block_rect = {LONG(candidate_left), LONG(candidate_top), + LONG(std::min(width, candidate_left + candidate_width)), + LONG(std::min(height, candidate_top + candidate_height))}; + placeholder_command_list_->ClearUnorderedAccessViewFloat( + uav_gpu_visible, uav_cpu, guest_output_resource, candidate_base_color.data(), 1, + ¢er_block_rect); + + const UINT candidate_right = std::min(width, candidate_left + candidate_width); + const UINT candidate_bottom = std::min(height, candidate_top + candidate_height); + + UINT sampled_clear_band_height = 0; + if (selected_pass_preview.clear_step_count && candidate_height > 2) { + sampled_clear_band_height = + std::max(1, std::min(candidate_height / 12, height / 32 + 1)); + for (uint32_t i = 0; i < selected_pass_preview.clear_step_count; ++i) { + const UINT band_top = std::min(candidate_bottom, candidate_top + sampled_clear_band_height * i); + const UINT band_bottom = + std::min(candidate_bottom, band_top + sampled_clear_band_height); + clear_rect(DecodeArgbColor(selected_pass_preview.clear_steps[i].color), candidate_left, + band_top, candidate_right, band_bottom); + } + } + + UINT resolve_band_height = 0; + if (replay_plan.valid && replay_plan.selected_pass_has_resolve) { + resolve_band_height = std::max(1, candidate_height / 10); + clear_rect(resolve_color, candidate_left, + std::min(candidate_bottom, candidate_bottom - resolve_band_height), + candidate_right, candidate_bottom); + } + + if (selected_pass_preview.summary.draw_count && candidate_width > 8 && candidate_height > 8) { + const UINT stripe_count = + std::min(12, std::max(1, 1 + (selected_pass_preview.summary.draw_count / 6))); + const UINT stripe_width = + std::max(1, candidate_width / std::max(24, stripe_count * 5)); + const UINT stripe_top = std::min(candidate_bottom, candidate_top + sampled_clear_band_height); + const UINT stripe_bottom = + candidate_bottom > resolve_band_height ? (candidate_bottom - resolve_band_height) + : candidate_bottom; + const UINT stripe_area_height = + stripe_bottom > stripe_top ? (stripe_bottom - stripe_top) : 0; + for (UINT i = 0; i < stripe_count && stripe_area_height; ++i) { + const UINT stripe_center_x = + candidate_left + ((i + 1) * candidate_width) / (stripe_count + 1); + const UINT stripe_left = stripe_center_x > stripe_width / 2 + ? stripe_center_x - stripe_width / 2 + : candidate_left; + const UINT stripe_right = std::min(candidate_right, stripe_left + stripe_width); + const UINT stripe_height = + std::max(1, stripe_area_height * (45 + ((i * 13) % 40)) / 100); + const UINT stripe_start = stripe_bottom > stripe_height ? (stripe_bottom - stripe_height) + : stripe_top; + const FloatColor lane_color = + (i & 1u) ? MixColors(stripe_color, heartbeat_color, 0.22f) + : MixColors(stripe_color, background_color, 0.10f); + clear_rect(lane_color, stripe_left, stripe_start, stripe_right, stripe_bottom); + } + } + + if (candidate_width > 2 && candidate_height > 2) { + const UINT outline_thickness = + std::max(1, std::min(4, std::min(candidate_width, candidate_height) / 96 + 1)); + const UINT bottom_outline_top = + candidate_bottom > outline_thickness ? (candidate_bottom - outline_thickness) + : candidate_top; + clear_rect(candidate_outline_color, candidate_left, candidate_top, candidate_right, + std::min(candidate_bottom, candidate_top + outline_thickness)); + clear_rect(candidate_outline_color, candidate_left, bottom_outline_top, candidate_right, + candidate_bottom); + clear_rect(candidate_outline_color, candidate_left, candidate_top, + std::min(candidate_right, candidate_left + outline_thickness), candidate_bottom); + clear_rect(candidate_outline_color, + candidate_right > outline_thickness ? (candidate_right - outline_thickness) + : candidate_left, + candidate_top, candidate_right, candidate_bottom); + } + + if (replay_plan.valid && replay_plan.pass_count) { + const UINT score_width = std::max( + 1, UINT((uint64_t(width) * std::min(replay_plan.selected_pass_score, 220u)) / + 220u)); + clear_rect(candidate_outline_color, 0, title_band_height, score_width, + std::min(height, title_band_height + status_band_height)); + } + + clear_rect(title_band_color, 0, 0, width, title_band_height); + clear_rect(heartbeat_color, 0, height - status_band_height, heartbeat_width, height); + + barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_UNORDERED_ACCESS; + barrier.Transition.StateAfter = rex::ui::d3d12::D3D12Presenter::kGuestOutputInternalState; + placeholder_command_list_->ResourceBarrier(1, &barrier); + + return SubmitPlaceholderCommandList(slot); + } + + rex::ui::d3d12::D3D12Provider* d3d12_provider_ = nullptr; + rex::ui::d3d12::D3D12Presenter* d3d12_presenter_ = nullptr; + std::mutex placeholder_refresh_mutex_; + rex::ui::d3d12::D3D12SubmissionTracker placeholder_submission_tracker_; + std::array placeholder_refresh_slots_; + Microsoft::WRL::ComPtr placeholder_command_list_; + Microsoft::WRL::ComPtr raster_preview_root_signature_; + Microsoft::WRL::ComPtr raster_preview_pipeline_; + Microsoft::WRL::ComPtr raster_preview_view_heap_; + Microsoft::WRL::ComPtr raster_preview_sampler_heap_; + uint32_t placeholder_refresh_slot_index_ = 0; + rex::system::GraphicsSwapSubmission last_swap_submission_; + NativeReplayPlanSummary last_replay_plan_{}; + SelectedPassPreviewData last_selected_pass_preview_{}; + ReplayCandidateKey last_selected_candidate_{}; + bool last_selected_candidate_valid_ = false; + uint32_t selected_candidate_streak_ = 0; + uint64_t swap_count_ = 0; + bool logged_first_swap_ = false; + bool logged_first_present_ = false; + bool logged_passthrough_swap_ = false; + bool logged_refresh_failure_ = false; + bool last_present_used_raster_replay_ = false; + bool placeholder_resources_initialized_ = false; +}; +#endif + +} // namespace + +void ConfigureGraphicsBackend(rex::RuntimeConfig& config) { + { + std::lock_guard lock(g_native_graphics_status_mutex); + g_native_graphics_status = {}; + g_native_graphics_status.bootstrap_enabled = REXCVAR_GET(ac6_native_graphics_bootstrap); + g_native_graphics_status.placeholder_present_enabled = + REXCVAR_GET(ac6_native_graphics_placeholder_present); + } +#if REX_HAS_D3D12 + if (!REXCVAR_GET(ac6_native_graphics_bootstrap)) { + return; + } + + config.graphics = std::make_unique(); +#else + (void)config; +#endif +} + +NativeGraphicsStatusSnapshot GetNativeGraphicsStatus() { + std::lock_guard lock(g_native_graphics_status_mutex); + NativeGraphicsStatusSnapshot snapshot = g_native_graphics_status; + snapshot.bootstrap_enabled = REXCVAR_GET(ac6_native_graphics_bootstrap); + snapshot.placeholder_present_enabled = REXCVAR_GET(ac6_native_graphics_placeholder_present); + return snapshot; +} + +} // namespace ac6::graphics diff --git a/src/ac6_native_graphics.h b/src/ac6_native_graphics.h new file mode 100644 index 00000000..4d578ed2 --- /dev/null +++ b/src/ac6_native_graphics.h @@ -0,0 +1,84 @@ +#pragma once + +#include + +#include +#include + +#include "d3d_state.h" + +REXCVAR_DECLARE(bool, ac6_allow_gpu_trace_stream); + +namespace ac6::graphics { + +struct SelectedPassPreviewSummary { + bool valid{false}; + uint32_t draw_count{0}; + uint32_t clear_count{0}; + uint32_t resolve_count{0}; + uint32_t sampled_clear_color_count{0}; + uint32_t sampled_clear_rect_count{0}; + uint32_t first_clear_color{0}; + uint32_t last_clear_color{0}; + bool using_clear_fill{false}; + bool using_raster_replay{false}; +}; + +struct NativeReplayPlanSummary { + bool valid{false}; + uint64_t frame_index{0}; + uint32_t pass_count{0}; + uint32_t swap_size_match_pass_count{0}; + uint32_t draw_event_count{0}; + uint32_t clear_event_count{0}; + uint32_t resolve_event_count{0}; + uint32_t largest_pass_draw_count{0}; + uint32_t first_pass_draw_count{0}; + uint32_t last_pass_draw_count{0}; + uint32_t selected_pass_index{0}; + uint32_t selected_pass_score{0}; + uint32_t selected_pass_start_sequence{0}; + uint32_t selected_pass_end_sequence{0}; + uint32_t selected_pass_draw_count{0}; + uint32_t selected_pass_clear_count{0}; + uint32_t selected_pass_resolve_count{0}; + uint32_t selected_pass_streak{0}; + bool selected_pass_is_last{false}; + bool selected_pass_has_resolve{false}; + bool selected_pass_is_stable{false}; + uint32_t present_candidate_rt0{0}; + uint32_t present_candidate_depth_stencil{0}; + uint32_t present_candidate_viewport_x{0}; + uint32_t present_candidate_viewport_y{0}; + uint32_t present_candidate_viewport_width{0}; + uint32_t present_candidate_viewport_height{0}; + bool present_candidate_matches_swap_size{false}; +}; + +struct NativeGraphicsStatusSnapshot { + bool bootstrap_enabled{false}; + bool backend_active{false}; + bool placeholder_present_enabled{false}; + bool provider_ready{false}; + bool presenter_ready{false}; + bool placeholder_resources_initialized{false}; + bool last_swap_intercepted{false}; + bool last_swap_fell_back{false}; + uint64_t total_swap_count{0}; + uint64_t intercepted_swap_count{0}; + uint64_t fallback_swap_count{0}; + uint32_t last_frontbuffer_virtual_address{0}; + uint32_t last_frontbuffer_physical_address{0}; + uint32_t last_frontbuffer_width{0}; + uint32_t last_frontbuffer_height{0}; + uint32_t last_texture_format{0}; + uint32_t last_color_space{0}; + d3d::FrameCaptureSummary capture_summary{}; + NativeReplayPlanSummary replay_plan{}; + SelectedPassPreviewSummary selected_pass_preview{}; +}; + +void ConfigureGraphicsBackend(rex::RuntimeConfig& config); +NativeGraphicsStatusSnapshot GetNativeGraphicsStatus(); + +} // namespace ac6::graphics diff --git a/src/ac6_native_graphics_overlay.cpp b/src/ac6_native_graphics_overlay.cpp new file mode 100644 index 00000000..7ba93546 --- /dev/null +++ b/src/ac6_native_graphics_overlay.cpp @@ -0,0 +1,206 @@ +#include "ac6_native_graphics_overlay.h" + +#include +#include + +#include + +#include "ac6_native_graphics.h" +#include "d3d_hooks.h" +#include "render_hooks.h" + +namespace ac6::graphics { +namespace { + +const char* DescribeNativeMode(const NativeGraphicsStatusSnapshot& status) { + if (!status.bootstrap_enabled) { + return "Disabled"; + } + if (!status.backend_active) { + return "Configured, backend inactive"; + } + if (status.placeholder_present_enabled) { + return "Diagnostic takeover"; + } + return "Observe only"; +} + +const char* DescribeLastSwapOutcome(const NativeGraphicsStatusSnapshot& status) { + if (!status.total_swap_count) { + return "No direct swaps yet"; + } + if (status.last_swap_intercepted) { + return "Presented through native diagnostic path"; + } + if (status.last_swap_fell_back) { + return "Handled by legacy PM4 presentation"; + } + return "Observed"; +} + +} // namespace + +NativeGraphicsStatusDialog::NativeGraphicsStatusDialog(rex::ui::ImGuiDrawer* imgui_drawer) + : ImGuiDialog(imgui_drawer) { + rex::ui::RegisterBind("bind_ac6_native_graphics_overlay", "F4", + "Toggle AC6 native graphics status overlay", + [this] { ToggleVisible(); }); +} + +NativeGraphicsStatusDialog::~NativeGraphicsStatusDialog() { + rex::ui::UnregisterBind("bind_ac6_native_graphics_overlay"); +} + +void NativeGraphicsStatusDialog::OnDraw(ImGuiIO& io) { + if (!visible_) { + return; + } + + NativeGraphicsStatusSnapshot native_status = GetNativeGraphicsStatus(); + ac6::FrameStats frame_stats = ac6::GetFrameStats(); + ac6::d3d::DrawStatsSnapshot draw_stats = ac6::d3d::GetDrawStats(); + + ImGui::SetNextWindowPos(ImVec2(10, 84), ImGuiCond_FirstUseEver); + ImGui::SetNextWindowSize(ImVec2(430, 486), ImGuiCond_FirstUseEver); + ImGui::SetNextWindowBgAlpha(0.72f); + if (!ImGui::Begin("AC6 Native Graphics##status", &visible_, ImGuiWindowFlags_NoCollapse)) { + ImGui::End(); + return; + } + + ImGui::Text("Mode: %s", DescribeNativeMode(native_status)); + ImGui::Text("Backend: %s | Provider: %s | Presenter: %s", + native_status.backend_active ? "active" : "inactive", + native_status.provider_ready ? "ready" : "missing", + native_status.presenter_ready ? "ready" : "missing"); + ImGui::Text("Placeholder resources: %s", + native_status.placeholder_resources_initialized ? "initialized" : "inactive"); + ImGui::Text("GPU trace stream: %s | allow=%s", REXCVAR_GET(trace_gpu_stream) ? "on" : "off", + REXCVAR_GET(ac6_allow_gpu_trace_stream) ? "true" : "false"); + + ImGui::Separator(); + ImGui::Text("Direct swaps: %llu total | %llu native | %llu legacy", + static_cast(native_status.total_swap_count), + static_cast(native_status.intercepted_swap_count), + static_cast(native_status.fallback_swap_count)); + ImGui::Text("Last outcome: %s", DescribeLastSwapOutcome(native_status)); + ImGui::Text("Last frontbuffer: %ux%u fmt %08X cs %u", native_status.last_frontbuffer_width, + native_status.last_frontbuffer_height, native_status.last_texture_format, + native_status.last_color_space); + ImGui::Text("Last FB VA/PA: %08X / %08X", native_status.last_frontbuffer_virtual_address, + native_status.last_frontbuffer_physical_address); + + ImGui::Separator(); + ImGui::Text("Capture: %s frame=%llu draws=%u clears=%u resolves=%u", + native_status.capture_summary.capture_enabled ? "enabled" : "disabled", + static_cast(native_status.capture_summary.frame_index), + native_status.capture_summary.draw_count, native_status.capture_summary.clear_count, + native_status.capture_summary.resolve_count); + if (native_status.capture_summary.record_signature_valid) { + ImGui::Text("Record signature: %016llX", + static_cast(native_status.capture_summary.record_signature)); + ImGui::Text("Recorded draw mix: indexed=%u shared=%u primitive=%u", + native_status.capture_summary.indexed_draw_count, + native_status.capture_summary.indexed_shared_draw_count, + native_status.capture_summary.primitive_draw_count); + ImGui::Text("Recorded RT0s: unique=%u switches=%u", + native_status.capture_summary.unique_rt0_count, + native_status.capture_summary.rt0_switch_count); + ImGui::Text("Recorded RT0 first/last: %08X / %08X", + native_status.capture_summary.first_draw_render_target_0, + native_status.capture_summary.last_draw_render_target_0); + } else { + ImGui::TextUnformatted("Record signature: unavailable (enable ac6_render_capture)"); + } + ImGui::Text("Frame-end RT0/DS: %08X / %08X", + native_status.capture_summary.frame_end_render_target_0, + native_status.capture_summary.frame_end_depth_stencil); + ImGui::Text("Frame-end viewport: %ux%u | RTs=%u tex=%u fetch=%u", + native_status.capture_summary.frame_end_viewport_width, + native_status.capture_summary.frame_end_viewport_height, + native_status.capture_summary.frame_end_render_target_count, + native_status.capture_summary.frame_end_texture_count, + native_status.capture_summary.frame_end_texture_fetch_count); + ImGui::Text("Frame-end streams=%u samplers=%u | last draw prim=%u count=%u flags=%u", + native_status.capture_summary.frame_end_stream_count, + native_status.capture_summary.frame_end_sampler_count, + native_status.capture_summary.last_draw_primitive_type, + native_status.capture_summary.last_draw_count, + native_status.capture_summary.last_draw_flags); + + ImGui::Separator(); + if (native_status.replay_plan.valid) { + ImGui::Text("Replay plan: frame=%llu passes=%u draws=%u clears=%u resolves=%u", + static_cast(native_status.replay_plan.frame_index), + native_status.replay_plan.pass_count, + native_status.replay_plan.draw_event_count, + native_status.replay_plan.clear_event_count, + native_status.replay_plan.resolve_event_count); + ImGui::Text("Swap-size matching passes: %u | selected=%u score=%u", + native_status.replay_plan.swap_size_match_pass_count, + native_status.replay_plan.selected_pass_index, + native_status.replay_plan.selected_pass_score); + ImGui::Text("Pass draw counts: first=%u last=%u largest=%u", + native_status.replay_plan.first_pass_draw_count, + native_status.replay_plan.last_pass_draw_count, + native_status.replay_plan.largest_pass_draw_count); + ImGui::Text("Selected pass seq: %u..%u | draws=%u clears=%u resolves=%u", + native_status.replay_plan.selected_pass_start_sequence, + native_status.replay_plan.selected_pass_end_sequence, + native_status.replay_plan.selected_pass_draw_count, + native_status.replay_plan.selected_pass_clear_count, + native_status.replay_plan.selected_pass_resolve_count); + ImGui::Text("Selected pass flags: last=%s resolve=%s stable=%s streak=%u", + native_status.replay_plan.selected_pass_is_last ? "yes" : "no", + native_status.replay_plan.selected_pass_has_resolve ? "yes" : "no", + native_status.replay_plan.selected_pass_is_stable ? "yes" : "no", + native_status.replay_plan.selected_pass_streak); + ImGui::Text("Present candidate RT0/DS: %08X / %08X", + native_status.replay_plan.present_candidate_rt0, + native_status.replay_plan.present_candidate_depth_stencil); + ImGui::Text("Present candidate viewport: %u,%u %ux%u | swap match=%s", + native_status.replay_plan.present_candidate_viewport_x, + native_status.replay_plan.present_candidate_viewport_y, + native_status.replay_plan.present_candidate_viewport_width, + native_status.replay_plan.present_candidate_viewport_height, + native_status.replay_plan.present_candidate_matches_swap_size ? "yes" : "no"); + if (native_status.selected_pass_preview.valid) { + ImGui::Text("Selected-pass preview: source=%s sampled clears=%u captured rects=%u", + native_status.selected_pass_preview.using_clear_fill + ? "captured clear colors" + : "fallback candidate tint", + native_status.selected_pass_preview.sampled_clear_color_count, + native_status.selected_pass_preview.sampled_clear_rect_count); + ImGui::Text("Preview events: draws=%u clears=%u resolves=%u", + native_status.selected_pass_preview.draw_count, + native_status.selected_pass_preview.clear_count, + native_status.selected_pass_preview.resolve_count); + ImGui::Text("Preview renderer: %s", + native_status.selected_pass_preview.using_raster_replay + ? "offscreen raster replay" + : "legacy diagnostic fill"); + if (native_status.selected_pass_preview.clear_count) { + ImGui::Text("Preview clear colors: first=%08X last=%08X", + native_status.selected_pass_preview.first_clear_color, + native_status.selected_pass_preview.last_clear_color); + } + } + } else { + ImGui::TextUnformatted("Replay plan: unavailable (no captured frame events yet)"); + } + + ImGui::Separator(); + ImGui::Text("Guest frame: %.1f FPS (%.2f ms) frame=%llu", frame_stats.fps, + frame_stats.frame_time_ms, static_cast(frame_stats.frame_count)); + ImGui::Text("D3D stats: draws=%u clears=%u resolves=%u", draw_stats.draw_calls, + draw_stats.clear_calls, draw_stats.resolve_calls); + ImGui::Text("Indexed=%u shared=%u primitive=%u", draw_stats.draw_calls_indexed, + draw_stats.draw_calls_indexed_shared, draw_stats.draw_calls_primitive); + + ImGui::Separator(); + ImGui::TextUnformatted("F4 toggles this panel. F3 toggles the base debug overlay."); + + ImGui::End(); +} + +} // namespace ac6::graphics diff --git a/src/ac6_native_graphics_overlay.h b/src/ac6_native_graphics_overlay.h new file mode 100644 index 00000000..eba57a8d --- /dev/null +++ b/src/ac6_native_graphics_overlay.h @@ -0,0 +1,28 @@ +#pragma once + +#include + +#include + +namespace rex::ui { +class ImGuiDrawer; +} + +namespace ac6::graphics { + +class NativeGraphicsStatusDialog final : public rex::ui::ImGuiDialog { + public: + explicit NativeGraphicsStatusDialog(rex::ui::ImGuiDrawer* imgui_drawer); + ~NativeGraphicsStatusDialog(); + + void ToggleVisible() { visible_ = !visible_; } + bool IsVisible() const { return visible_; } + + protected: + void OnDraw(ImGuiIO& io) override; + + private: + bool visible_ = false; +}; + +} // namespace ac6::graphics diff --git a/src/ac6recomp_app.h b/src/ac6recomp_app.h index 667c254e..d82565a6 100644 --- a/src/ac6recomp_app.h +++ b/src/ac6recomp_app.h @@ -1,13 +1,20 @@ #pragma once +#include + #include #include +#include #include #include +#include +#include "ac6_native_graphics.h" +#include "ac6_native_graphics_overlay.h" #include "render_hooks.h" REXCVAR_DECLARE(bool, vfetch_index_rounding_bias); +REXCVAR_DECLARE(bool, guest_vblank_sync_to_refresh); class Ac6recompApp : public rex::ReXApp { public: @@ -22,8 +29,19 @@ class Ac6recompApp : public rex::ReXApp { protected: void OnPreSetup(rex::RuntimeConfig& config) override { REXCVAR_SET(vfetch_index_rounding_bias, true); - REXCVAR_SET(ac6_unlock_fps, true); - REXCVAR_SET(vsync, false); + if (REXCVAR_GET(trace_gpu_stream) && !REXCVAR_GET(ac6_allow_gpu_trace_stream)) { + gpu_trace_stream_blocked_ = true; + REXLOG_WARN( + "AC6 safety guard disabled trace_gpu_stream to avoid unstable GPU " + "trace compression during native graphics experiments. Set " + "ac6_allow_gpu_trace_stream=true to re-enable it explicitly."); + REXCVAR_SET(trace_gpu_stream, false); + } + ac6::graphics::ConfigureGraphicsBackend(config); + if (REXCVAR_GET(ac6_unlock_fps)) { + REXCVAR_SET(vsync, false); + REXCVAR_SET(guest_vblank_sync_to_refresh, false); + } } void OnCreateDialogs(rex::ui::ImGuiDrawer* drawer) override { @@ -31,6 +49,25 @@ class Ac6recompApp : public rex::ReXApp { auto gs = ac6::GetFrameStats(); return rex::ui::FrameStats{gs.frame_time_ms, gs.fps, gs.frame_count}; }); + + native_graphics_status_dialog_ = + std::make_unique(drawer); + + if (window()) { + std::string title = std::string(GetName()) + " " + REXGLUE_BUILD_TITLE; + auto native_status = ac6::graphics::GetNativeGraphicsStatus(); + if (native_status.bootstrap_enabled) { + title += native_status.placeholder_present_enabled ? " | native swap takeover" + : " | native swap observe"; + } + if (gpu_trace_stream_blocked_) { + title += " | trace stream blocked"; + } + window()->SetTitle(title); + } } + private: + bool gpu_trace_stream_blocked_ = false; + std::unique_ptr native_graphics_status_dialog_; }; diff --git a/src/d3d_hooks.cpp b/src/d3d_hooks.cpp index 6d02663e..c31788ee 100644 --- a/src/d3d_hooks.cpp +++ b/src/d3d_hooks.cpp @@ -1,11 +1,16 @@ #include "d3d_hooks.h" +#include +#include + #include #include #include REXCVAR_DEFINE_BOOL(ac6_d3d_trace, false, "AC6/Render", "Log every D3D device state change and draw call"); +REXCVAR_DEFINE_BOOL(ac6_render_capture, false, "AC6/Render", + "Capture per-frame draw, clear, and resolve records for the native renderer"); namespace { const rex::LogCategoryId kLogGPU = rex::log::GPU; @@ -13,10 +18,236 @@ const rex::LogCategoryId kLogGPU = rex::log::GPU; namespace { +std::shared_mutex g_shadow_mutex; ac6::d3d::ShadowState g_shadow{}; + ac6::d3d::DrawStats g_live_stats{}; + +std::shared_mutex g_snapshot_mutex; ac6::d3d::DrawStatsSnapshot g_snapshot{}; +std::shared_mutex g_capture_mutex; +ac6::d3d::FrameCaptureSnapshot g_capture_snapshot{}; +ac6::d3d::FrameCaptureSummary g_capture_summary{}; +uint64_t g_capture_live_frame_index = 1; +uint32_t g_capture_live_sequence = 0; +std::vector g_live_draws; +std::vector g_live_clears; +std::vector g_live_resolves; + +template +uint32_t CountNonZero(const std::array& values) { + uint32_t count = 0; + for (const T& value : values) { + if (value) { + ++count; + } + } + return count; +} + +uint32_t CountNonZeroStreams(const std::array& streams) { + uint32_t count = 0; + for (const auto& stream : streams) { + if (stream.buffer) { + ++count; + } + } + return count; +} + +uint32_t CountNonZeroSamplers( + const std::array& samplers) { + uint32_t count = 0; + for (const auto& sampler : samplers) { + if (sampler.mag_filter || sampler.min_filter || sampler.mip_filter || sampler.mip_level || + sampler.border_color) { + ++count; + } + } + return count; +} + +void HashU32(uint64_t& hash, uint32_t value) { + constexpr uint64_t kFnvPrime = 1099511628211ull; + hash ^= value; + hash *= kFnvPrime; +} + +void HashDrawRecord(uint64_t& hash, const ac6::d3d::DrawCallRecord& draw) { + HashU32(hash, static_cast(draw.kind)); + HashU32(hash, draw.primitive_type); + HashU32(hash, draw.start); + HashU32(hash, draw.count); + HashU32(hash, draw.flags); + HashU32(hash, draw.shadow_state.render_targets[0]); + HashU32(hash, draw.shadow_state.depth_stencil); + HashU32(hash, draw.shadow_state.viewport.width); + HashU32(hash, draw.shadow_state.viewport.height); +} + +ac6::d3d::FrameCaptureSummary MakeFrameCaptureSummary( + const ac6::d3d::FrameCaptureSnapshot& frame_capture) { + ac6::d3d::FrameCaptureSummary summary; + summary.capture_enabled = REXCVAR_GET(ac6_render_capture); + summary.frame_index = frame_capture.frame_index; + summary.draw_count = static_cast(frame_capture.draws.size()); + summary.clear_count = static_cast(frame_capture.clears.size()); + summary.resolve_count = static_cast(frame_capture.resolves.size()); + summary.frame_end_render_target_count = + CountNonZero(frame_capture.frame_end_shadow.render_targets); + summary.frame_end_texture_count = CountNonZero(frame_capture.frame_end_shadow.textures); + summary.frame_end_stream_count = CountNonZeroStreams(frame_capture.frame_end_shadow.streams); + summary.frame_end_sampler_count = CountNonZeroSamplers(frame_capture.frame_end_shadow.samplers); + summary.frame_end_texture_fetch_count = + CountNonZero(frame_capture.frame_end_shadow.texture_fetch_ptrs); + summary.frame_end_render_target_0 = frame_capture.frame_end_shadow.render_targets[0]; + summary.frame_end_depth_stencil = frame_capture.frame_end_shadow.depth_stencil; + summary.frame_end_viewport_width = frame_capture.frame_end_shadow.viewport.width; + summary.frame_end_viewport_height = frame_capture.frame_end_shadow.viewport.height; + if (!frame_capture.draws.empty()) { + summary.first_draw_render_target_0 = + frame_capture.draws.front().shadow_state.render_targets[0]; + summary.last_draw_render_target_0 = + frame_capture.draws.back().shadow_state.render_targets[0]; + const auto& last_draw = frame_capture.draws.back(); + summary.last_draw_primitive_type = last_draw.primitive_type; + summary.last_draw_count = last_draw.count; + summary.last_draw_flags = last_draw.flags; + } + if (summary.capture_enabled && !frame_capture.draws.empty()) { + constexpr uint64_t kFnvOffsetBasis = 1469598103934665603ull; + uint64_t signature = kFnvOffsetBasis; + std::vector unique_rt0s; + uint32_t previous_rt0 = frame_capture.draws.front().shadow_state.render_targets[0]; + for (const auto& draw : frame_capture.draws) { + switch (draw.kind) { + case ac6::d3d::DrawCallKind::kIndexed: + ++summary.indexed_draw_count; + break; + case ac6::d3d::DrawCallKind::kIndexedShared: + ++summary.indexed_shared_draw_count; + break; + case ac6::d3d::DrawCallKind::kPrimitive: + ++summary.primitive_draw_count; + break; + } + uint32_t rt0 = draw.shadow_state.render_targets[0]; + if (std::find(unique_rt0s.begin(), unique_rt0s.end(), rt0) == unique_rt0s.end()) { + unique_rt0s.push_back(rt0); + } + if (rt0 != previous_rt0) { + ++summary.rt0_switch_count; + previous_rt0 = rt0; + } + HashDrawRecord(signature, draw); + } + summary.unique_rt0_count = static_cast(unique_rt0s.size()); + summary.record_signature = signature; + summary.record_signature_valid = true; + } + return summary; +} + +void RememberDevice(uint32_t device) { + std::unique_lock lock(g_shadow_mutex); + g_shadow.device = device; +} + +ac6::d3d::ShadowState SnapshotShadowState(uint32_t device) { + std::shared_lock lock(g_shadow_mutex); + ac6::d3d::ShadowState shadow = g_shadow; + if (device != 0) { + shadow.device = device; + } + return shadow; +} + +ac6::d3d::DrawStatsSnapshot SnapshotDrawStats() { + return ac6::d3d::DrawStatsSnapshot{ + g_live_stats.draw_calls.load(std::memory_order_relaxed), + g_live_stats.draw_calls_indexed.load(std::memory_order_relaxed), + g_live_stats.draw_calls_indexed_shared.load(std::memory_order_relaxed), + g_live_stats.draw_calls_primitive.load(std::memory_order_relaxed), + g_live_stats.total_indices.load(std::memory_order_relaxed), + g_live_stats.total_vertices.load(std::memory_order_relaxed), + g_live_stats.set_texture_calls.load(std::memory_order_relaxed), + g_live_stats.set_render_target_calls.load(std::memory_order_relaxed), + g_live_stats.set_depth_stencil_calls.load(std::memory_order_relaxed), + g_live_stats.set_vertex_decl_calls.load(std::memory_order_relaxed), + g_live_stats.set_index_buffer_calls.load(std::memory_order_relaxed), + g_live_stats.set_stream_source_calls.load(std::memory_order_relaxed), + g_live_stats.set_viewport_calls.load(std::memory_order_relaxed), + g_live_stats.set_sampler_state_calls.load(std::memory_order_relaxed), + g_live_stats.set_texture_fetch_calls.load(std::memory_order_relaxed), + g_live_stats.clear_calls.load(std::memory_order_relaxed), + g_live_stats.resolve_calls.load(std::memory_order_relaxed), + }; +} + +void CaptureDrawCall(ac6::d3d::DrawCallKind kind, uint32_t device, uint32_t primitive_type, + uint32_t start, uint32_t count, uint32_t flags) { + if (!REXCVAR_GET(ac6_render_capture)) { + return; + } + + ac6::d3d::DrawCallRecord record; + record.kind = kind; + record.primitive_type = primitive_type; + record.start = start; + record.count = count; + record.flags = flags; + record.shadow_state = SnapshotShadowState(device); + + std::unique_lock lock(g_capture_mutex); + record.sequence = ++g_capture_live_sequence; + g_live_draws.push_back(std::move(record)); +} + +void CaptureClear(uint8_t* base, uint32_t device, uint32_t rect_count, uint32_t rects_ptr, + uint32_t flags, uint32_t color, uint32_t stencil, float depth) { + if (!REXCVAR_GET(ac6_render_capture)) { + return; + } + + ac6::d3d::ClearRecord record; + record.rect_count = rect_count; + record.flags = flags; + record.color = color; + record.stencil = stencil; + record.depth = depth; + record.shadow_state = SnapshotShadowState(device); + if (rects_ptr && rect_count) { + const uint32_t captured_rect_count = + std::min(rect_count, ac6::d3d::kMaxClearRectsPerRecord); + record.captured_rect_count = captured_rect_count; + for (uint32_t i = 0; i < captured_rect_count; ++i) { + const uint32_t rect_ptr = rects_ptr + i * 16; + record.rects[i].left = PPC_LOAD_U32(rect_ptr + 0); + record.rects[i].top = PPC_LOAD_U32(rect_ptr + 4); + record.rects[i].right = PPC_LOAD_U32(rect_ptr + 8); + record.rects[i].bottom = PPC_LOAD_U32(rect_ptr + 12); + } + } + + std::unique_lock lock(g_capture_mutex); + record.sequence = ++g_capture_live_sequence; + g_live_clears.push_back(std::move(record)); +} + +void CaptureResolve(uint32_t device) { + if (!REXCVAR_GET(ac6_render_capture)) { + return; + } + + ac6::d3d::ResolveRecord record; + record.shadow_state = SnapshotShadowState(device); + + std::unique_lock lock(g_capture_mutex); + record.sequence = ++g_capture_live_sequence; + g_live_resolves.push_back(std::move(record)); +} + } // namespace PPC_EXTERN_FUNC(__imp__rex_sub_821DEF18); // DrawIndexedVertices @@ -44,10 +275,13 @@ PPC_FUNC_IMPL(rex_sub_821DEF18) { PPC_FUNC_PROLOGUE(); uint32_t index_count = ctx.r6.u32; + RememberDevice(ctx.r3.u32); g_live_stats.draw_calls.fetch_add(1, std::memory_order_relaxed); g_live_stats.draw_calls_indexed.fetch_add(1, std::memory_order_relaxed); g_live_stats.total_indices.fetch_add(index_count, std::memory_order_relaxed); + CaptureDrawCall(ac6::d3d::DrawCallKind::kIndexed, ctx.r3.u32, ctx.r4.u32, ctx.r5.u32, + index_count, 0); if (REXCVAR_GET(ac6_d3d_trace)) { REXLOG_CAT_TRACE(kLogGPU, @@ -63,10 +297,13 @@ PPC_FUNC_IMPL(rex_sub_821DF300) { PPC_FUNC_PROLOGUE(); uint32_t index_count = ctx.r7.u32; + RememberDevice(ctx.r3.u32); g_live_stats.draw_calls.fetch_add(1, std::memory_order_relaxed); g_live_stats.draw_calls_indexed_shared.fetch_add(1, std::memory_order_relaxed); g_live_stats.total_indices.fetch_add(index_count, std::memory_order_relaxed); + CaptureDrawCall(ac6::d3d::DrawCallKind::kIndexedShared, ctx.r3.u32, ctx.r4.u32, ctx.r6.u32, + index_count, ctx.r5.u32); if (REXCVAR_GET(ac6_d3d_trace)) { REXLOG_CAT_TRACE(kLogGPU, @@ -83,8 +320,10 @@ PPC_FUNC_IMPL(rex_sub_821DD0A8) { uint32_t slot = ctx.r4.u32; uint32_t texture_ptr = ctx.r5.u32; + RememberDevice(ctx.r3.u32); if (slot < ac6::d3d::kMaxTextures) { + std::unique_lock lock(g_shadow_mutex); g_shadow.textures[slot] = texture_ptr; } g_live_stats.set_texture_calls.fetch_add(1, std::memory_order_relaxed); @@ -104,8 +343,10 @@ PPC_FUNC_IMPL(rex_sub_821D95C8) { uint32_t index = ctx.r4.u32; uint32_t surface = ctx.r5.u32; + RememberDevice(ctx.r3.u32); if (index < ac6::d3d::kMaxRenderTargets) { + std::unique_lock lock(g_shadow_mutex); g_shadow.render_targets[index] = surface; } g_live_stats.set_render_target_calls.fetch_add(1, std::memory_order_relaxed); @@ -124,7 +365,11 @@ PPC_FUNC_IMPL(rex_sub_821D9D38) { PPC_FUNC_PROLOGUE(); uint32_t surface = ctx.r4.u32; - g_shadow.depth_stencil = surface; + RememberDevice(ctx.r3.u32); + { + std::unique_lock lock(g_shadow_mutex); + g_shadow.depth_stencil = surface; + } g_live_stats.set_depth_stencil_calls.fetch_add(1, std::memory_order_relaxed); if (REXCVAR_GET(ac6_d3d_trace)) { @@ -140,7 +385,11 @@ PPC_FUNC_IMPL(rex_sub_821DE7D0) { PPC_FUNC_PROLOGUE(); uint32_t decl = ctx.r4.u32; - g_shadow.vertex_declaration = decl; + RememberDevice(ctx.r3.u32); + { + std::unique_lock lock(g_shadow_mutex); + g_shadow.vertex_declaration = decl; + } g_live_stats.set_vertex_decl_calls.fetch_add(1, std::memory_order_relaxed); if (REXCVAR_GET(ac6_d3d_trace)) { @@ -156,7 +405,11 @@ PPC_FUNC_IMPL(rex_sub_821DD1C8) { PPC_FUNC_PROLOGUE(); uint32_t buffer = ctx.r4.u32; - g_shadow.index_buffer = buffer; + RememberDevice(ctx.r3.u32); + { + std::unique_lock lock(g_shadow_mutex); + g_shadow.index_buffer = buffer; + } g_live_stats.set_index_buffer_calls.fetch_add(1, std::memory_order_relaxed); if (REXCVAR_GET(ac6_d3d_trace)) { @@ -171,10 +424,14 @@ PPC_FUNC_IMPL(rex_sub_821DD1C8) { PPC_FUNC_IMPL(rex_sub_821DA698) { PPC_FUNC_PROLOGUE(); - g_shadow.viewport.x = ctx.r4.u32; - g_shadow.viewport.y = ctx.r5.u32; - g_shadow.viewport.width = ctx.r6.u32; - g_shadow.viewport.height = ctx.r7.u32; + RememberDevice(ctx.r3.u32); + { + std::unique_lock lock(g_shadow_mutex); + g_shadow.viewport.x = ctx.r4.u32; + g_shadow.viewport.y = ctx.r5.u32; + g_shadow.viewport.width = ctx.r6.u32; + g_shadow.viewport.height = ctx.r7.u32; + } g_live_stats.set_viewport_calls.fetch_add(1, std::memory_order_relaxed); if (REXCVAR_GET(ac6_d3d_trace)) { @@ -191,7 +448,9 @@ PPC_FUNC_IMPL(rex_sub_821DA698) { PPC_FUNC_IMPL(rex_sub_821E2BB8) { PPC_FUNC_PROLOGUE(); + RememberDevice(ctx.r3.u32); g_live_stats.resolve_calls.fetch_add(1, std::memory_order_relaxed); + CaptureResolve(ctx.r3.u32); if (REXCVAR_GET(ac6_d3d_trace)) { REXLOG_CAT_TRACE(kLogGPU, "Resolve"); @@ -207,10 +466,13 @@ PPC_FUNC_IMPL(rex_sub_821DEA48) { uint32_t prim_type = ctx.r4.u32; uint32_t vertex_count = ctx.r5.u32; + RememberDevice(ctx.r3.u32); g_live_stats.draw_calls.fetch_add(1, std::memory_order_relaxed); g_live_stats.draw_calls_primitive.fetch_add(1, std::memory_order_relaxed); g_live_stats.total_vertices.fetch_add(vertex_count, std::memory_order_relaxed); + CaptureDrawCall(ac6::d3d::DrawCallKind::kPrimitive, ctx.r3.u32, prim_type, 0, vertex_count, + 0); if (REXCVAR_GET(ac6_d3d_trace)) { REXLOG_CAT_TRACE(kLogGPU, @@ -230,8 +492,10 @@ PPC_FUNC_IMPL(rex_sub_821DC538) { uint32_t buffer = ctx.r5.u32; uint32_t offset = ctx.r6.u32; uint32_t stride = ctx.r7.u32; + RememberDevice(ctx.r3.u32); if (stream < ac6::d3d::kMaxStreams) { + std::unique_lock lock(g_shadow_mutex); g_shadow.streams[stream].buffer = buffer; g_shadow.streams[stream].offset = offset; g_shadow.streams[stream].stride = stride; @@ -254,8 +518,10 @@ PPC_FUNC_IMPL(rex_sub_821DC6C8) { uint32_t sampler = ctx.r4.u32; uint32_t value = ctx.r5.u32; + RememberDevice(ctx.r3.u32); if (sampler < ac6::d3d::kMaxSamplers) { + std::unique_lock lock(g_shadow_mutex); g_shadow.samplers[sampler].mag_filter = value; } g_live_stats.set_sampler_state_calls.fetch_add(1, std::memory_order_relaxed); @@ -276,8 +542,10 @@ PPC_FUNC_IMPL(rex_sub_821DCB88) { uint32_t sampler = ctx.r4.u32; uint32_t value = ctx.r5.u32; + RememberDevice(ctx.r3.u32); if (sampler < ac6::d3d::kMaxSamplers) { + std::unique_lock lock(g_shadow_mutex); g_shadow.samplers[sampler].min_filter = value; } g_live_stats.set_sampler_state_calls.fetch_add(1, std::memory_order_relaxed); @@ -298,8 +566,10 @@ PPC_FUNC_IMPL(rex_sub_821DCA68) { uint32_t sampler = ctx.r4.u32; uint32_t value = ctx.r5.u32; + RememberDevice(ctx.r3.u32); if (sampler < ac6::d3d::kMaxSamplers) { + std::unique_lock lock(g_shadow_mutex); g_shadow.samplers[sampler].mip_filter = value; } g_live_stats.set_sampler_state_calls.fetch_add(1, std::memory_order_relaxed); @@ -320,8 +590,10 @@ PPC_FUNC_IMPL(rex_sub_821DC9C0) { uint32_t sampler = ctx.r4.u32; uint32_t value = ctx.r5.u32; + RememberDevice(ctx.r3.u32); if (sampler < ac6::d3d::kMaxSamplers) { + std::unique_lock lock(g_shadow_mutex); g_shadow.samplers[sampler].border_color = value; } g_live_stats.set_sampler_state_calls.fetch_add(1, std::memory_order_relaxed); @@ -342,8 +614,10 @@ PPC_FUNC_IMPL(rex_sub_821DCB08) { uint32_t sampler = ctx.r4.u32; uint32_t value = ctx.r5.u32; + RememberDevice(ctx.r3.u32); if (sampler < ac6::d3d::kMaxSamplers) { + std::unique_lock lock(g_shadow_mutex); g_shadow.samplers[sampler].mip_level = value; } g_live_stats.set_sampler_state_calls.fetch_add(1, std::memory_order_relaxed); @@ -363,7 +637,11 @@ PPC_FUNC_IMPL(rex_sub_821DBAF8) { PPC_FUNC_PROLOGUE(); uint32_t flags = ctx.r4.u32; - g_shadow.shader_gpr_alloc = flags; + RememberDevice(ctx.r3.u32); + { + std::unique_lock lock(g_shadow_mutex); + g_shadow.shader_gpr_alloc = flags; + } if (REXCVAR_GET(ac6_d3d_trace)) { REXLOG_CAT_TRACE(kLogGPU, @@ -378,7 +656,10 @@ PPC_FUNC_IMPL(rex_sub_821DBAF8) { PPC_FUNC_IMPL(rex_sub_821E2380) { PPC_FUNC_PROLOGUE(); + RememberDevice(ctx.r3.u32); g_live_stats.clear_calls.fetch_add(1, std::memory_order_relaxed); + CaptureClear(base, ctx.r3.u32, ctx.r4.u32, ctx.r5.u32, ctx.r6.u32, ctx.r7.u32, ctx.r8.u32, + static_cast(ctx.f1.f64)); if (REXCVAR_GET(ac6_d3d_trace)) { REXLOG_CAT_TRACE(kLogGPU, @@ -396,8 +677,10 @@ PPC_FUNC_IMPL(rex_sub_821E10C8) { uint32_t reg = ctx.r4.u32; uint32_t texture = ctx.r5.u32; + RememberDevice(ctx.r3.u32); if (reg < ac6::d3d::kMaxFetchConstants) { + std::unique_lock lock(g_shadow_mutex); g_shadow.texture_fetch_ptrs[reg] = texture; } g_live_stats.set_texture_fetch_calls.fetch_add(1, std::memory_order_relaxed); @@ -414,32 +697,45 @@ PPC_FUNC_IMPL(rex_sub_821E10C8) { namespace ac6::d3d { void OnFrameBoundary() { - g_snapshot.draw_calls = g_live_stats.draw_calls.load(std::memory_order_relaxed); - g_snapshot.draw_calls_indexed = g_live_stats.draw_calls_indexed.load(std::memory_order_relaxed); - g_snapshot.draw_calls_indexed_shared = g_live_stats.draw_calls_indexed_shared.load(std::memory_order_relaxed); - g_snapshot.draw_calls_primitive = g_live_stats.draw_calls_primitive.load(std::memory_order_relaxed); - g_snapshot.total_indices = g_live_stats.total_indices.load(std::memory_order_relaxed); - g_snapshot.total_vertices = g_live_stats.total_vertices.load(std::memory_order_relaxed); - g_snapshot.set_texture_calls = g_live_stats.set_texture_calls.load(std::memory_order_relaxed); - g_snapshot.set_render_target_calls = g_live_stats.set_render_target_calls.load(std::memory_order_relaxed); - g_snapshot.set_depth_stencil_calls = g_live_stats.set_depth_stencil_calls.load(std::memory_order_relaxed); - g_snapshot.set_vertex_decl_calls = g_live_stats.set_vertex_decl_calls.load(std::memory_order_relaxed); - g_snapshot.set_index_buffer_calls = g_live_stats.set_index_buffer_calls.load(std::memory_order_relaxed); - g_snapshot.set_stream_source_calls = g_live_stats.set_stream_source_calls.load(std::memory_order_relaxed); - g_snapshot.set_viewport_calls = g_live_stats.set_viewport_calls.load(std::memory_order_relaxed); - g_snapshot.set_sampler_state_calls = g_live_stats.set_sampler_state_calls.load(std::memory_order_relaxed); - g_snapshot.set_texture_fetch_calls = g_live_stats.set_texture_fetch_calls.load(std::memory_order_relaxed); - g_snapshot.clear_calls = g_live_stats.clear_calls.load(std::memory_order_relaxed); - g_snapshot.resolve_calls = g_live_stats.resolve_calls.load(std::memory_order_relaxed); + ac6::d3d::DrawStatsSnapshot draw_stats = SnapshotDrawStats(); + + std::unique_lock lock(g_snapshot_mutex); + g_snapshot = draw_stats; + lock.unlock(); + + ac6::d3d::FrameCaptureSnapshot frame_capture; + frame_capture.stats = draw_stats; + frame_capture.frame_end_shadow = SnapshotShadowState(0); + + std::unique_lock capture_lock(g_capture_mutex); + frame_capture.frame_index = g_capture_live_frame_index++; + frame_capture.draws.swap(g_live_draws); + frame_capture.clears.swap(g_live_clears); + frame_capture.resolves.swap(g_live_resolves); + g_capture_live_sequence = 0; + g_capture_summary = MakeFrameCaptureSummary(frame_capture); + g_capture_snapshot = std::move(frame_capture); g_live_stats.Reset(); } -const DrawStatsSnapshot& GetDrawStats() { +DrawStatsSnapshot GetDrawStats() { + std::shared_lock lock(g_snapshot_mutex); return g_snapshot; } -const ShadowState& GetShadowState() { +FrameCaptureSnapshot GetFrameCapture() { + std::shared_lock lock(g_capture_mutex); + return g_capture_snapshot; +} + +FrameCaptureSummary GetFrameCaptureSummary() { + std::shared_lock lock(g_capture_mutex); + return g_capture_summary; +} + +ShadowState GetShadowState() { + std::shared_lock lock(g_shadow_mutex); return g_shadow; } diff --git a/src/d3d_hooks.h b/src/d3d_hooks.h index ecd352c8..2c56ad7a 100644 --- a/src/d3d_hooks.h +++ b/src/d3d_hooks.h @@ -2,9 +2,10 @@ * @file d3d_hooks.h * @brief Public interface for the D3D state shadowing layer. * - * Provides per-frame draw statistics and a read-only view of the current - * D3D device shadow state. Call OnFrameBoundary() once per frame (typically - * from the present/swap hook) to snapshot stats and reset counters. + * Provides per-frame draw statistics, a frame capture snapshot for renderer + * analysis, and a read-only view of the current D3D device shadow state. + * Call OnFrameBoundary() once per frame (typically from the present/swap hook) + * to snapshot stats and reset counters. */ #pragma once @@ -14,8 +15,11 @@ namespace ac6::d3d { void OnFrameBoundary(); -const DrawStatsSnapshot& GetDrawStats(); +DrawStatsSnapshot GetDrawStats(); -const ShadowState& GetShadowState(); +FrameCaptureSnapshot GetFrameCapture(); +FrameCaptureSummary GetFrameCaptureSummary(); + +ShadowState GetShadowState(); } // namespace ac6::d3d diff --git a/src/d3d_state.h b/src/d3d_state.h index 6678d852..0966f19c 100644 --- a/src/d3d_state.h +++ b/src/d3d_state.h @@ -3,6 +3,7 @@ #include #include #include +#include namespace ac6::d3d { @@ -11,6 +12,7 @@ inline constexpr uint32_t kMaxTextures = 16; inline constexpr uint32_t kMaxStreams = 16; inline constexpr uint32_t kMaxSamplers = 16; inline constexpr uint32_t kMaxFetchConstants = 32; +inline constexpr uint32_t kMaxClearRectsPerRecord = 8; struct DrawStats { std::atomic draw_calls{0}; @@ -72,6 +74,12 @@ struct DrawStatsSnapshot { uint32_t resolve_calls; }; +enum class DrawCallKind : uint8_t { + kIndexed, + kIndexedShared, + kPrimitive, +}; + struct StreamBinding { uint32_t buffer{0}; // Guest address of D3DVertexBuffer uint32_t offset{0}; // Offset in bytes @@ -107,4 +115,76 @@ struct ShadowState { } viewport; }; +struct DrawCallRecord { + uint32_t sequence{0}; + DrawCallKind kind{DrawCallKind::kIndexed}; + uint32_t primitive_type{0}; + uint32_t start{0}; + uint32_t count{0}; + uint32_t flags{0}; + ShadowState shadow_state{}; +}; + +struct ClearRect { + uint32_t left{0}; + uint32_t top{0}; + uint32_t right{0}; + uint32_t bottom{0}; +}; + +struct ClearRecord { + uint32_t sequence{0}; + uint32_t rect_count{0}; + uint32_t captured_rect_count{0}; + uint32_t flags{0}; + uint32_t color{0}; + uint32_t stencil{0}; + float depth{1.0f}; + std::array rects{}; + ShadowState shadow_state{}; +}; + +struct ResolveRecord { + uint32_t sequence{0}; + ShadowState shadow_state{}; +}; + +struct FrameCaptureSnapshot { + uint64_t frame_index{0}; + DrawStatsSnapshot stats{}; + ShadowState frame_end_shadow{}; + std::vector draws; + std::vector clears; + std::vector resolves; +}; + +struct FrameCaptureSummary { + bool capture_enabled{false}; + bool record_signature_valid{false}; + uint64_t frame_index{0}; + uint64_t record_signature{0}; + uint32_t draw_count{0}; + uint32_t clear_count{0}; + uint32_t resolve_count{0}; + uint32_t indexed_draw_count{0}; + uint32_t indexed_shared_draw_count{0}; + uint32_t primitive_draw_count{0}; + uint32_t unique_rt0_count{0}; + uint32_t rt0_switch_count{0}; + uint32_t frame_end_render_target_count{0}; + uint32_t frame_end_texture_count{0}; + uint32_t frame_end_stream_count{0}; + uint32_t frame_end_sampler_count{0}; + uint32_t frame_end_texture_fetch_count{0}; + uint32_t frame_end_render_target_0{0}; + uint32_t frame_end_depth_stencil{0}; + uint32_t first_draw_render_target_0{0}; + uint32_t last_draw_render_target_0{0}; + uint32_t frame_end_viewport_width{0}; + uint32_t frame_end_viewport_height{0}; + uint32_t last_draw_primitive_type{0}; + uint32_t last_draw_count{0}; + uint32_t last_draw_flags{0}; +}; + } // namespace ac6::d3d diff --git a/src/main.cpp b/src/main.cpp index 9c0a5b6d..37769e98 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,6 +1,16 @@ + +// ac6recomp - ReXGlue Recompiled Project +// +// This file is yours to edit. 'rexglue migrate' will NOT overwrite it. + #include "generated/ac6recomp_config.h" #include "generated/ac6recomp_init.h" +#include + #include "ac6recomp_app.h" +REXCVAR_DEFINE_BOOL(audio_deep_trace, false, "Audio", + "Enable verbose runtime audio tracing"); + REX_DEFINE_APP(ac6recomp, Ac6recompApp::Create) diff --git a/src/render_hooks.cpp b/src/render_hooks.cpp index 756acc88..1cf05557 100644 --- a/src/render_hooks.cpp +++ b/src/render_hooks.cpp @@ -1,70 +1,77 @@ #include "render_hooks.h" #include "d3d_hooks.h" -#include #include +#include #include -#include REXCVAR_DEFINE_BOOL(ac6_unlock_fps, false, "AC6", "Unlock frame rate to 60fps"); +REXCVAR_DEFINE_BOOL(ac6_timing_hooks_enabled, true, "AC6", + "Enable AC6 timing hooks that alter the game's presentation cadence"); using Clock = std::chrono::steady_clock; namespace { -std::atomic g_frame_time_ms{0.0}; -std::atomic g_fps{0.0}; -std::atomic g_frame_count{0}; +std::mutex g_frame_mutex; +double g_frame_time_ms{0.0}; +double g_fps{0.0}; +uint64_t g_frame_count{0}; Clock::time_point g_frame_start{}; +bool AreTimingHooksActive() { + return REXCVAR_GET(ac6_timing_hooks_enabled) && REXCVAR_GET(ac6_unlock_fps); +} + } // namespace -// Fallback flip interval bypass — rarely fires since vblank counter cycles 0→1→0. bool ac6FlipIntervalHook() { - return REXCVAR_GET(ac6_unlock_fps); + return AreTimingHooksActive(); } -// Primary 60fps unlock — forces D3DPRESENT_INTERVAL to 1 (every VBlank). bool ac6PresentIntervalHook(PPCRegister& r10) { - if (REXCVAR_GET(ac6_unlock_fps)) { - r10.u64 = 1; - return true; + if (!AreTimingHooksActive()) { + return false; } - return false; + r10.u64 = 1; + return true; } -// Divisor=30 makes the delta time formula self-correct at any framerate. void ac6DeltaDivisorHook(PPCRegister& r29) { + if (!AreTimingHooksActive()) { + return; + } r29.u64 = 30; } -// Hooked before the device[21516] branch so it fires every frame, not just VdSwap frames. void ac6PresentTimingHook(PPCRegister& /*r31*/) { ac6::d3d::OnFrameBoundary(); - auto now = Clock::now(); - if (g_frame_start.time_since_epoch().count() != 0) { - double ms = - std::chrono::duration(now - g_frame_start) - .count(); - float fps_val = ms > 0.0 ? static_cast(1000.0 / ms) : 0.0f; - - g_frame_time_ms.store(ms, std::memory_order_relaxed); - g_fps.store(static_cast(fps_val), std::memory_order_relaxed); - g_frame_count.fetch_add(1, std::memory_order_relaxed); + const auto now = Clock::now(); + double frame_time_ms = 0.0; + double fps = 0.0; + uint64_t frame_count = 0; + { + std::lock_guard lock(g_frame_mutex); + if (g_frame_start.time_since_epoch().count() != 0) { + g_frame_time_ms = + std::chrono::duration(now - g_frame_start).count(); + g_fps = g_frame_time_ms > 0.0001 ? (1000.0 / g_frame_time_ms) : 0.0; + ++g_frame_count; + } + g_frame_start = now; + frame_time_ms = g_frame_time_ms; + fps = g_fps; + frame_count = g_frame_count; } - g_frame_start = now; } namespace ac6 { FrameStats GetFrameStats() { - return FrameStats{ - g_frame_time_ms.load(std::memory_order_relaxed), - g_fps.load(std::memory_order_relaxed), - g_frame_count.load(std::memory_order_relaxed), - }; + std::lock_guard lock(g_frame_mutex); + return FrameStats{g_frame_time_ms, g_fps, g_frame_count}; } } // namespace ac6 diff --git a/src/render_hooks.h b/src/render_hooks.h index 95ddcca5..8515ba1e 100644 --- a/src/render_hooks.h +++ b/src/render_hooks.h @@ -3,17 +3,23 @@ #include #include +#include REXCVAR_DECLARE(bool, ac6_unlock_fps); namespace ac6 { struct FrameStats { - double frame_time_ms; - double fps; - uint64_t frame_count; + double frame_time_ms{0.0}; + double fps{0.0}; + uint64_t frame_count{0}; }; FrameStats GetFrameStats(); } // namespace ac6 + +bool ac6FlipIntervalHook(); +bool ac6PresentIntervalHook(PPCRegister& r10); +void ac6DeltaDivisorHook(PPCRegister& r29); +void ac6PresentTimingHook(PPCRegister& r31); From 7e810810e2e936eff1991946588382649abfa8c8 Mon Sep 17 00:00:00 2001 From: sal063 <107197232+sal063@users.noreply.github.com> Date: Tue, 14 Apr 2026 12:40:48 +0300 Subject: [PATCH 28/29] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 30076f6a..048d6003 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,9 @@ Users must supply their own legally obtained game files locally. This repository - [CMake](https://cmake.org/) 3.25+ - [Ninja](https://ninja-build.org/) - [Clang](https://releases.llvm.org/) (LLVM/Clang toolchain) -- A legally obtained copy of the game, prepared by the end user outside this repository +- You need the game's original Xbox 360 disc image (ISO). Tools to extract it can be found here. + +After extraction, drop both the game assets and default.xex into the assets/ directory. ## Clone From 6e0ca2f91f895e6fc99ab792b853dfc842fbc8e7 Mon Sep 17 00:00:00 2001 From: sal063 <107197232+sal063@users.noreply.github.com> Date: Tue, 14 Apr 2026 12:41:13 +0300 Subject: [PATCH 29/29] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 048d6003..88effcaf 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Users must supply their own legally obtained game files locally. This repository - [CMake](https://cmake.org/) 3.25+ - [Ninja](https://ninja-build.org/) - [Clang](https://releases.llvm.org/) (LLVM/Clang toolchain) -- You need the game's original Xbox 360 disc image (ISO). Tools to extract it can be found here. +- You need the game's original Xbox 360 disc image (ISO). Tools to extract it can be found [here](https://consolemods.org/wiki/Xbox:ISO_Extraction_%26_Repacking). After extraction, drop both the game assets and default.xex into the assets/ directory.